0 引言
在實(shí)際工作中,,對(duì)于多路電阻進(jìn)行測(cè)量,,一般采用直接測(cè)量法人工操作進(jìn)行,雖然這種方法很成熟,,但所用的配套設(shè)備較多,,測(cè)量數(shù)據(jù)手工紀(jì)錄、人工計(jì)算,,操作繁瑣,、效率較低,事后的數(shù)據(jù)處理及出具測(cè)量報(bào)告既費(fèi)時(shí)又費(fèi)力,,易出現(xiàn)人為因素造成的錯(cuò)判,、漏判等,難以保證測(cè)量質(zhì)量,,影響了科研,、實(shí)驗(yàn)生產(chǎn)任務(wù)的順利進(jìn)行。針對(duì)這些問題本文設(shè)計(jì)了一種基于MSP430單片機(jī)的電阻多路測(cè)量系統(tǒng),,系統(tǒng)采用2個(gè)MSP430F169單片機(jī),,利用該型號(hào)單片機(jī)自身集成的I2C通信模塊實(shí)現(xiàn)雙單片機(jī)系統(tǒng)。使用雙機(jī)結(jié)構(gòu)的增強(qiáng)了系統(tǒng)的抗干擾能力和可靠性,,提高了測(cè)量的精度的和穩(wěn)定性,。該多路電阻測(cè)量系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、成本低廉,、功耗低等特點(diǎn),,其測(cè)量范圍為10μΩ~3 kΩ、測(cè)量精度為0.2%,??捎糜诳茖W(xué)研究和工程運(yùn)用等領(lǐng)域,具有較強(qiáng)的實(shí)用價(jià)值,。系統(tǒng)的設(shè)計(jì)思想和方法也是對(duì)雙單片機(jī)系統(tǒng)研究的有益的嘗試,,為后續(xù)的研究打下基礎(chǔ)。
1 多路電阻測(cè)量系統(tǒng)簡(jiǎn)介
1.1 MSP430單片機(jī)
MSP430系列單片機(jī)是美國(guó)德州儀器(TI)推出的一種16位超低功耗單片機(jī),。該系列單片機(jī)具有運(yùn)算能力強(qiáng),,片內(nèi)外設(shè)豐富,低電壓,,超低功耗,,速度快,效率高等特點(diǎn)。其電源電壓采用1.8~3.6 V低電壓,,RAM數(shù)據(jù)保持方式下耗電僅為0.1μA,,活動(dòng)模式耗電250μA/MIPS,I/O輸入端口的最大漏電流僅為50 nA,,單片機(jī)系統(tǒng)有一種活動(dòng)模式和5種低功耗模式,,并且各種模式間可以自由切換。采用矢量中斷,,支持十多個(gè)中斷源,,并可任意嵌套,用中斷請(qǐng)求將C喚醒只需6μs,。具備精簡(jiǎn)指令集合和較高的處理速度,,大量的片內(nèi)寄存器可以參加運(yùn)算。有豐富的I/O接口,,支持JATG在線編程和調(diào)試,。其中,MSP430F169單片機(jī)集了64 KB的FLASH ROM和2 KB的RAM,,在多數(shù)應(yīng)用場(chǎng)合無需為處理器另外擴(kuò)展ROM,,也無需擴(kuò)展RAM,片內(nèi)具有雙通道的串行數(shù)據(jù)接口(USART模塊),,可以實(shí)現(xiàn)UART,,SPI和I2C三種通信模式。雙單片機(jī)之間采用USART0串行通信模塊實(shí)現(xiàn)I2C主從式通信,,可以使系統(tǒng)通信簡(jiǎn)單高效,。
1.2 系統(tǒng)框圖
本系統(tǒng)為基于雙MSP430F169單片機(jī)多路電阻測(cè)量系統(tǒng)。使用2個(gè)MSP430F169單片機(jī)協(xié)調(diào)工作,,從機(jī)MSP430F169利用自帶的8路A/D通道實(shí)現(xiàn)多路數(shù)據(jù)的測(cè)量,、采集并對(duì)所采集的數(shù)據(jù)進(jìn)行計(jì)算與分析,主機(jī)MSP430F169負(fù)責(zé)儲(chǔ)存,、控制,、顯示以及和上位機(jī)的通信,。利用MSP430F169單片機(jī)的固有的USART模塊,,采用I2C總線進(jìn)行串行通信,實(shí)現(xiàn)處理器之間的命令控制和數(shù)據(jù)交換,。電阻測(cè)量電路采用恒流源測(cè)量電阻,,將待測(cè)電阻接入恒流源電路,對(duì)電阻兩端施加恒定電流,,在電阻兩端形成穩(wěn)定的壓降,。由于電阻兩端輸出的電壓值比較小,需要通過放大電路對(duì)電壓進(jìn)行放大。通過單片機(jī)自帶的A/D接口對(duì)待測(cè)電壓進(jìn)行采集,,由歐姆定律算出相應(yīng)的阻值,,再除以放大倍數(shù),即可得到待測(cè)小電阻的阻值,。系統(tǒng)框圖如圖1所示,。
2 硬件電路的設(shè)計(jì)
系統(tǒng)硬件電路主要由從單片機(jī)恒流源電路和主單片機(jī)電路組成,主單片機(jī)電路部分主要實(shí)現(xiàn)控制,、顯示,、存儲(chǔ)、與上位機(jī)通信等功能,,硬件電路比較簡(jiǎn)單限于篇幅不再累述,。從單片機(jī)恒流源電路主要由電流源電路、放大器電路和跟隨器電路組成,。以下著重對(duì)系統(tǒng)的從單片機(jī)恒流源電路的設(shè)計(jì)進(jìn)行介紹,。
2.1 電流源電路設(shè)計(jì)
電阻測(cè)量的精度取決于恒流源的精度和穩(wěn)定性和放大器的穩(wěn)定性。本文系統(tǒng)中電流源電路采用BURRBROWN公司的REF200高精度電流源實(shí)現(xiàn),。該芯片內(nèi)集成了2個(gè)100μA的恒流源和一個(gè)鏡像電流源,。其最大特點(diǎn)是提供的電流精度高(100±0.5)μA。使用方便,,只需在芯片的管腳7或者管腳8加上2.5~40 V之間的任何一個(gè)電壓,。即可在管腳1或者管腳2上分別輸出100μA的電流。使用靈活,,通過不同的連接方式還可以實(shí)現(xiàn)50μA,,200μA,300 μA,,400μA的電流輸出,。本文系統(tǒng)要實(shí)現(xiàn)8路電阻測(cè)量,因而需要提供8路穩(wěn)定電流,。系統(tǒng)使用4片REF200芯片,,每個(gè)芯片提供2路100μA的電流源實(shí)現(xiàn)8路電流輸出。每個(gè)芯片的硬件電路如圖2(a)所示,。
2.2 放大電路設(shè)計(jì)
為了保證測(cè)量的穩(wěn)定性,,同時(shí)考慮到通過單片機(jī)控制的放大器的增益實(shí)現(xiàn)量程的轉(zhuǎn)變,因而本系統(tǒng)采用TI公司的增益可編程儀表放大器PGA204,,該放大器最大的特點(diǎn)是通過編程可以實(shí)現(xiàn)1,,10,100,,1 000的可選擇增益,,具有很高的共模抑制比(115 dB,,G=1 000時(shí)),其輸入偏置電壓最大為50μV,,最大偏置電流為2 nA,,芯片功耗低,放大器工作電壓為僅±4.5 V,,不工作時(shí)的電流僅為5 mA,。增益控制很靈活,芯片的管腳A0和管腳A1控制放大器增益,,與從機(jī)的I/O相連,。通過在管腳A0和管腳A1輸入對(duì)應(yīng)的高電平或者低電平即可獲得相應(yīng)的增益??删幊谭糯笃髟鲆?,實(shí)現(xiàn)了測(cè)量量程的轉(zhuǎn)換。每一路放大電路的硬件連接如圖2(b)所示,。
2.3 跟隨器電路設(shè)計(jì)
為了保證恒流源的穩(wěn)定,,在放大電路之后連接跟隨器電路,跟隨器電路選擇TI公司的高速精密運(yùn)算放大器OPA602來實(shí)現(xiàn),,該放大器的精度較高,,偏置電流僅為1 pA。具體硬件電路如圖2(c)所示,。
恒流源電路由電流源電路,、放大器電路和跟隨器電路組成。該恒流源所提供的電流與放大電路的增益G相關(guān),,系統(tǒng)選用模擬AVcc為參考電源,,大小為3 V,放大電路G增益為1時(shí),,系統(tǒng)測(cè)量的最大電阻為3 kΩ,。該恒流源電路具有結(jié)構(gòu)簡(jiǎn)單,精度高,,穩(wěn)定性強(qiáng),,功耗低的特點(diǎn)。
3 雙單片機(jī)協(xié)同工作
3.1 I2C總線
I2C總線是由Philips公司開發(fā)的用于內(nèi)部控制的簡(jiǎn)單雙向兩線串行總線,,該總線具有協(xié)議完善,、支持芯片多、占有I/O口線少等優(yōu)點(diǎn),。I2C總線是由串行數(shù)據(jù)總線(SDA)和串行時(shí)鐘總線(SCL)組成,,一個(gè)用來傳輸數(shù)據(jù),,另一個(gè)用來控制數(shù)據(jù)傳輸時(shí)鐘,。該總線標(biāo)準(zhǔn)模式速度為100 Kb/s,,快速模式速度可以達(dá)到400 Kb/s,高速模式可達(dá)3.4 Mb/s,,I2C能在最大總線負(fù)載下實(shí)現(xiàn)100 Kb/s的速率運(yùn)行,,且器件連接的個(gè)數(shù)只受最大400 pF的電容限制。數(shù)據(jù)在I2C總線上的通行過程如圖3所示,。
SDA和SCL是通過一個(gè)上拉電阻與正電源連接的雙向信號(hào)線,。當(dāng)總線空閑時(shí),這兩條信號(hào)線都保持高電平,。當(dāng)SCL線處于高電平,、SDA線從高電平向低電平跳變時(shí)為起始信號(hào);當(dāng)SCL線處于高電平,、SDA線從低電平向高電平跳變時(shí)為停止信號(hào),。起始條件和停止條件之間為通信傳輸?shù)倪^程。
3.2 單片機(jī)的拓?fù)浣Y(jié)構(gòu)
由于MSP430F169單片機(jī)的串行通信模塊USART0可以設(shè)置成I2C模式進(jìn)行工作,。在多路電阻測(cè)量系統(tǒng)中,,主機(jī)和從機(jī)通過各自的串行通信模塊USART0進(jìn)行I2C主/從雙向通信,主機(jī)和從機(jī)都能夠接收和發(fā)送數(shù)據(jù),,但總線的時(shí)鐘信號(hào)SCL,、起始信號(hào)、終止信號(hào)都由主機(jī)產(chǎn)生,。I2C總線在實(shí)現(xiàn)時(shí),,只需將主機(jī)和從機(jī)的管腳P3.1(SDA)和管腳P3.3(SCL)相連,并將管腳設(shè)置成I2C模式,,同時(shí)I2C總線必須通過兩個(gè)電阻分別將總線的SDL和S拉高,。單片機(jī)的拓?fù)鋱D如圖4所示。
4 軟件設(shè)計(jì)
4.1 雙機(jī)通信的實(shí)現(xiàn)
MSP430單片機(jī)的I2C模塊有主發(fā)送,、主接收,、從發(fā)送、從接收4種工作模式,。雙機(jī)通信程序設(shè)計(jì)主要包括初始化程序,、主機(jī)模式程序、從機(jī)模式程序和中斷服務(wù)程序四部分,。
初始化程序包括設(shè)置單片機(jī)P3.1(SDA)和管腳P3.3(SCL)為為傳輸端口,,端口方向。設(shè)置系統(tǒng)時(shí)鐘,,系統(tǒng)時(shí)鐘由主機(jī)產(chǎn)生,,選擇SMCLK為系統(tǒng)時(shí)鐘。I2C模塊初始化,,將控制寄存器U0CTL的控制使能位(I2CEN)置1,。U0CTL一個(gè)8位的寄存器,。通過對(duì)該寄存器的設(shè)置來確定通信模式、通信協(xié)議和校驗(yàn)位的選擇,。
主機(jī)模式程序功能是在主機(jī)模式下完成數(shù)據(jù)的收發(fā),。首先要對(duì)主機(jī)接收、發(fā)送初始化,,定義主機(jī)的地址,,對(duì)R/W位置位設(shè)置接收模式,對(duì)中斷寄存器I2CIE設(shè)置定義中斷使能,。主機(jī)接收,、發(fā)送初始化程序在每次數(shù)據(jù)收發(fā)時(shí)調(diào)用。通過對(duì)I2CRM,,I2CSTP,,I2CSTT三個(gè)寄存器位設(shè)置控制數(shù)據(jù)發(fā)送和接收,主機(jī)產(chǎn)生時(shí)鐘信號(hào),、起始和停止信號(hào),。
從機(jī)模式程序中數(shù)據(jù)收發(fā)初始化部分與主機(jī)模式程序相同,值得注意的是,,數(shù)據(jù)的收發(fā)過程是由I2C模塊自動(dòng)控制,,從機(jī)接收數(shù)據(jù)時(shí)隨主機(jī)產(chǎn)生的時(shí)鐘信號(hào)在總線上接收串行數(shù)據(jù),并對(duì)接收的數(shù)據(jù)應(yīng)答,。從機(jī)發(fā)送數(shù)據(jù)時(shí),,從機(jī)接收到主機(jī)發(fā)送的匹配的設(shè)備地址和主機(jī)的數(shù)據(jù)接收請(qǐng)求后,主機(jī)產(chǎn)生時(shí)鐘脈沖,,從機(jī)向總線發(fā)送數(shù)據(jù),。
中斷服務(wù)程序的功能是實(shí)現(xiàn)主機(jī)和從機(jī)的數(shù)據(jù)收發(fā),MSP430中I2C模塊的是多源中斷,,8個(gè)中斷源的中斷共用一個(gè)中斷向量,,中斷向量寄存器I2CIV的內(nèi)容決定當(dāng)前是哪個(gè)中斷標(biāo)志引起中斷事件。當(dāng)優(yōu)先級(jí)最高的中斷在寄存器I2CIV中產(chǎn)生對(duì)應(yīng)值時(shí),,由此判斷中斷源并進(jìn)入對(duì)應(yīng)的主機(jī)模式程序和從機(jī)模式程序中,,通過這2個(gè)程序中斷寄存器I2CIE使能操作,完成對(duì)應(yīng)的中斷事件,。從而實(shí)現(xiàn)主機(jī)和從機(jī)問數(shù)據(jù)的收發(fā),。
4.2 數(shù)據(jù)采集與處理
數(shù)據(jù)采集部分主要是從單片機(jī)通過A/D通道采集接入恒流源電路的待測(cè)電阻上產(chǎn)生的電壓,并進(jìn)行處理,。MSP430F169的A/D轉(zhuǎn)換具有單通道單次轉(zhuǎn)換,、單通道多次轉(zhuǎn)換、序列通道單次轉(zhuǎn)換,、序列通道多次轉(zhuǎn)換模式4種模式,??紤]到有8路采集,每個(gè)通道每次測(cè)量要采集256次數(shù)據(jù),,因此選用序列通道多次轉(zhuǎn)換模式,。A/D轉(zhuǎn)換電路通過模擬通道進(jìn)行多通道重復(fù)轉(zhuǎn)換,,使其采集流經(jīng)待測(cè)電阻的電壓數(shù)據(jù)不斷自動(dòng)更新,,轉(zhuǎn)換結(jié)果順序的存放在轉(zhuǎn)換存儲(chǔ)寄存器中。ADC12MCTLx寄存器的EOS位定義最后一個(gè)通道轉(zhuǎn)換完成后表示一次序列通道轉(zhuǎn)換完成,,觸發(fā)信號(hào)會(huì)觸發(fā)下次序列通道轉(zhuǎn)換,。數(shù)據(jù)的采樣時(shí)間間隔由定時(shí)器A控制,每次定時(shí)器A中斷到來時(shí)讀取A/D采集的數(shù)據(jù),,在讀取前停止A/D轉(zhuǎn)換,,讀取完畢后重啟A/D采集,當(dāng)數(shù)據(jù)采集完畢后設(shè)置標(biāo)志位通知其他程序已獲得新數(shù)據(jù),,通過全局變量來實(shí)現(xiàn)與其他處理程序數(shù)據(jù)交互,。采樣流程圖5所示。數(shù)據(jù)處理方面,,為了提高電阻測(cè)量的精度,,每個(gè)測(cè)量通道在每次測(cè)量時(shí)采集256組數(shù)據(jù),從機(jī)對(duì)采集的這256組數(shù)據(jù)進(jìn)行算術(shù)平均后再通過運(yùn)算得出每個(gè)通道所測(cè)量的電阻值,。
4.3 系統(tǒng)軟件實(shí)現(xiàn)
系統(tǒng)軟件采用模塊化設(shè)計(jì),,軟件子功能程序分割與硬件模塊電路相對(duì)應(yīng)。系統(tǒng)軟件包括主程序,、雙機(jī)通信子程序,、數(shù)據(jù)采集子程序、數(shù)據(jù)處理子程序,、串行通信子程序,、定時(shí)器中斷服務(wù)子程序、顯示子程序,、存儲(chǔ)及按鍵控制子程序,。限于篇幅只給出主程序流程圖,如圖6所示,。
5 結(jié)語
本文多路電阻測(cè)量系統(tǒng)利用I2C總線實(shí)現(xiàn)了MSP430系列單片機(jī)之間的全雙工通信,,解決了基于雙機(jī)通信系統(tǒng)的關(guān)鍵技術(shù),雙單片機(jī)的設(shè)計(jì)結(jié)構(gòu)靈活緊湊,,不但減輕了主處理器的負(fù)擔(dān),,而且提高了測(cè)量的精度、可靠性和實(shí)時(shí)性,,同時(shí)也是對(duì)雙處理器系統(tǒng)研究的具體實(shí)踐,。