当前位置:首页 > 商业/管理/HR > 咨询培训 > 单片机MSP430为核心基于CS5460芯片的应用
1.引言目前比较流行的电子电度表芯片如AD7750和AD7755(见《国外电子元器件》1999年第3期文章)存在着测量范围小,与MPU连接复杂,功能简单等缺点。CS5460是CRYSTAL公司最新推出的带有串行接口的单相双向功率/电能计量集成电路芯片,该芯片比AD7750和AD7755相比,具有结构简单,功能齐全,性能优良的特点,这些特点使其更便于与微处理器MPU接口并能方便地实现电压电流!功率的测量和用电量累积等功能。用具有超低功耗,高集成度,高可靠性的MSP430单片机与其相连接可简化电路设计,提高效能并广泛应用于功率测量和电子电表的数据采集以及电能计量领域。2.MSP430单片机简介MSP430单片机是TI公司生产的超低功耗单片机。该系统将大量的外围模块整合到片内,也特别适合于设计片上系统;它是一个16位的精简指令构架,有大量的工作寄存器和数据存储器。它有如下特点:具有超低功耗,强大的处理能力,高性能模拟技术及丰富的片上外围模块,系统工作稳定,方便高效的开发环境。MSP40工作在1.8-3.6V电压下,有正常工作模式(AM)和4种低功耗工作模式,在电源电压为3V时,各种模式的工作电流分别不同。单片机可以方便的在各种工作模式之间切换。MSP430单片机引脚图如下。图1MSP430X11X系列引脚图3.CS5460芯片简介CS5460是CRYSTAL公司最新推出的带有串行接口的单相双向功率/电能计量集成电路芯片。CS5460增加了以下功能:(1)具有片内看门狗定时器(WatchDogTimer)与内部电源监视器;(2)具有瞬时电流、瞬时电压、瞬时功率、电流有效值、电压有效值、功率有效值测量及电能计量功能;(3)提供了外部复位引脚;(4)双向串行接口与内部寄存器阵列可以方便地与微处理器相连接;(5)外部时钟最高频率可达20MHz;(6)具有功率方向输出指示。这些增加的功能更加便于与微处理器(MPU)接口,并能方便地实现电压、电流、功率的测量和用电量累积等功能。3.1CS5460的基本内部结构CS5460内部集成了两个△-∑A/D转换器、高、低通数字滤波器、能量计算单元、串行接口、数字-频率转换器、寄存器阵列和看门狗定时器等模拟、数字信号处理单元,其内部结构框图如图2所示。图2CS5460的基本内部结构3.2CS5460的引脚排列和功能图3CS5460引脚图1脚XOUT:晶体振荡器输出;2脚CPUCLK:CPU时钟输出;3脚VD+:数字电路电源正极;4脚DGND:数字地;5脚SCLK:串行时钟输入;6脚SDO:串行数据输出;7脚CS:片选;8脚NC:空脚;9脚VIN+:差分电压正输入端;10脚VIN-:差分电压负输入端;11脚VREFOUT:参考电压输出;12脚VREFIN:参考电压输入;13脚VA-:模拟地;14脚VA+:模拟电源正极;15脚IIN-:差分电流负输入端;16脚IIN+:差分电流正输入端;17脚PFMON:电源掉电监视输出;18脚NC:空脚;19脚REST:复位输入;20脚INT:中断输出;21脚EOUT:电能脉冲输出;22脚EDIR:功率方向指示输出;23脚SDI:串行数据输入;24脚XIN:晶体振荡器输入。4硬件设计单片机MSP430通过和单相双向功率/电能计量芯片CS5460集成电路芯片组成的硬件的电路。通过低压差调节器LP2951ACM3.0向MSP430单片机VCC引脚提供3.0V的工作电压。引脚VSS接地。引脚REST,CS,SD1,SDO,SCLK,EDIR接P1.0—P1.5口,接受来自单片机的信号,INT接RST/NMI引脚使单片机MSP430接受来自芯片CS460的中断。EOUT接XIN的晶体振荡器连接,接受来自芯片CS5460的XIN引脚晶振的输入。VREFIN,DGND,VREFOUT,VA-接电容C1为0.1uF,再接地。VIN-,VIN+,HN+,HN-接两个变压器为CS5460芯片提供+5V的电压,VD+,VA+接R3电阻接电容再接地。C1,R1,D1,D2和C2,R2,D3,C3组成的电路向CS5460芯片的模拟数字电源正极输入+5V电压。PFMON接R4再接R5与地接监视模拟电源输入是否低于阈值。图4硬件原理图5软件设计CS5460的串行接口部分集成了一个带有发送/接收缓冲器的状态机,状态机在SCLK上升沿解释8位命令字。根据对命令的解码,状态机将执行相应的操作,或者为把寻址的内部寄存器的数据传送到发送缓冲区,写操作在数据传输前要等24个SCLK周期。通过寄存器读/写命令,数据可被写入或从CS5460中读出。数据的读、写通过向串口SDI引脚写入相应的8位命令字(高位在前)来启动。一些命令字在执行时受周期计数寄存器和配置寄存器内容的影响,需要先对周期计数器和配置寄存器内容进行正确设置。寄存器写指令后必须跟24位数据,先写命令字启动写操作,然后随着24个连续的串行时钟脉冲,CS5460将从串行输入引脚SDI接收串行数据,一旦收到数据,状态机便将数据写入配置寄存器并返回到命令模式。通过SDI引脚写入命今后,可从SDO引脚读出数据。图五读写时序下面依照时序分别给出读写的基本C程序。Main(){charcdata,didata;Scanf(“%s,%s”,&cdata,&didata);IC?_writeCS5460(cdata);IC_ReadCS5460(didata);}VoidIC?_writeCS5460(unsignedcharCData){unsignedchari;CS5460_SCLK_0;//时钟置零CS5460_CS_0;//片选置零For(i=0;i8;i++)//开始一个字节的CData{CS5460_SCLK_0;//时钟置零Delay_us(5);//相当于5个NOPCS5460_SCLK_1;//时钟置1Delay_us(5);//相当于5个NOPIf(CData&0x80){CS5460_SDI_1;}else{CS5460_SDI_0;}//判断要写入的内容最高位是否为1,是1写1,CData+=CData;}}不是写0,再左移数据,循环写8次UnsignedintIC_ReadCS5460(unsingnedcharDIDATA){unsignedchari,j;UnsignedintDATA;//要返回的内容DATA=0;//要返回的内容先清零IC_WriteCS5460(DIDATA);//写入程序状态字CS5460_SCLK_0;//时钟置零For(j=0;j2;j++){DATA+=DATA;//2个字节的循环,根据需要可以改成3个字节For(i=0;i7;i++)//先循环要返回的内容(左移一位){CS5460_SDI_1;CS5460_SCLK_0;//以下开始读出一个字节的8b循环Delay_us(5);//SDI口置1If(PINC&(1PC2))//时钟置零{DATA=DATA+1;//延时5usDATA+=DATA;}}//要读的内容最高位为1,则写1,否则写0,再左移CS5460_SDI_0;//SDI口置1CS5460_SCLK_0;//时钟置零Delay_us(5);//延时5usCS5460_SCLK_1;//时钟置1Delay_us(5);//延时5usIf(PINC&(1PC2)){DATA=DATA+1;}//读一个字节最后一位时单独处理,是1补1,不是则跳到CS5460_SCLK_0;//下一步,回到上面左移1位,相当于补0CS5460_SDI_1;//SDI口置1Delay_us(2);//延时2usCS5460_CS_1;}//片选置0Return(DATA);}//返回要读的内容
本文标题:单片机MSP430为核心基于CS5460芯片的应用
链接地址:https://www.777doc.com/doc-2606214 .html