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