μPSD32xx單片機(jī)在稅控器中的應(yīng)用
關(guān)鍵詞:μPSD3234A;稅控器;模塊化設(shè)計(jì);API函數(shù)
1 引言
稅控設(shè)備是國家稅務(wù)部門實(shí)現(xiàn)稅收管理信息化的必然手段之一,稅控器作為稅控設(shè)備之一,是在計(jì)算機(jī)等電子設(shè)備的配合下實(shí)現(xiàn)稅控功能的電子裝置,它可保證經(jīng)營數(shù)據(jù)的正確生成、可靠存儲(chǔ)和安全傳輸,能滿足稅務(wù)機(jī)關(guān)的管理和數(shù)據(jù)核查等要求。稅控器通常與一臺普通收款機(jī)(主機(jī))相連,共同完成經(jīng)營和稅控的功能,連接關(guān)系見圖1。
稅控器是集軟硬件于一體的嵌入式系統(tǒng),為了更有效地使用單片機(jī)并提高開發(fā)的通用性,可采用平臺思想和模塊化設(shè)計(jì),劃分層次結(jié)構(gòu),以盡可能實(shí)現(xiàn)硬件的靈活性和軟件的可移植性。
2 μPSD32xx單片機(jī)簡介
2.1 主要特性
μPSD32xx系列是ST(意法半導(dǎo)體)公司推出的新型單片機(jī),它采用增強(qiáng)型MCS-51內(nèi)核,是MCU+PSD的SoC單片機(jī),該器件具有如下特點(diǎn):
●2片Flash存儲(chǔ)器,用于存儲(chǔ)程序或數(shù)據(jù),易于實(shí)現(xiàn)在應(yīng)用編程(IAP)功能。
●可選擇備電保護(hù)的大容量SRAM。
●2種可編程邏輯電路,分別為地址譯碼DPLD和組合邏輯CPLD。
●6組通用I/O提供多達(dá)37或46個(gè)I/O引腳。●主從方式的I2C。
●低速模式的USB 1.1。
●2路串行通道UART。
●在系統(tǒng)編程的JTAG口。
2.2 開發(fā)環(huán)境
系統(tǒng)軟件可在KEIL公司的KEIL 51集成開發(fā)環(huán)境μVision2中進(jìn)行設(shè)計(jì)、編譯和仿真,并運(yùn)用ST公司的PSDsoft Express軟件進(jìn)行編程下載和內(nèi)部配置。該軟件可以對μPSD32xx系列單片機(jī)的片內(nèi)Flash、SRAM和PLD進(jìn)行配置,并將編譯生成的程序代碼文件(.HEX)和配置文件融合生成.OBJ文件下載到單片機(jī)中。下載時(shí)還需使用FlashLINK編程電纜連接PC機(jī)的標(biāo)準(zhǔn)并口和單片機(jī)的JTAG口。
3 硬件設(shè)計(jì)方案
3.1 硬件需求
稅控器應(yīng)具備的基本功能如下:具有實(shí)時(shí)時(shí)鐘和記錄稅控?cái)?shù)據(jù)的大容量存儲(chǔ)器;帶有符合ISO7816標(biāo)準(zhǔn)的IC卡讀寫器,支持稅控卡、用戶卡和稅務(wù)管理卡;可通過USB或串口與主機(jī)通訊;具有在掉電后可保存存儲(chǔ)器數(shù)據(jù)和時(shí)鐘運(yùn)行的備份電池;允許異常斷電而不破壞任何有效數(shù)據(jù)。
3.2 硬件系統(tǒng)組成
稅控器內(nèi)部的硬件系統(tǒng)結(jié)構(gòu)見圖2。
(1) 主控模塊MCU
主控模塊MCU采用ST公司的μPSD3234A單片機(jī),它內(nèi)部具有256kB的主Flash、32kB的次Flash和8kB SRAM,工作電壓為5V,選用24MHz晶振。其中SRAM由片外的備用電池供電,可存放一些長期保存的數(shù)據(jù),維持電流僅需1μA。
主控模塊通過USB或UART與主機(jī)相連,通過I2C與RTC相連,通過I/O與ICC及MEM相連。
(2) 時(shí)鐘模塊RTC
時(shí)鐘模塊RTC采用ST公司的M41T0M6,該芯片具有實(shí)時(shí)時(shí)鐘/日歷功能,可計(jì)時(shí)毫秒、秒、分鐘、小時(shí)、星期、日、月、年、世紀(jì)。在系統(tǒng)掉電以后可由片外的備用電池供電,以保持片內(nèi)時(shí)鐘的繼續(xù)運(yùn)行。采用32.768kHz晶振,工作電壓5V,工作電流130~200μA,備用電池電壓3V,維持電流僅需1uA。I2C的最大傳輸速率為400kHz。
(3)存儲(chǔ)器MEM
存儲(chǔ)器MEM采用ST公司的2MB串行Flash芯片M25P16,共有32個(gè)扇區(qū),每個(gè)扇區(qū)256頁,每頁256字節(jié),頁編程時(shí)間為1.4ms。M25P16采用SPI總線接口,最大傳輸速率50MHz,低工作電壓3.3V。為了實(shí)現(xiàn)5V-3.3V邏輯電平轉(zhuǎn)換,可使用Onsemi公司的三路非反相施密特觸發(fā)器NL37WZ17,它兼容5V和3V邏輯電平,輸出驅(qū)動(dòng)可達(dá)24mA。Flash存儲(chǔ)器主要用來存儲(chǔ)發(fā)票數(shù)據(jù)和稅控?cái)?shù)據(jù)。
(4)IC卡模塊ICC
IC卡模塊ICC采用Onsemi公司的NCN6004A。NCN6004A具有雙路卡接口,符合ISO 7816-3和EMV標(biāo)準(zhǔn)。工作電壓5V,電流150mA,內(nèi)置DC/DC,能為每個(gè)卡提供65mA/5V電源,外部晶振14.28MHz,內(nèi)置可編程的卡通信總線時(shí)鐘。
MCU通過I/O線與NCN6004A進(jìn)行串行通信。為了節(jié)?。桑腺Y源,可選擇復(fù)用連線方式,即兩個(gè)卡共享一路通道,由選卡信號區(qū)分,分別實(shí)現(xiàn)稅控卡和用戶卡的訪問功能。
(5)USB接口
MCU內(nèi)部帶有USB通訊控制器,為了濾波和ESD保護(hù),接口部分采用Onsemi公司的STF202。STF202的工作電壓為3.3V,DIN2腳內(nèi)部帶1.5kΩ上拉電阻。由于MCU僅支持低速USB設(shè)備,所以它的USB_D_必須要連接STF202的DIN2,通訊速率1.5Mb/s。
(6) UART接口
UART轉(zhuǎn)換芯片采用Intersil公司的HIN202,MCU內(nèi)部具有2路UART,均可選用RS232通訊。HIN202的工作電壓為5V,具有2路收發(fā)驅(qū)動(dòng)。
(7)電源模塊PWR
系統(tǒng)的外部供電電源分為兩路,一路用AC/DC適配器直接提供+5V;另一路由主機(jī)通過USB接口線輸入(5V/500mA)。用戶可任選一路直接提供給5V器件工作。
為了實(shí)現(xiàn)電保護(hù)功能,采用Onsemi公司的升壓芯片NCP1402SN50T1,其最低輸入啟動(dòng)電壓為0.8V,輸出電壓5V,輸出電流200mA。當(dāng)系統(tǒng)正常工作時(shí),NCP1402SN50T1可為大電容充電,一旦斷電,大電容仍可維持該芯片工作一段時(shí)間,此時(shí)可完成一些重要的任務(wù),以避免異常斷電產(chǎn)生錯(cuò)誤。大電容采用了兩個(gè)串聯(lián)的3.3F/2.5V卷繞型電容,當(dāng)充滿時(shí)可維持供電30秒以上。
5V至3.3V電壓轉(zhuǎn)換器采用Onsemi公司的NCP500SN33T1,該芯片輸出電流為150mA,可為3.3V器件提供工作電壓。
備用電池采用的是兩節(jié)3V/210mAh鋰電池,供電至少可維持10年以上。
(8)監(jiān)控模塊MON
監(jiān)控模塊采用Onsemi公司的MAX708,MAX708可實(shí)現(xiàn)上電復(fù)位和手動(dòng)復(fù)位,還具有電壓監(jiān)控功能,設(shè)計(jì)時(shí)在其PFI端連接適當(dāng)?shù)姆謮弘娮?,這樣當(dāng)主電源掉電時(shí),MAX708就可產(chǎn)生掉電中斷信號,用以完成重要的任務(wù)或備份重要的數(shù)據(jù)。
MAX708工作電壓5V,復(fù)位的門限值4.38V,復(fù)位時(shí)間200ms,低壓監(jiān)控輸入門限值1.25V。
(9) 狀態(tài)指示SIC
狀態(tài)指示采用發(fā)光二級管,分別用于指示電源接通、卡插入、JATG程序下載等狀態(tài)。在MCU的I/O上還可連接出錯(cuò)、運(yùn)行、自檢測等狀態(tài)指示。
4 實(shí)際應(yīng)用電路
稅控器中MCU與其它核心硬件的連接電路圖如圖3所示。圖中給出了時(shí)鐘、Flash存儲(chǔ)器和IC卡模塊與MCU的連接方式。
5 軟件設(shè)計(jì)方案
稅控器軟件總體上包含兩大部分:主機(jī)端軟件和設(shè)備端軟件。主機(jī)端與設(shè)備端之間采用“命令—應(yīng)答”方式進(jìn)行數(shù)據(jù)通訊。由主機(jī)端發(fā)送命令,設(shè)備端應(yīng)答。
主機(jī)端軟件可分為四層:應(yīng)用層、稅控函數(shù)層、通訊管理層和設(shè)備驅(qū)動(dòng)層;設(shè)備端軟件也可分為四層:主控層、稅控函數(shù)層、設(shè)備管理層、硬件驅(qū)動(dòng)層。以下主要介紹設(shè)備端軟件架構(gòu)。
5.1 主控層
主控函數(shù)負(fù)責(zé)系統(tǒng)和設(shè)備的初始化、與主機(jī)間的通訊監(jiān)控、協(xié)議管理、稅控命令包的解釋和任務(wù)的調(diào)度等事務(wù)。
5.2 稅控函數(shù)層
稅控函數(shù)按照國標(biāo)對稅控器的要求設(shè)計(jì),負(fù)責(zé)機(jī)器初始化和注冊、分發(fā)發(fā)票、開發(fā)票、退票、廢票、上傳發(fā)票、日交易和卷匯總數(shù)據(jù)、申報(bào)、核查等事務(wù)。
5.3 設(shè)備管理層
設(shè)備管理層是針對復(fù)雜設(shè)備設(shè)計(jì)的管理程序,主要包括IC卡管理、存儲(chǔ)器管理、USB通訊管理。
IC卡管理程序是按照GB18240.2-2003對稅控IC卡的要求設(shè)計(jì)的操作命令程序,可分為基本命令和擴(kuò)展命令。基本命令有文件操作、讀寫記錄、產(chǎn)生隨機(jī)數(shù)、內(nèi)外部認(rèn)證、取響應(yīng)、應(yīng)用鎖定等;稅控卡專用命令有卡注冊、開票,日交易簽名等功能;用戶卡專用命令有注冊簽名、分發(fā)發(fā)票、報(bào)稅數(shù)據(jù)匯總等功能。
存儲(chǔ)器管理程序用來對Flash存儲(chǔ)空間進(jìn)行地址分配管理。該程序按循環(huán)記錄的方式設(shè)計(jì),主要完成發(fā)票明細(xì)、日交易和卷匯總記錄的格式化、讀寫、查找等事務(wù)。同時(shí)還負(fù)責(zé)存儲(chǔ)在SRAM中地址分配表的管理,指針等數(shù)據(jù)的記錄。
USB通訊管理程序是按照低速USB1.1規(guī)范以及人機(jī)接口設(shè)備(HID)類別的要求設(shè)計(jì)的,用來完成總線枚舉和數(shù)據(jù)通信的事務(wù)。該程序主要采用Endpoint 0(IN/OUT)控制傳輸方式,并使用輸入輸出報(bào)表(Report)格式來與主機(jī)交換數(shù)據(jù)。
5.4 硬件驅(qū)動(dòng)層
硬件驅(qū)動(dòng)層是使各個(gè)硬件設(shè)備實(shí)現(xiàn)底層操作的驅(qū)動(dòng)程序,包括時(shí)鐘、IC卡、Flash MEM、UART和USB等API庫函數(shù)。其中時(shí)鐘函數(shù)實(shí)現(xiàn)設(shè)置、讀、寫時(shí)鐘和日歷等功能。IC卡函數(shù)實(shí)現(xiàn)IC卡的插卡檢測、卡上下電、卡復(fù)位和卡命令等功能。Flash MEM函數(shù)實(shí)現(xiàn)外部Flash存儲(chǔ)器的擦除、讀、寫等功能。UART和USB函數(shù)實(shí)現(xiàn)設(shè)置、接收和發(fā)送數(shù)據(jù)等功能。
圖3
6 結(jié)束語
文中介紹了稅控器的設(shè)計(jì)原理,本設(shè)計(jì)方案已通過應(yīng)用功能調(diào)試,能夠滿足產(chǎn)品的基本需求。需要說明的是,在實(shí)際產(chǎn)品中,可考慮采用模塊化設(shè)計(jì)思想,也就是說硬件采用模塊+底板架構(gòu),主處理及核心硬件都集中于模塊上,電源與接插件等放置在底板上;軟件底層對上層可封裝成API函數(shù)的形式。這樣便于滿足不同層次的需求,細(xì)分稅控產(chǎn)業(yè)的市場,有利于開發(fā)商和供應(yīng)商的定位選擇。通過多種開發(fā)與合作的途徑,來達(dá)到降低成本,提高效率和節(jié)省時(shí)間的目的。