3. CS5460芯片简介
CS5460是CRYSTAL公司最新推出的带有串行接口的单相双向功率/电能计量集成电路芯片。CS5460增加了以下功能:(1)具有片内看门狗定时器(Watch Dog Timer)与内部电源监视器;(2)具有瞬时电流、瞬时电压、瞬时功率、电流有效值、电压有效值、功率有效值测量及电能计量功能;(3)提供了外部复位引脚;(4)双向串行接口与内部寄存器阵列可以方便地与微处理器相连接;(5)外部时钟最高频率可达20MHz;(6)具有功率方向输出指示。这些增加的功能更加便于与微处理器(MPU)接口,并能方便地实现电压、电流、功率的测量和用电量累积等功能。
3.1 CS5460的基本内部结构
CS5460内部集成了两个△-∑A/D转换器、高、低通数字滤波器、能量计算单元、串行接口、数字-频率转换器、寄存器阵列和看门狗定时器等模拟、数字信号处理单元,其内部结构框图如图2所示。

图2 CS5460的基本内部结构
3.2 CS5460的引脚排列和功能

图3 CS5460引脚图
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()
{ char cdata , didata;
Scanf(“%s,%s”,&cdata,&didata);
IC?_writeCS5460(cdata);
IC_ReadCS5460(didata);}
Void IC?_writeCS5460(unsigned char CData)
{ unsigned char i;
CS5460_SCLK_0; //时钟置零
CS5460_CS_0; //片选置零
For(i=0;i<8;i++) //开始一个字节的CData
{ CS5460_SCLK_0; //时钟置零
Delay_us(5); //相当于5个NOP
CS5460_SCLK_1; //时钟置1
Delay_us(5); //相当于5个NOP
If ( CData&0x80)
{ CS5460_SDI_1;}
else { CS5460_SDI_0;} //判断要写入的内容最高位是否为1,是1写1,
CData+=CData;} }不是写0,再左移数据,循环写8次
Unsigned int IC_ReadCS5460(unsingned char DIDATA)
{ unsigned char i , j;
Unsigned int DATA; //要返回的内容
DATA=0; //要返回的内容先清零
IC_WriteCS5460(DIDATA); // 写入程序状态字
CS5460_SCLK_0; //时钟置零
For(j=0;j<2;j++)
{ DATA+=DATA; // 2个字节的循环,根据需要可以改成3个字节
For(i=0;i<7;i++) //先循环要返回的内容(左移一位)
{ CS5460_SDI_1;
CS5460_SCLK_0; //以下开始读出一个字节的8b循环
Delay_us(5); //SDI口置1
If(PINC&(1<<PC2)) //时钟置零
{ DATA=DATA+1; //延时5us
DATA+=DATA;}} //要读的内容最高位为1,则写1,否则写0,再左移
CS5460_SDI_0; //SDI口置1
CS5460_SCLK_0; //时钟置零
Delay_us(5); //延时5us
CS5460_SCLK_1; //时钟置1
Delay_us(5); //延时5us
If(PINC&(1<<PC2))
{ DATA=DATA+1;} //读一个字节最后一位时单独处理,是1补1,不是则跳到CS5460_SCLK_0; // 下一步,回到上面左移1位,相当于补0
CS5460_SDI_1; //SDI口置1
Delay_us(2); //延时2us
CS5460_CS_1; } //片选置0
Return(DATA);} //返回要读的内容
6. 结束语
以上介绍的是以单片机MSP430为核心基于CS5460芯片的应用。该系统具有低功耗,高集成度,高性能和高可靠性等特点。本系统实现了MSP430单片机和CS5460芯片的硬件设计在功率测量中的应用并且给出了单片机MSP430和CS5460读写的C程序。
7.参考文献
1.CRYSTAL公司产品资料.1990.10.
2.沈金官.《电网监控技术》中国电力出版社。1997.6.
3.王福瑞.<<单片微机测控系统设计大全》.北京航空航天大学出版社.1998.4
4.何立民.《单片机应用技术选编》1-7.北京航空航天大学出版社。
5.何立民.MCS 51 单片机应用系统设计[M] . 北京:北京航空航天大学出版社,1993.