在單片機(jī)應(yīng)用和智能儀器中,存儲(chǔ)器已成為不可或缺的一部分,,包括系統(tǒng)工作時(shí)存儲(chǔ)臨時(shí)性數(shù)據(jù)的RAM,,以及永久性存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)器。RAM簡(jiǎn)單易用,,存儲(chǔ)速度快,,但掉電數(shù)據(jù)易丟失;而非易失性存儲(chǔ)器盡管能夠長(zhǎng)期保存數(shù)據(jù),,但存儲(chǔ)速度慢,,寫入功耗高,而且讀寫次數(shù)受限,。采用鐵電存儲(chǔ)器(FRAM)可解決上述問題,。這種存儲(chǔ)器的核心是鐵電晶體材料具有RAM快速讀寫的優(yōu)點(diǎn),同時(shí)也具有非易失性存儲(chǔ)器永久存儲(chǔ)數(shù)據(jù)的特點(diǎn)?;谏鲜鎏攸c(diǎn),,介紹一種FRAM FM3116在復(fù)費(fèi)率電能表中的應(yīng)用設(shè)計(jì)。
2 FM3116簡(jiǎn)介
FM3116是Ramtron公司新一代鐵電存儲(chǔ)器,,該存儲(chǔ)器主要包括16 KB的非易失性存儲(chǔ)器,、實(shí)時(shí)時(shí)鐘、低電壓復(fù)位,、看門狗計(jì)數(shù)器,、非易失性的事件計(jì)數(shù)器等。FM3116的引腳配置如圖1所示,,各引腳功能描述如表1所列。
FM3116采用I2C接口,。FM3116內(nèi)部集成存儲(chǔ)器及實(shí)時(shí)時(shí)鐘/處理器伴侶,。可獨(dú)立訪問每個(gè)元件,,其訪問地址分別為1010B和1101B,。主機(jī)通過對(duì)這兩個(gè)元件的讀寫操作實(shí)現(xiàn)對(duì)FM3116讀取、存儲(chǔ)數(shù)據(jù)和對(duì)實(shí)時(shí)時(shí)鐘/處理器伴侶的控制,。
3 電能表的數(shù)據(jù)存儲(chǔ)系統(tǒng)
作為計(jì)量電能的儀表,,電能表的計(jì)量精度極為重要,它不但與電能計(jì)量器件的精度有關(guān),,而且還與電能表的數(shù)據(jù)存儲(chǔ)系統(tǒng)有關(guān),。如果檢測(cè)到的電能數(shù)據(jù)無法寫入存儲(chǔ)器或?qū)懭氪鎯?chǔ)器時(shí)出錯(cuò),電能表的精度將大大降低,。
傳統(tǒng)電能表數(shù)據(jù)存儲(chǔ)系統(tǒng)采用EEPROM存儲(chǔ)器+掉電檢測(cè)電路,。由于EEPROM存儲(chǔ)器的存儲(chǔ)次數(shù)約一百萬次,因此不是一個(gè)電能脈沖就存儲(chǔ)一次,,而是將脈沖暫存到單片機(jī)的RAM中,,等脈沖記錄到一定值或一定時(shí)間,再將脈沖數(shù)據(jù)轉(zhuǎn)存到EEPROM中,。因此需要掉電檢測(cè)電路實(shí)時(shí)檢測(cè)當(dāng)前是否處于昝電狀態(tài),,當(dāng)檢測(cè)到掉電時(shí)就將RAM中的脈沖數(shù)據(jù)存儲(chǔ)到EEPROM中。由于寫EEPROM較慢,,大概有10 ms的寫周期,,這就要求在掉電后有足夠的電壓,以保證脈沖數(shù)據(jù)寫入EEPROM中,,通常是利用大容量電容來確保掉電后的電壓,。但是,基于寫EEPROM的特點(diǎn),寫入EEPROM數(shù)據(jù)易于出錯(cuò),。為了提高寫入數(shù)據(jù)的準(zhǔn)確性,,需要在軟件設(shè)計(jì)上采取一些措施。因此,,傳統(tǒng)電能表數(shù)據(jù)存儲(chǔ)系統(tǒng)無論是在硬件上還是在軟件上都比較復(fù)雜,。
該系統(tǒng)設(shè)計(jì)的復(fù)費(fèi)率電能表采用ADE7755將電網(wǎng)中采集到的功率信息轉(zhuǎn)換成與之成正比的脈沖信號(hào),送給單片機(jī),。AVR單片機(jī)作為中心處理單元對(duì)脈沖進(jìn)行計(jì)數(shù),,從而實(shí)現(xiàn)電能計(jì)量。由于是復(fù)費(fèi)率電能表,,除了實(shí)時(shí)計(jì)量電能外,,還具有復(fù)費(fèi)率、事件記錄等多種功能,,需存儲(chǔ)大量數(shù)據(jù),,并且擦寫次數(shù)多。因此,,復(fù)費(fèi)率電能表系統(tǒng)需要設(shè)計(jì)一種壽命長(zhǎng),,讀寫數(shù)據(jù)安全的數(shù)據(jù)存儲(chǔ)系統(tǒng)。目前,,F(xiàn)M3116是非常適合電能表設(shè)計(jì)要求的存儲(chǔ)器,。它的存儲(chǔ)時(shí)間短,能夠在極短的時(shí)間內(nèi)保存大量數(shù)據(jù),,實(shí)現(xiàn)了電能表在突然掉電時(shí)數(shù)據(jù)及時(shí),、安全存儲(chǔ)。
4 FM3116在復(fù)費(fèi)率電能表中的應(yīng)用
4.1 FM3116的硬件設(shè)計(jì)
圖2所示為AVR單片機(jī)與FM3116的接口電路,,AVR單片機(jī)提供了實(shí)現(xiàn)標(biāo)準(zhǔn)I2C通信的硬件接口TMI,,因此可直接將TMI接口的數(shù)據(jù)傳輸引腳PD1/SDA和時(shí)鐘輸出引腳PD0/SCL分別與FM3116的SDA和SCL相連,通過對(duì)TWI接口寄存器的設(shè)置實(shí)現(xiàn)與FM3116的I2C通信,。R1和R2為I2C總線的上拉電阻,。
4.2 FM3116的軟件設(shè)計(jì)
4.2.1 FM3116初始化操作
單片機(jī)對(duì)FM3116的讀寫程序包括存儲(chǔ)器讀寫程序和實(shí)時(shí)時(shí)鐘/處理器伴侶讀寫程序兩部分。在對(duì)FM3116讀寫前,,單片機(jī)首先需對(duì)其初始化,。在復(fù)費(fèi)率電能表系統(tǒng)設(shè)計(jì)中,就是對(duì)相應(yīng)寄存器初始化,,采用C語言編寫的程序代碼如下:
4.2.2 實(shí)時(shí)時(shí)鐘程序
復(fù)費(fèi)率電能表實(shí)現(xiàn)復(fù)費(fèi)率功能,,需要準(zhǔn)確的實(shí)時(shí)時(shí)鐘作為時(shí)段劃分根據(jù)。FM3116內(nèi)部集成有高精度的實(shí)時(shí)時(shí)鐘模塊,,可通過對(duì)相應(yīng)寄存器的讀寫,,實(shí)現(xiàn)對(duì)實(shí)時(shí)時(shí)鐘的設(shè)置與讀取操作。設(shè)置實(shí)時(shí)時(shí)鐘的C語言程序代碼(只舉例了設(shè)置時(shí)鐘的日期數(shù)據(jù))如下:
讀取實(shí)時(shí)時(shí)鐘的C語言程序代碼如下:
此外,F(xiàn)M31XX存儲(chǔ)器還具有時(shí)鐘校準(zhǔn)功能,,可提高時(shí)鐘準(zhǔn)確度,。
4.2.3 存儲(chǔ)器讀寫程序
讀寫FM3116存儲(chǔ)器一般用于實(shí)現(xiàn)電能表電能數(shù)據(jù)及各種事件記錄數(shù)據(jù)的讀取和存儲(chǔ)。由于各種事件數(shù)據(jù)的格式不同,,包括單字節(jié)的字符型數(shù)據(jù),、雙字節(jié)的整型數(shù)據(jù)以及4字節(jié)浮點(diǎn)型數(shù)據(jù)。因此,,為了方便讀取各種數(shù)據(jù),,需要編寫對(duì)各種數(shù)據(jù)讀寫函數(shù)。FM3116存儲(chǔ)器讀寫程序與普通的I2C器件的讀寫操作基本相同,,其從機(jī)地址為1010 xxxxb和1101xxxxb,。
5 結(jié)束語
由于鐵電存儲(chǔ)器具有讀寫速度快,功耗低和無限次寫入等特性,,同時(shí)擁有RAM存儲(chǔ)器和非在單片機(jī)應(yīng)用和智能儀器中,,存儲(chǔ)器已成為不可或缺的一部分,包括系統(tǒng)工作時(shí)存儲(chǔ)臨時(shí)性數(shù)據(jù)的RAM,,以及永久性存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)器。RAM簡(jiǎn)單易用,,存儲(chǔ)速度快,,但掉電數(shù)據(jù)易丟失;而非易失性存儲(chǔ)器盡管能夠長(zhǎng)期保存數(shù)據(jù),,但存儲(chǔ)速度慢,,寫入功耗高,而且讀寫次數(shù)受限,。采用鐵電存儲(chǔ)器(FRAM)可解決上述問題,。這種存儲(chǔ)器的核心是鐵電晶體材料具有RAM快速讀寫的優(yōu)點(diǎn),同時(shí)也具有非易失性存儲(chǔ)器永久存儲(chǔ)數(shù)據(jù)的特點(diǎn),?;谏鲜鎏攸c(diǎn),介紹一種FRAM FM3116在復(fù)費(fèi)率電能表中的應(yīng)用設(shè)計(jì),。
2 FM3116簡(jiǎn)介
FM3116是Ramtron公司新一代鐵電存儲(chǔ)器,,該存儲(chǔ)器主要包括16 KB的非易失性存儲(chǔ)器、實(shí)時(shí)時(shí)鐘,、低電壓復(fù)位,、看門狗計(jì)數(shù)器、非易失性的事件計(jì)數(shù)器等,。FM3116的引腳配置如圖1所示,,各引腳功能描述如表1所列。
FM3116采用I2C接口。FM3116內(nèi)部集成存儲(chǔ)器及實(shí)時(shí)時(shí)鐘/處理器伴侶,??瑟?dú)立訪問每個(gè)元件,其訪問地址分別為1010B和1101B,。主機(jī)通過對(duì)這兩個(gè)元件的讀寫操作實(shí)現(xiàn)對(duì)FM3116讀取,、存儲(chǔ)數(shù)據(jù)和對(duì)實(shí)時(shí)時(shí)鐘/處理器伴侶的控制。
3 電能表的數(shù)據(jù)存儲(chǔ)系統(tǒng)
作為計(jì)量電能的儀表,,電能表的計(jì)量精度極為重要,,它不但與電能計(jì)量器件的精度有關(guān),而且還與電能表的數(shù)據(jù)存儲(chǔ)系統(tǒng)有關(guān),。如果檢測(cè)到的電能數(shù)據(jù)無法寫入存儲(chǔ)器或?qū)懭氪鎯?chǔ)器時(shí)出錯(cuò),,電能表的精度將大大降低。
傳統(tǒng)電能表數(shù)據(jù)存儲(chǔ)系統(tǒng)采用EEPROM存儲(chǔ)器+掉電檢測(cè)電路,。由于EEPROM存儲(chǔ)器的存儲(chǔ)次數(shù)約一百萬次,,因此不是一個(gè)電能脈沖就存儲(chǔ)一次,而是將脈沖暫存到單片機(jī)的RAM中,,等脈沖記錄到一定值或一定時(shí)間,,再將脈沖數(shù)據(jù)轉(zhuǎn)存到EEPROM中。因此需要掉電檢測(cè)電路實(shí)時(shí)檢測(cè)當(dāng)前是否處于昝電狀態(tài),,當(dāng)檢測(cè)到掉電時(shí)就將RAM中的脈沖數(shù)據(jù)存儲(chǔ)到EEPROM中,。由于寫EEPROM較慢,大概有10 ms的寫周期,,這就要求在掉電后有足夠的電壓,,以保證脈沖數(shù)據(jù)寫入EEPROM中,通常是利用大容量電容來確保掉電后的電壓,。但是,,基于寫EEPROM的特點(diǎn),寫入EEPROM數(shù)據(jù)易于出錯(cuò),。為了提高寫入數(shù)據(jù)的準(zhǔn)確性,,需要在軟件設(shè)計(jì)上采取一些措施。因此,,傳統(tǒng)電能表數(shù)據(jù)存儲(chǔ)系統(tǒng)無論是在硬件上還是在軟件上都比較復(fù)雜,。
該系統(tǒng)設(shè)計(jì)的復(fù)費(fèi)率電能表采用ADE7755將電網(wǎng)中采集到的功率信息轉(zhuǎn)換成與之成正比的脈沖信號(hào),送給單片機(jī),。AVR單片機(jī)作為中心處理單元對(duì)脈沖進(jìn)行計(jì)數(shù),,從而實(shí)現(xiàn)電能計(jì)量。由于是復(fù)費(fèi)率電能表,,除了實(shí)時(shí)計(jì)量電能外,,還具有復(fù)費(fèi)率,、事件記錄等多種功能,需存儲(chǔ)大量數(shù)據(jù),,并且擦寫次數(shù)多,。因此,復(fù)費(fèi)率電能表系統(tǒng)需要設(shè)計(jì)一種壽命長(zhǎng),,讀寫數(shù)據(jù)安全的數(shù)據(jù)存儲(chǔ)系統(tǒng),。目前,F(xiàn)M3116是非常適合電能表設(shè)計(jì)要求的存儲(chǔ)器,。它的存儲(chǔ)時(shí)間短,,能夠在極短的時(shí)間內(nèi)保存大量數(shù)據(jù),實(shí)現(xiàn)了電能表在突然掉電時(shí)數(shù)據(jù)及時(shí),、安全存儲(chǔ),。
4 FM3116在復(fù)費(fèi)率電能表中的應(yīng)用
4.1 FM3116的硬件設(shè)計(jì)
圖2所示為AVR單片機(jī)與FM3116的接口電路,AVR單片機(jī)提供了實(shí)現(xiàn)標(biāo)準(zhǔn)I2C通信的硬件接口TMI,,因此可直接將TMI接口的數(shù)據(jù)傳輸引腳PD1/SDA和時(shí)鐘輸出引腳PD0/SCL分別與FM3116的SDA和SCL相連,,通過對(duì)TWI接口寄存器的設(shè)置實(shí)現(xiàn)與FM3116的I2C通信。R1和R2為I2C總線的上拉電阻,。
4.2 FM3116的軟件設(shè)計(jì)
4.2.1 FM3116初始化操作
單片機(jī)對(duì)FM3116的讀寫程序包括存儲(chǔ)器讀寫程序和實(shí)時(shí)時(shí)鐘/處理器伴侶讀寫程序兩部分,。在對(duì)FM3116讀寫前,單片機(jī)首先需對(duì)其初始化,。在復(fù)費(fèi)率電能表系統(tǒng)設(shè)計(jì)中,,就是對(duì)相應(yīng)寄存器初始化,采用C語言編寫的程序代碼如下:
4.2.2 實(shí)時(shí)時(shí)鐘程序
復(fù)費(fèi)率電能表實(shí)現(xiàn)復(fù)費(fèi)率功能,,需要準(zhǔn)確的實(shí)時(shí)時(shí)鐘作為時(shí)段劃分根據(jù)。FM3116內(nèi)部集成有高精度的實(shí)時(shí)時(shí)鐘模塊,,可通過對(duì)相應(yīng)寄存器的讀寫,,實(shí)現(xiàn)對(duì)實(shí)時(shí)時(shí)鐘的設(shè)置與讀取操作。設(shè)置實(shí)時(shí)時(shí)鐘的C語言程序代碼(只舉例了設(shè)置時(shí)鐘的日期數(shù)據(jù))如下:
讀取實(shí)時(shí)時(shí)鐘的C語言程序代碼如下:
此外,,F(xiàn)M31XX存儲(chǔ)器還具有時(shí)鐘校準(zhǔn)功能,,可提高時(shí)鐘準(zhǔn)確度。
4.2.3 存儲(chǔ)器讀寫程序
讀寫FM3116存儲(chǔ)器一般用于實(shí)現(xiàn)電能表電能數(shù)據(jù)及各種事件記錄數(shù)據(jù)的讀取和存儲(chǔ),。由于各種事件數(shù)據(jù)的格式不同,,包括單字節(jié)的字符型數(shù)據(jù)、雙字節(jié)的整型數(shù)據(jù)以及4字節(jié)浮點(diǎn)型數(shù)據(jù),。因此,,為了方便讀取各種數(shù)據(jù),需要編寫對(duì)各種數(shù)據(jù)讀寫函數(shù),。FM3116存儲(chǔ)器讀寫程序與普通的I2C器件的讀寫操作基本相同,,其從機(jī)地址為1010 xxxxb和1101xxxxb,。
5 結(jié)束語
由于鐵電存儲(chǔ)器具有讀寫速度快,功耗低和無限次寫入等特性,,同時(shí)擁有RAM存儲(chǔ)器和非失性存儲(chǔ)器的特性,,它是EEPROM的理想替代品。將FM3116應(yīng)用到復(fù)費(fèi)率電能表中既節(jié)省成本,,又簡(jiǎn)化軟件設(shè)計(jì),。