基于FM3116的電能表存儲系統(tǒng)的軟硬件設(shè)計
圖2所示為AVR單片機與FM3116的接口電路,AVR單片機提供了實現(xiàn)標準I2C通信的硬件接口TMI,因此可直接將TMI接口的數(shù)據(jù)傳輸引腳PD1/SDA和時鐘輸出引腳PD0/SCL分別與FM3116的SDA和SCL相連,通過對TWI接口寄存器的設(shè)置實現(xiàn)與FM3116的I2C通信。R1和R2為I2C總線的上拉電阻。
4.2 FM3116的軟件設(shè)計
4.2.1 FM3116初始化操作
單片機對FM3116的讀寫程序包括存儲器讀寫程序和實時時鐘/處理器伴侶讀寫程序兩部分。在對FM3116讀寫前,單片機首先需對其初始化。在復(fù)費率電能表系統(tǒng)設(shè)計中,就是對相應(yīng)寄存器初始化,采用C語言編寫的程序代碼如下:
4.2.2 實時時鐘程序
復(fù)費率電能表實現(xiàn)復(fù)費率功能,需要準確的實時時鐘作為時段劃分根據(jù)。FM3116內(nèi)部集成有高精度的實時時鐘模塊,可通過對相應(yīng)寄存器的讀寫,實現(xiàn)對實時時鐘的設(shè)置與讀取操作。設(shè)置實時時鐘的C語言程序代碼(只舉例了設(shè)置時鐘的日期數(shù)據(jù))如下:
讀取實時時鐘的C語言程序代碼如下:
此外,F(xiàn)M31XX存儲器還具有時鐘校準功能,可提高時鐘準確度。
4.2.3 存儲器讀寫程序
讀寫FM3116存儲器一般用于實現(xiàn)電能表電能數(shù)據(jù)及各種事件記錄數(shù)據(jù)的讀取和存儲。由于各種事件數(shù)據(jù)的格式不同,包括單字節(jié)的字符型數(shù)據(jù)、雙字節(jié)的整型數(shù)據(jù)以及4字節(jié)浮點型數(shù)據(jù)。因此,為了方便讀取各種數(shù)據(jù),需要編寫對各種數(shù)據(jù)讀寫函數(shù)。FM3116存儲器讀寫程序與普通的I2C器件的讀寫操作基本相同,其從機地址為1010 xxxxb和1101xxxxb。
5 結(jié)束語
由于鐵電存儲器具有讀寫速度快,功耗低和無限次寫入等特性,同時擁有RAM存儲器和非易失性存儲器的特性,它是EEPROM的理想替代品。將FM3116應(yīng)用到復(fù)費率電能表中既節(jié)省成本,又簡化軟件設(shè)計。
電能表相關(guān)文章:電能表原理
評論