一款新型煙草稱重讀卡定級器的設(shè)計(jì)與實(shí)現(xiàn)
2 硬件設(shè)計(jì)方案
煙草稱重讀卡定級器以微控制器STM32F103VC為核心,并在其周圍擴(kuò)展外設(shè)構(gòu)成系統(tǒng)。微控制器STM32F103VC使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,內(nèi)置高速存儲(chǔ)器(高達(dá)128k字節(jié)的閃存和20k字節(jié)的SRAM),具有豐富的硬件接口資源,以其為中心構(gòu)建的煙草稱重讀卡定級器硬件框圖如圖2所示。
2.1 A/D轉(zhuǎn)換部分
煙葉筐放置到秤臺(tái)上后,秤臺(tái)上的電阻應(yīng)變式傳感器將重量信號(hào)轉(zhuǎn)變?yōu)殡妷盒盘?hào),該電壓信號(hào)傳送給CS5532完成A/D轉(zhuǎn)換。CS5532芯片是美國Cirrus Logic公司推出的一種具有極低噪音的、多通道△-∑型ADC,可達(dá)到24位分辨率的輸出結(jié)果,精度高、動(dòng)態(tài)特性寬。轉(zhuǎn)換后的數(shù)據(jù)從CS5532的同步串行接口輸出至微控制器STM32F103VC,同時(shí)可在240×64點(diǎn)陣式液晶顯示器上顯示當(dāng)前煙草的重量。
2.2 讀卡處理部分
系統(tǒng)采用FNUHFD2180讀卡器進(jìn)行RFID數(shù)據(jù)采集,該讀卡器可對符合ISO18000-6C協(xié)議的電子標(biāo)簽進(jìn)行讀寫。讀卡器通過UART2與煙草稱重讀卡定級器通訊,煙草稱重讀卡定級器控制讀卡器發(fā)射一特定頻率的無線電波能量給煙葉框上的電子標(biāo)簽,用以驅(qū)動(dòng)標(biāo)簽電路將內(nèi)部的數(shù)據(jù)送出,讀卡器依序接收解讀數(shù)據(jù),送至煙草稱重讀卡定級器進(jìn)行相關(guān)處理。
2.3 串行通訊部分
STM32F103VC利用串行口與外圍設(shè)備進(jìn)行數(shù)據(jù)通訊,其中與上位計(jì)算機(jī)通訊使用UART1,串行數(shù)據(jù)通訊格式采用波特率9600b/s;1位起始位8位數(shù)據(jù)位,無校驗(yàn),1位停止位。根據(jù)程序里預(yù)先定義好的協(xié)議,上位計(jì)算機(jī)與控制器進(jìn)行數(shù)據(jù)通訊。控制器與讀卡器通訊使用UART2,與LCD顯示屏通訊使用UART3。
2.4 存儲(chǔ)部分
存儲(chǔ)部分采用鐵電存儲(chǔ)器M31256,該存儲(chǔ)芯片具有非易失性、讀卡速度快以及讀寫功耗極低等諸多優(yōu)點(diǎn),提供256kb的存儲(chǔ)空間。FM31 256采用I2C總線形式與STM32F103VC通信,芯片上的時(shí)鐘線SCL、數(shù)據(jù)線SDA與STM32F103VC上的I2C接口相連,嚴(yán)格按照I2C總線協(xié)議進(jìn)行命令寫入與數(shù)據(jù)交換。
3 管理軟件設(shè)計(jì)
煙草稱重讀卡定級器的軟件設(shè)計(jì)引入嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II,μC/OS-II是一種基于優(yōu)先級的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量、郵箱、消息隊(duì)列)和內(nèi)存管理等功能。操作系統(tǒng)內(nèi)核的主要工作是對任務(wù)(ta sk)進(jìn)行管理和調(diào)度。操作系統(tǒng)將整個(gè)應(yīng)用系統(tǒng)程序分解為多個(gè)小任務(wù),系統(tǒng)并發(fā)運(yùn)行多個(gè)任務(wù),從而提高處理器的利用率,加快程序的執(zhí)行速度,提高系統(tǒng)的實(shí)時(shí)響應(yīng)。
3.1 任務(wù)劃分與設(shè)計(jì)
根據(jù)煙草稱重讀卡定級系統(tǒng)所要實(shí)現(xiàn)的功能,考慮系統(tǒng)實(shí)時(shí)性、可靠性的要求,進(jìn)行任務(wù)的劃分并創(chuàng)建任務(wù),按其優(yōu)先級從高到低分別是初始化任務(wù)、鍵盤掃描任務(wù)、ADC任務(wù)、主串口通訊任務(wù)、讀卡串口任務(wù)、空閑任務(wù)。每個(gè)任務(wù)在4種不同的狀態(tài)中轉(zhuǎn)換:休眠態(tài)、就緒態(tài)、掛起態(tài)和運(yùn)行態(tài)。在運(yùn)行狀態(tài)下,還可能由于發(fā)生中斷而轉(zhuǎn)向中斷服務(wù)子程序。任務(wù)管理函數(shù)的調(diào)用將引起各任務(wù)狀態(tài)間的轉(zhuǎn)換,系統(tǒng)軟件流程圖如圖3所示。
系統(tǒng)上電復(fù)位后,首先進(jìn)行嵌入式處理器與外設(shè)的初始化,完成系統(tǒng)時(shí)鐘、GPIO口以及中斷相關(guān)參數(shù)的配置。系統(tǒng)使用外部中斷2讀取A/D轉(zhuǎn)換結(jié)束信號(hào),定時(shí)器中斷2為μC/OS-II系統(tǒng)提供時(shí)鐘節(jié)拍,串行口中斷1用于上位機(jī)通訊,串行口中斷2用于讀卡器通訊。然后是初始化μC/OS-II操作系統(tǒng),同時(shí)液晶顯示開始畫面。接著創(chuàng)建初始化任務(wù),完成應(yīng)用任務(wù)(包括鍵盤掃描任務(wù)、ADC任務(wù)、主串口通訊任務(wù)、讀卡串口任務(wù))以及空閑任務(wù)的創(chuàng)建,信號(hào)量與互斥量的創(chuàng)建,郵箱消息的建立,窗口看門狗初始化。最后啟動(dòng)多任務(wù),此時(shí),任務(wù)交由操作系統(tǒng)管理與調(diào)度。
程序代碼大體如下所示:
評論