基于嵌入式系統的實(shí)時(shí)控制模塊設計與實(shí)現
2 軟件設計與實(shí)現
2.1 主程序框架
主程序流程圖如圖4所示。本文引用地址:http://dyxdggzs.com/article/148314.htm
主程序是順序結構,較為簡(jiǎn)單。主要分兩部分:一是對系統各部分進(jìn)行初始化設置,使其能夠工作在正常狀態(tài)。二是正常工作循環(huán)狀態(tài),當收到上位機的控制命令時(shí),即進(jìn)行相應的操作,無(wú)命令時(shí)則等待。對于嵌入式程序而言,無(wú)限循環(huán)是必要的。
2.2 串口通信程序
串口通信程序實(shí)現與上位機的通信功能。具體操作中使用一個(gè)循環(huán)隊列存放接收到的上位機命令,分別用頭指針和尾指針指向隊頭和隊尾,將各命令字節取出,進(jìn)行相應操作。命令執行完畢(隊列取空),清標志位,等待新命令。如圖5所示。
2.3 SPI通信程序
C51采用SPI主模式與AD7707進(jìn)行通信。主模式寫(xiě)AD7707較為簡(jiǎn)單,單片機先寫(xiě)1 Byte的配置數據給AD7707,其會(huì )自動(dòng)將該數據放入自身的通信寄存器,隨后AD7707根據該配置值確定下一步要寫(xiě)的寄存器及數據大小,再將單片機隨后輸入的數據放入指定位置。C8051F120發(fā)數據前,先根據SPICN寄存器的TXBMT位的值判斷是否能夠發(fā)送數據,再向自身的SPIDAT寄存器寫(xiě)數據即可,硬件會(huì )自動(dòng)將數據發(fā)出。
主模式讀AD7707較為困難。當C51已設置AD7707的通信寄存器,表明下一步操作是讀AD7707的某個(gè)寄存器值后,C51向SPIDAT寫(xiě)任意值,之后SPI數據線(xiàn)(MOSI)上會(huì )串行移出數據,同時(shí)時(shí)鐘線(xiàn)上產(chǎn)生串行時(shí)鐘,從設備(AD7707)收到時(shí)鐘,將預備的數據送到MISO線(xiàn)上交給C51,同時(shí)不采納主設備發(fā)送的任意值。C51將發(fā)送的串行數據放在移位寄存器中,當最后一位收到后即移入收緩沖器,再讀SPIDAT便可讀出數據。
2.4 其他軟件模塊
其他軟件模塊均是根據各部分硬件的具體要求,通過(guò)向所分配的對應地址空間按序發(fā)送所需數據來(lái)實(shí)現相關(guān)功能。
3 結束語(yǔ)
文中提出以C51單片機C8051F120為核心控制芯片的嵌入式系統,已成功應用于某通信測試儀器中,陔系統通過(guò)中斷及查詢(xún)等方式較好地實(shí)現了對整機的實(shí)時(shí)控制功能。
評論