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 單片機引腳圖如下。
圖1 MSP430X11X系列引腳圖
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.