基于Cortex M3的嵌入式POS系統(tǒng)設(shè)計(jì)
針對目前嵌入式收款機(jī)系統(tǒng)在功能和性價比方面存在不足的問題,介紹了一種基于Cortex M3芯片的嵌入式收款機(jī)系統(tǒng)。該系統(tǒng)功能全面、性能良好、界面完善、具有故障分析和機(jī)器自檢功能。運(yùn)行結(jié)果表明,該系統(tǒng)實(shí)現(xiàn)了預(yù)期目標(biāo)。
本文介紹了以STM32F107 單片機(jī)為核心的POS 機(jī)、數(shù)據(jù)采集和數(shù)據(jù)輸出的小規(guī)模銷售系統(tǒng)。目前的嵌入式收款機(jī)系統(tǒng)在硬件和軟件方面在成本上沒有有效的控制,在功能上沒有很充分地開發(fā)。而此款POS 系統(tǒng)平臺則擁有成本低廉、操作方便、易于自檢維修等方面的優(yōu)勢。
POS 機(jī)的基本作業(yè)原理是先將商品資料輸入進(jìn)SPIFlash 中存儲,商品上的條碼可以通過掃描槍上的光學(xué)讀取設(shè)備直接讀入,根據(jù)條形碼在收款機(jī)內(nèi)存中的商品數(shù)據(jù)庫找到該商品的相關(guān)內(nèi)容,當(dāng)然也可以直接用鍵盤輸入條形碼。每一筆商品銷售明細(xì)資料亦可自動統(tǒng)計(jì),并且最多可以存一萬筆以上交易記錄。
1 系統(tǒng)設(shè)計(jì)
1.1 硬件結(jié)構(gòu)
本系統(tǒng)采用ARM Cortex M3 為內(nèi)核的32 位微處理器STM32F107VC,其主頻為72 Hz,該芯片內(nèi)部采用哈佛結(jié)構(gòu),內(nèi)部集成了最大存儲空間為256K 的Flash和64K 的SRAM,還有大量的I/O 口和外設(shè)(2 個I2 C總線,3 個SPI,2 個I2 S,5 個USART,2 個CAN 等等)連接在2 個APB 總線上。
該系統(tǒng)硬件主要包括:收款數(shù)據(jù)處理模塊、收款程序存儲模塊、收款數(shù)據(jù)存儲模塊、串口調(diào)試模塊、收款顯示模塊、報表打印模塊、USB 模塊。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
系統(tǒng)的實(shí)物圖如圖2 所示。
圖2 系統(tǒng)的實(shí)物圖
在初始化時,為了便于用戶或者維修人員及時了解設(shè)備運(yùn)轉(zhuǎn)情況和數(shù)據(jù)存儲情況,調(diào)試信息務(wù)必顯示在液晶屏上。通過CH452 鍵盤將中英文輸入信息輸入到設(shè)備上,通過掃描槍將商品中的條形碼讀取到設(shè)備中,最后還可將交易記錄輸出到小票打印機(jī)上,最多可以一次性記錄一萬次交易信息。交易信息、用戶等資料存放在SPI Flash中,時鐘信息放在RTC 備用器中。
1.2 外設(shè)設(shè)備
1.2.1 輸入/輸出接口芯片和數(shù)碼管顯示芯片
CH452 是數(shù)碼管顯示驅(qū)動和鍵盤掃描控制芯片,可以同時進(jìn)行64 鍵的鍵盤掃描和8 位數(shù)碼管的操作,具有BCD 譯碼、閃爍、移位、段位尋址等功能,還能對CPU 提供上電復(fù)位信號。
本次研究對象中CH452的LCD 交換數(shù)據(jù)功能是通過級聯(lián)的4 線串行接口完成的。在鍵盤掃描期間,DIG7~DIG0 引腳用于列掃描輸出,并且可以依次從DIG0 ~DIG7 輸出高電平,同時其余的引腳置0。SEG7 ~SEG0引腳都帶有內(nèi)部下拉電阻,用于行掃描輸入,在鍵盤掃描期間輸出被禁止。
啟用鍵盤掃描功能后,4 線串行接口中的DOUT 引腳的功能由串行接口的數(shù)據(jù)輸出變?yōu)殒I盤中斷輸出以及按鍵數(shù)據(jù)輸出。如果有DIGm(m=0,1,2…7)與SEGn(n=0,1,2 …7)的鍵被按下,那么當(dāng)DIGm 輸出高電平時,SEGn 可以檢測到高電平;如果按鍵有效,按鍵產(chǎn)生的代碼通過DOUT 引腳就能夠產(chǎn)生中斷,CPU 則用串行接口來讀取代碼。
另外,CH452 僅支持每次同時按下一個鍵,如果有多個鍵值按下,則取按鍵代碼較小的按鍵。
表1、表2 是在DIG7~DIG0 與SEG7~SEG0 之間8×8 矩陣的按鍵編址,按鍵按下時,狀態(tài)碼位6 總是置1,而按鍵代碼共有7 位,所以當(dāng)鍵按下時,CH452 所提供的實(shí)際按鍵代碼在下表中的按鍵編址基礎(chǔ)上偏移40H。也就是說,本文設(shè)定的按鍵代碼的取值范圍應(yīng)該在40H~7FH 之間。
CH452 還可以控制8 個數(shù)碼管和64 個LED 燈,在這次項(xiàng)目中根據(jù)不同的界面可以用來顯示時間、商品價格等可以用數(shù)字表示的參數(shù)。
CH452 與作為CPU 的STM32 的連接方式如圖3 所示。
圖3 CH452 與STM32F107VC 的連接
1.2.2 存儲設(shè)備
W25X16 是華邦公司推出的繼W25X10/20/40/80 后容量更大的FLASH 存儲器產(chǎn)品,它有占用空間小、使用壽命長、功耗較低等優(yōu)點(diǎn)。W25X16 能容納2 MB,分布在8 192 個編程頁上。它分為32 個塊,每個塊由16 個扇區(qū)組成,W25X16 的最少擦除單位就是一個扇區(qū)(4 KB)。W25X16 與STM32F107VC 的連接方式如圖4 所示。
圖4 W25X16 與STM32F107VC 的連接
1.2.3 打印機(jī)
本次項(xiàng)目采用熱敏打印機(jī)來輸出每次交易信息。商寶熱敏打印機(jī)支持并口、串口、USB、LAN 網(wǎng)絡(luò)等途徑傳輸數(shù)據(jù),帶有384 個方點(diǎn)的帶加熱點(diǎn)陣固定打印頭。打印機(jī)通過CPU 傳輸?shù)臄?shù)據(jù)邏輯控制點(diǎn)陣,并且控制進(jìn)紙,從而在熱敏紙上印出字體,打出顧客需要的包含交易信息的小票。
1.2.4 掃描輸入設(shè)備
掃描槍利用收集到的條形碼上強(qiáng)弱不同的反射光,經(jīng)過光學(xué)系統(tǒng)成像通過光電轉(zhuǎn)換器將光信號轉(zhuǎn)換成電信號,譯碼器根據(jù)測量而來的脈沖信號0、1 來判別條和空的數(shù)目,得到的數(shù)據(jù)還要通過對應(yīng)的編碼規(guī)則(比如本次項(xiàng)目所用的掃描儀運(yùn)用EAN 13 碼)轉(zhuǎn)換成條形碼序列號。
1.2.5 顯示設(shè)備
TFT LCD 因其具有大容量、高速度和高對比度顯示等,成為當(dāng)前顯示領(lǐng)域的主流。LCD 利用了液晶的電光效應(yīng),通過電路控制液晶單元的透射率及反射率,從而產(chǎn)生不同灰度層次及多達(dá)1670 萬種色彩的靚麗圖像,顯示需要的英文和漢文信息都是通過點(diǎn)陣原理完成的。
本次項(xiàng)目采用SSD1289 液晶顯示屏來輸出收款機(jī)各個界面,SSD1289 是一款帶有262 144 種顏色的薄膜場效應(yīng)管LCD 的控制器,它的屏幕尺寸為57 mm×79 mm,有效顯示面積為51 mm×65 mm。它具有240×320 的分辨率,SSD1289 具有4 種接口模式:i8080 的MPU 接口、VSINC 接口、SPI 接口和18 位RGB 接口。STM32F107VC 通過FCMS 總線來控制LCD 的驅(qū)動。液晶與STM32F107VC 的連接方式如圖5 所示。
圖5 SSD1289 與作為CPU 的STM32F107VC 的連接
下列是液晶部分的初始化操作。
① 打開晶振:
LCD_WriteReg(0x0000,0x0001);
② 驅(qū)動輸出控制(240×320 的分辨率):
LCD_WriteReg(0x0001,0x6B3F);
③ 掃描開始地址:
LCD_WriteReg(0x000F,0x0000);
而液晶屏如果要顯示色彩繽紛的圖像或者文字就需要軟件對它進(jìn)行控制,而這是具有一定復(fù)雜度的,下列是液晶部分的部分高級函數(shù)操作。
(1 )設(shè)置光標(biāo)函數(shù)
Set_LCD_Cursor(u8 x,u16 y,u8 CursFlag,u32 CursCycleTime,u8 high,u8 width);
其中,x,y 是光標(biāo)閃爍的位置;CursFlag=1 表示顯示光標(biāo);CursFlag=0 表示不顯示光標(biāo);CursCycleTime 是光標(biāo)閃爍的周期;high 和width 則分別表示光標(biāo)的高度和寬度。
(2)畫線函數(shù)
LCD_DrawLine(u8 x,u16 y,uint16_t Length,uint8_t Direction,u16 LineColor);
其中,x,y 是位置坐標(biāo),Length 是指線的長度,Direction是指線的朝向,LineColor 則設(shè)定線的顏色。
(3)顯示漢字
LCD_Disp_HZ_CharString(u8 x,u16 y,u8 *str,u16fontcolor,u16 backcolor);
其中,x,y 是位置坐標(biāo),str 指針指向漢字或英文字符編碼fontcolor,backcolor 分別顯示字符顯示顏色和背景顏色。
2 軟件框圖
根據(jù)項(xiàng)目的整體規(guī)劃,管理員及收銀員軟件系統(tǒng)框圖分別如圖6、圖7 所示。
圖6 管理員系統(tǒng)軟件結(jié)構(gòu)框圖
3 系統(tǒng)的運(yùn)行情況
3.1 機(jī)器自檢
該套電子設(shè)備具有機(jī)器自檢功能,用戶通過輸入管理員密碼進(jìn)入“設(shè)置”,然后再進(jìn)入“機(jī)器測試及其結(jié)果顯示”就能夠及時了解機(jī)器運(yùn)行是否正常,如圖8 所示。
圖7 收銀員系統(tǒng)軟件結(jié)構(gòu)框圖
圖8 機(jī)器測試及其結(jié)果顯示
3.2 運(yùn)行結(jié)果
在執(zhí)行“登陸”→輸入“收銀員”密碼→“收款”,然后就可以出現(xiàn)收款界面。這個時候無論用掃描槍和商品編號輸入數(shù)字,都可以把商品編號輸入在框內(nèi),而且數(shù)量框也可以自行輸入每件商品的數(shù)目,然后按回車鍵結(jié)賬。最后,能夠在打印機(jī)上顯示打印小票,并且在LCD 上顯示收款界面收款界面——編者注。
如果想要錄入商品信息,可以執(zhí)行“登陸”→輸入“管理員”密碼→“錄入商品信息”,然后就可以出現(xiàn)錄入商品信息界面略——編者注。此時,可以按中英文輸入切換鍵和大小寫切換鍵分別切換輸入的語言和英文大小寫。
結(jié)語
使用STM32F107VC 作為便攜式POS 機(jī)的硬件平臺,能夠較大幅度地降低成本,操作更加便利,同時POS機(jī)的基本功能并沒有因此而減弱。而POS 機(jī)功能在STM32F107VC 上的開發(fā)還可以更加充分,比如利用USB接口把更多的重要資料存儲在上位機(jī)中等。