由SA51和MSP430F1121组成的驱动控制系统
MSP430F1121是美国TI公司生产的单片机,它采用高效16位RISC内核,具有27条指令和125ns的指令周期,使用1.8~3.6V(最高到4.1V)低电压供电,程序代码加密后无法解密。该单片机只需外接一个电阻和一个电容即可实现高精度斜率A/D转换,同时可串行在线编程。该器件具强大的中断功能和高达10万次的擦写次数,其定时器A在比较模式下可方便地实现D/A转换或生成脉宽调制输出信号。MSP430F1121内含4kB+256BFlash以及256BRAM,采用20脚SOWB或TSSOP封装,P1、P2端口的14个I/O引脚均可独立编程为输入、输出和中断状态,也可以整体作为端口使用。
2.2MSP430F1121的时钟系统
MSP430F1
121有ACLK(辅助时钟)、MCLK(主系统时钟)和SMCLK(子系统时钟)三种时钟。这三种时钟可由低频振荡器LFXT1CL经1、2、4、8分频后得到低频时钟。MCLK和SMCLK也可由DCOCLK经1、2、4、8分频后得到高频时钟。DCOCLK则可将DCO振荡器产生的频率经软件FLL后得到。
图2电机转速控制原理图
DCOCLK的软件FLL方法为:DCO基础频率由内部或外部电阻向DC发生器注入的电流决定(可由DCOR控制位来选择片内或片外电阻),当DCOCLK为5MHz时选片内电阻,DCOCLK大于5MHz时,选择片外电阻。它的基础频率可由电阻控制位Rsel2、Rsel1、Rsel0分频8为个标称频率范围,然后由控制位DCO2、DCO1、DCO0再进行分频调节,调整位MOD4~MOD0可用于控制DCO和DCO+1两种频率之间的切换。
下面是一个设置时钟的程序,该程序以将ACLK设置为4096Hz(LFXT1CLK/8=32768Hz/8=4096Hz)、DCOCLK设置为8MHz、MCLK和SMCLK选择DCOCLK为例进行编写,其中delta=DCOCLK/ACLK=8M/4096=1953。
#include"msp430x11x1.h"
#include"stdio.h"
#definedelta1953
voidsetdco(void);
main(void)
{
WDTCTL=WDTPW+WDTHOLD;//关看门狗
BCSCTL1|=DIVA1+DIVA0;//ACLK=LFXT1CLK/8
BCSCTL2|=DCOR;//用外部电阻
Setdco();
}
voidsetdco(void)
{
intfir1,fir2,lable1=1;
fir2=0;
TACTL=TASSEL1+TACLR;
CCTL2=CCIS0+CM0+CAP;
TACTL|=MC1;
For(;lable1==1;)
{
lable2:
if((CCTL2&am 《由SA51和MSP430F1121组成的驱动控制系统(第2页)》