基于SAM模塊的CPU型IC卡燃氣表的設計
3.9 報警及LCD顯示電路
uPD789167單片機以串行通信的方式驅動(dòng)LCD模塊實(shí)現顯示,但LCD平常不顯示時(shí)斷開(kāi)電源以節省電能。另外,設置有蜂鳴器報警電路,以便在剛發(fā)現故障時(shí)提醒用戶(hù)。
4低功耗設計技術(shù)
本燃氣表的設計是:不旦要有CPU保持實(shí)時(shí)時(shí)鐘走時(shí)、帶看門(mén)狗,而且功耗要很低(平常的工作電流略大于30μA),為此采用了如下一些措施,以保證本機的低功耗運行。
4.1 采用低功耗的器件
本設計中盡可能采用低功耗器件,如3V穩壓器采用了理光的低功耗產(chǎn)品;采用低功耗的可自保持的閥門(mén),只有在開(kāi)關(guān)過(guò)程中才會(huì )耗電。
4.2 采用低耗電的電路設計
(1)電池電壓降至3V后才給CPU及其他外圍電路供電,使芯片工作于低電壓時(shí)消耗電流較少。
(2)SAM模塊和IC卡座平常斷電,只在讀寫(xiě)認證時(shí)才供給電源。
(3)在不影響CPU電平判斷的情況下,使用大一些的電阻(如開(kāi)蓋檢測和電池檢測電路中)。
脈沖采樣電路也只在有脈沖時(shí)瞬間耗電。
4.3 軟件配合實(shí)現低功耗
(1)讓單片機盡量低速工作,軟件只在訪(fǎng)問(wèn)SAM模塊及CPU IC卡時(shí)才讓3.58MHz的晶體振蕩,平時(shí)只用32kHz的晶體就可以完成工作。
(2)合理配置CPU的各個(gè)管腳,輸出腳輸出合適電平,使平常不輸出或吸入電流;輸入腳平常一般不用內部上拉電阻而用外部電阻,因為內部上拉電阻較小,掩模時(shí)典型值為30kΩ,當輸入低電平時(shí)耗電較多;CPU多余的管腳設置為輸出模式,且輸出低電平。
(3)CPU在32kHz晶體下工作時(shí),處于HALT模式,每0.5秒時(shí)間到、或中斷喚醒一次,軟件檢查幾個(gè)中斷標志、計數、走時(shí)、清狗后立即轉入HALT睡眠,從而有效節省電能。
5.1 軟件功能模塊
軟件用NEC78k0S C語(yǔ)言編寫(xiě),采用模塊化、層次化的編程方法。核心部分包括以下幾個(gè)模塊:SAM、CPU卡的通信模塊(T=0,字符方式,串行速率9.6Kbps);SAM、CPU卡的認證和讀寫(xiě)模塊;燃氣計量模塊;電源管理模塊;LCD顯示模塊;報警模塊;工廠(chǎng)測試模塊等(由于篇幅原因,在此不細述)。
5.2 SAM和CPU卡的認證過(guò)程
本燃氣表中,軟件必須接收和處理多種CPU卡:用戶(hù)購氣卡、檢查卡、廠(chǎng)家生產(chǎn)測試卡(如閥門(mén)檢測卡等6種)、修改主密鑰卡等。每種CPU卡的目錄文件結構和認證訪(fǎng)問(wèn)方式不盡相同,以使用用戶(hù)購氣卡購氣后在燃氣表上插卡為例,說(shuō)明軟件認證過(guò)程:
(1)從卡的可讀二進(jìn)制文件中識別出卡的類(lèi)型,即用戶(hù)購氣卡。
(2)燃氣表從用戶(hù)卡中讀取卡序列號和用戶(hù)號,并比較用戶(hù)號是否與SAM中存儲的一致,不一致則拒絕讀卡。
(3)若用戶(hù)號一致,IC卡燃氣表將卡序列號送至SAM模塊。SAM模塊對卡序列號進(jìn)行加密,并生成相應的內部認證密鑰。
(4)燃氣表用內部認證密鑰對用戶(hù)卡做內部認證。
(5)燃氣表用氣表外部認證密鑰對用戶(hù)卡做外部認證。
(6)燃氣表從用戶(hù)卡購氣應用二進(jìn)制文件中讀取購氣數據,判斷其完整性,同時(shí)判斷購氣次數是否與IC燃氣表內一致。若不一致則向IC卡燃氣表返寫(xiě)應用二進(jìn)制文件(返寫(xiě)數據)退出;若判斷一致,則進(jìn)入(7)。
(7)由IC卡燃氣表用氣量外部認證密鑰對SAM模塊進(jìn)行外部認證,若一致則將購氣量及狀態(tài)數據存入SAM模塊,并返寫(xiě)數據退出,完成購氣操作;否則只返寫(xiě)數據退出。
6 結束語(yǔ)
基于NEC單片機和SAM模塊的CPU IC卡預付費型燃氣表,在安全保密性、防攻擊、低功耗、低成本等方面作了有益的探索,經(jīng)過(guò)幾個(gè)月的實(shí)際使用,已證明達到了預期的效果。
評論