基于MSP430F169的多路電阻測量系統(tǒng)設(shè)計
4 軟件設(shè)計
4.1 雙機通信的實現(xiàn)
MSP430單片機的I2C模塊有主發(fā)送、主接收、從發(fā)送、從接收4種工作模式。雙機通信程序設(shè)計主要包括初始化程序、主機模式程序、從機模式程序和中斷服務(wù)程序四部分。
初始化程序包括設(shè)置單片機P3.1(SDA)和管腳P3.3(SCL)為為傳輸端口,端口方向。設(shè)置系統(tǒng)時鐘,系統(tǒng)時鐘由主機產(chǎn)生,選擇SMCLK為系統(tǒng)時鐘。I2C模塊初始化,將控制寄存器U0CTL的控制使能位(I2CEN)置1。U0CTL一個8位的寄存器。通過對該寄存器的設(shè)置來確定通信模式、通信協(xié)議和校驗位的選擇。
主機模式程序功能是在主機模式下完成數(shù)據(jù)的收發(fā)。首先要對主機接收、發(fā)送初始化,定義主機的地址,對R/W位置位設(shè)置接收模式,對中斷寄存器I2CIE設(shè)置定義中斷使能。主機接收、發(fā)送初始化程序在每次數(shù)據(jù)收發(fā)時調(diào)用。通過對I2CRM,I2CSTP,I2CSTT三個寄存器位設(shè)置控制數(shù)據(jù)發(fā)送和接收,主機產(chǎn)生時鐘信號、起始和停止信號。
從機模式程序中數(shù)據(jù)收發(fā)初始化部分與主機模式程序相同,值得注意的是,數(shù)據(jù)的收發(fā)過程是由I2C模塊自動控制,從機接收數(shù)據(jù)時隨主機產(chǎn)生的時鐘信號在總線上接收串行數(shù)據(jù),并對接收的數(shù)據(jù)應(yīng)答。從機發(fā)送數(shù)據(jù)時,從機接收到主機發(fā)送的匹配的設(shè)備地址和主機的數(shù)據(jù)接收請求后,主機產(chǎn)生時鐘脈沖,從機向總線發(fā)送數(shù)據(jù)。
中斷服務(wù)程序的功能是實現(xiàn)主機和從機的數(shù)據(jù)收發(fā),MSP430中I2C模塊的是多源中斷,8個中斷源的中斷共用一個中斷向量,中斷向量寄存器I2CIV的內(nèi)容決定當(dāng)前是哪個中斷標(biāo)志引起中斷事件。當(dāng)優(yōu)先級最高的中斷在寄存器I2CIV中產(chǎn)生對應(yīng)值時,由此判斷中斷源并進入對應(yīng)的主機模式程序和從機模式程序中,通過這2個程序中斷寄存器I2CIE使能操作,完成對應(yīng)的中斷事件。從而實現(xiàn)主機和從機問數(shù)據(jù)的收發(fā)。
4.2 數(shù)據(jù)采集與處理
數(shù)據(jù)采集部分主要是從單片機通過A/D通道采集接入恒流源電路的待測電阻上產(chǎn)生的電壓,并進行處理。MSP430F169的A/D轉(zhuǎn)換具有單通道單次轉(zhuǎn)換、單通道多次轉(zhuǎn)換、序列通道單次轉(zhuǎn)換、序列通道多次轉(zhuǎn)換模式4種模式??紤]到有8路采集,每個通道每次測量要采集256次數(shù)據(jù),因此選用序列通道多次轉(zhuǎn)換模式。A/D轉(zhuǎn)換電路通過模擬通道進行多通道重復(fù)轉(zhuǎn)換,使其采集流經(jīng)待測電阻的電壓數(shù)據(jù)不斷自動更新,轉(zhuǎn)換結(jié)果順序的存放在轉(zhuǎn)換存儲寄存器中。ADC12MCTLx寄存器的EOS位定義最后一個通道轉(zhuǎn)換完成后表示一次序列通道轉(zhuǎn)換完成,觸發(fā)信號會觸發(fā)下次序列通道轉(zhuǎn)換。數(shù)據(jù)的采樣時間間隔由定時器A控制,每次定時器A中斷到來時讀取A/D采集的數(shù)據(jù),在讀取前停止A/D轉(zhuǎn)換,讀取完畢后重啟A/D采集,當(dāng)數(shù)據(jù)采集完畢后設(shè)置標(biāo)志位通知其他程序已獲得新數(shù)據(jù),通過全局變量來實現(xiàn)與其他處理程序數(shù)據(jù)交互。采樣流程圖5所示。數(shù)據(jù)處理方面,為了提高電阻測量的精度,每個測量通道在每次測量時采集256組數(shù)據(jù),從機對采集的這256組數(shù)據(jù)進行算術(shù)平均后再通過運算得出每個通道所測量的電阻值。本文引用地址:http://m.butianyuan.cn/article/194357.htm
4.3 系統(tǒng)軟件實現(xiàn)
系統(tǒng)軟件采用模塊化設(shè)計,軟件子功能程序分割與硬件模塊電路相對應(yīng)。系統(tǒng)軟件包括主程序、雙機通信子程序、數(shù)據(jù)采集子程序、數(shù)據(jù)處理子程序、串行通信子程序、定時器中斷服務(wù)子程序、顯示子程序、存儲及按鍵控制子程序。限于篇幅只給出主程序流程圖,如圖6所示。
5 結(jié)語
本文多路電阻測量系統(tǒng)利用I2C總線實現(xiàn)了MSP430系列單片機之間的全雙工通信,解決了基于雙機通信系統(tǒng)的關(guān)鍵技術(shù),雙單片機的設(shè)計結(jié)構(gòu)靈活緊湊,不但減輕了主處理器的負(fù)擔(dān),而且提高了測量的精度、可靠性和實時性,同時也是對雙處理器系統(tǒng)研究的具體實踐。
評論