在許多傳統(tǒng)行業(yè)中,高精度溫度數(shù)據(jù)采集系統(tǒng)是不可缺少的,。近年來,,隨著高精度ADC價格的不斷下降以及其功能的不斷完善,研制廉價的多路,、快速,、高精度溫度采集系統(tǒng)成為了可能。美國德州儀器公司(TI)推出的帶24位ADC的微處理器MSC1210,,特別適合于測量高精度溫度,、壓力傳感器等輸出的微弱信號。本文以MSC1210作為測量,、信號處理以及通訊的核心,,設(shè)計了高精度溫度采集系統(tǒng)模塊。該系統(tǒng)測量通道易于擴(kuò)充,,測量精度高,,可以快速地進(jìn)行高精度數(shù)據(jù)測量。
系統(tǒng)總體方案設(shè)計
本系統(tǒng)的硬件部分主要由前端數(shù)據(jù)采集,、處理電路和后端數(shù)據(jù)處理,、LCD電路組成。兩部分通過RS-232串行接口進(jìn)行通信,。系統(tǒng)的總體方案構(gòu)圖如圖1所示,。
圖1 系統(tǒng)總體結(jié)構(gòu)
數(shù)據(jù)采集部分的軟硬件設(shè)計
硬件電路設(shè)計
數(shù)據(jù)采集部分的核心器件選用了MSC1210Y5,。這主要是因為該微處理器具有24位的 ADC,其有效精度高于22位,。其內(nèi)部包含完整的前向通道(包括輸入緩存器,、模擬開關(guān)電路、可編程增益放大器和ADC以及數(shù)字濾波部分)和后向通道— DAC,,這些都是完成測控系統(tǒng)的必須部分,。此外,該處理器通過改變命令寄存器的方式對內(nèi)部通道功能進(jìn)行設(shè)置,,用指令就可以選擇輸入緩存器,、設(shè)置放大增益、控制通道開關(guān)切換,、進(jìn)行偏置校正等,,使用非常方便。數(shù)據(jù)采集部分的電路結(jié)構(gòu)原理圖如圖2所示,。
本系統(tǒng)中兩個核心芯片MSC1210Y5和MAX3223的功耗都很低,,因此,,在設(shè)計中板上的電源(3.3V)由后端系統(tǒng)通過RS-232接口提供,。除了RS-232接口的接線,以及接入J1,、 J2插座的信號(8個AIN線,、REF以及公共地)線外,本系統(tǒng)的硬件部分不再需要其它連接,,使用非常方便,。此外,設(shè)計時還在電路中預(yù)留了一部分接口線供以后擴(kuò)展系統(tǒng)功能使用,,包含了第二串行口以及四根可配置為SPI接口,、中斷輸入和I/O端口的備用接口線。
圖2 數(shù)據(jù)采集電路結(jié)構(gòu)原理圖
軟件設(shè)計
在基于此電路的高精度測溫模塊應(yīng)用中,,MSC1210Y5完成了微弱信號的多路切換,、信號緩沖、編程放大,、24位ADC,、數(shù)字濾波、數(shù)據(jù)處理,、信號校準(zhǔn)以及串口通信等功能,。MSC1210Y5包含2個串口,本設(shè)計中選取其中的一個串口用來與后端人機(jī)交互系統(tǒng)通信,,負(fù)責(zé)接收后端發(fā)送的控制命令和控制參數(shù)以及發(fā)送前端采集,、處理的數(shù)據(jù),。數(shù)據(jù)采集電路的程序主要任務(wù)是:控制內(nèi)部的ADC的測量過程,讀取轉(zhuǎn)換的數(shù)據(jù),;與后端 (S3C44B0X系統(tǒng))進(jìn)行通信,,讀取上位機(jī)的命令和有關(guān)的控制參數(shù),同時向上位機(jī)傳送轉(zhuǎn)換后的數(shù)據(jù),。數(shù)據(jù)采集電路的程序控制流程如圖3所示,。
串口開始接收上位機(jī)送過來的命令和數(shù)據(jù)時,將依次讀到的后端系統(tǒng)的2字節(jié)串碼(暫存在R6,,R7)的控制字傳送到MSC1210Y5內(nèi)部寄存器ADCON1 和ADCON0,,從而實現(xiàn)對ADC控制命令的寫入。其后將ADCON3,、ADCON2,、ADMUX和PDCON寄存器的內(nèi)部寫入相應(yīng)的命令和參數(shù)值,從而完成對MSC1210Y5內(nèi)ADC的設(shè)置和啟動,。向后端系統(tǒng)發(fā)送數(shù)據(jù)時,,由于ADC是24位精度,轉(zhuǎn)換數(shù)據(jù)必須分為3個字節(jié)傳送,,即將寄存器1,、2、3的 ADC轉(zhuǎn)換結(jié)果依次通過送SBUF發(fā)送,,同時在這個過程中還包含發(fā)送同步字符,、CRC校驗等過程。
圖3 數(shù)據(jù)采集電路的程序控制流程
嵌入式GUI應(yīng)用系統(tǒng)概述
該系統(tǒng)后端的硬件部分主要由三大塊構(gòu)成:以S3C44B0X為核心的系統(tǒng)板,,集JTAG調(diào)試電路,、系統(tǒng)電源、LCD接口電路的輔助板,,以及LCD屏,。
后端的軟件部分也由三個部分組成:系統(tǒng)啟動加載程序,嵌入式實時多任務(wù)操作系統(tǒng)mC/OS-II,,和基于mC/OS-II的應(yīng)用程序,。根據(jù)系統(tǒng)應(yīng)用的需要,其中基于mC/OS-II的應(yīng)用程序主要包括串行口通信程序和基于mC/GUI的圖形用戶接口程序,。
系統(tǒng)中的串口用于S3C44B0X控制器向前端數(shù)據(jù)采集部分發(fā)送控制命令和控制參數(shù),,并實時接收前端發(fā)送的采集數(shù)據(jù),送由控制器處理和進(jìn)行LCD顯示,。當(dāng)操作系統(tǒng)mC/OS-II啟動時,,自動初始化串行口。由于應(yīng)用程序是多任務(wù)系統(tǒng),,為了實時監(jiān)測串行口信息,,設(shè)計時在系統(tǒng)中單開了一個串行口掃描任務(wù),,從而可保證信息不丟失。
由于mC/GUI提供了源代碼,,在開發(fā)應(yīng)用程序時,,用戶可以首先將核心文件、LCD驅(qū)動文件和需要的字體文件包含在自己的工程里,,然后再根據(jù)內(nèi)存設(shè)備,、輸入設(shè)備、空間和窗口管理部分等硬件的實際需要來具體開發(fā),。開發(fā)步驟如下,。
(1) 按照實際需要,定制自己的mC/GUI開發(fā)環(huán)境,。其中包括對mC/GUI目錄的篩選,,以及目錄中文件的篩選;
(2) 指定硬件設(shè)備的地址,,編寫接口驅(qū)動代碼,。這里需要修改LCDConf.h文件;
(3) 編譯,、連接,、調(diào)試子程序;
(4)修改子程序并測試,,增加需要的功能,;
(5)若開發(fā)多任務(wù)應(yīng)用,則需要修改GUI_MAXTASK和GUI_OS宏,,實現(xiàn)mC/GUI與操作系統(tǒng)的結(jié)合;
(6)編寫自己的應(yīng)用程序,。
由于mC/GUI不支持ARM7處理器S3C44B0X,,因此,要把mC/GUI移植到系統(tǒng)平臺上,,需要自己完成mC/GUI在系統(tǒng)硬件平臺上的各種驅(qū)動,,具體包括S3C44B0X中內(nèi)置的LCD控制器的正確初始化,以及畫點,、畫線,、填充等LCD驅(qū)動函數(shù)的編寫等。
LCD 控制器初始化:S3C44B0X LCD控制器上的正確初始化包括各種控制寄存器的正確配置以及顯存的正確設(shè)置與映射,。其中顯存的映射是將S3C44B0X專用LCD DMA的源地址設(shè)為顯存起始地址值,,該值是在rLCDSADDR1中配置。此外,,LCD控制器還需對REGBANK中的其他可編程寄存器進(jìn)行編程,,以控制相應(yīng)的寄存器值,,并確定垂直/水平象素、數(shù)據(jù)接口的數(shù)據(jù)寬度,、接口時間及刷新率等,。
LCD驅(qū)動函數(shù)編程:在LCD的驅(qū)動函數(shù)中,最底層的驅(qū)動函數(shù)是畫點函數(shù)和取點函數(shù),。在mC/GUI中顯示字,、圖形都與這兩個函數(shù)有關(guān),它們直接與顯存通話,。為了顯示出字符和位圖,,還須參考uC/GUI的 LCDMemC.c,寫DrawBitLine1BPP,、DrawBitLine2BPP和DrawBitLine4BPP函數(shù),,并配置 GUIConf.h和LCDConf.h中的常數(shù)。完成了上面的各個驅(qū)動函數(shù)后,,就可以采用mC/GUI的Demo程序?qū)λ浦驳膍C/GUI進(jìn)行測試了,。
結(jié)語
采用TI公司的微控制器MSC1210Y5開發(fā)的高精度數(shù)據(jù)采集系統(tǒng),采集精度高,,抗干擾能力強(qiáng),。具有較高的應(yīng)用和推廣價值。