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