基于STC10F04EX的多串口數據收發(fā)系統
由于連接的不同串口設備的通信參數不完全相同,STC10F04EX必須根據設備指向動(dòng)態(tài)調整串口參數以適合外部串口設備。
顯示芯片7279A可以驅動(dòng)8位共陰LED數碼管并可采集64個(gè)鍵盤(pán)位置信號。該系統通過(guò)數碼管顯示工作狀態(tài)(收發(fā),等待,時(shí)間,通道號,參數等);通過(guò)鍵盤(pán)不僅可以設置“多串口數據收發(fā)控制系統”自身參數和調節自身狀態(tài),還可修改/設置所連接的外部設備的傳送參數。CPU通過(guò)4個(gè)I/O引腳與7279A的4條控制線(xiàn)CS、DATA、CLK、KEY連接,就可驅動(dòng)8位數碼管并對按鍵進(jìn)行監控。為了響應及時(shí),采用中斷方式響應按鍵狀態(tài),因此將KEY連接到P3.2(int0)上。
無(wú)線(xiàn)收發(fā)模塊,嵌入高性能射頻芯片,采用高效循環(huán)交織糾檢錯編碼,發(fā)送距離可達3 000 m。模塊具有TTL電平的UART口,因此可以很方便地與單片機的一個(gè)擴展的UART連接。向無(wú)線(xiàn)收發(fā)模塊寫(xiě)入和讀出數據,與一般的串口操作基本一樣。無(wú)線(xiàn)收發(fā)模塊頻點(diǎn)、空中速率、本地串口速率、校驗方式等參數可以在線(xiàn)設置或通過(guò)廠(chǎng)家提供的程序進(jìn)行設置。
系統中無(wú)線(xiàn)收發(fā)模塊本地串口通信參數設為(9 600,8,N,1),數據被調制在434 MHz進(jìn)行發(fā)送和接收,空中速率9 600 b/s,發(fā)射功率100 mW。
該無(wú)線(xiàn)收發(fā)模塊,收到數據后通常延時(shí)幾十到幾百毫秒才發(fā)送,所帶緩存256 B。若本地串口速率大于等于空中速率,則存在數據流量問(wèn)題,可能會(huì )出現數據溢出導致丟失現象。因此若傳送數據超過(guò)256 B,要進(jìn)行數據分割,插入等待周期,采用分次發(fā)送的方式以避免數據丟失。本系統所連接的光譜儀數據量較大,因此單片機接收光譜儀數據后再經(jīng)無(wú)線(xiàn)轉發(fā),要采用分段接收/轉發(fā)方式,每次的數據量要小于256 B,多次重復,直至全部數據。
3 軟件設計
3.1 有關(guān)寄存器的說(shuō)明
程序運行時(shí)首先進(jìn)行初始化設置,其中涉及到幾個(gè)比較特別的寄存器,其定義不同于其他51系列的單片機。
寄存器AUXR,地址8EH。關(guān)系到獨立波特率發(fā)生器,STC10F04EX既可以采用定時(shí)器1作為波特率發(fā)生器,又可以采用獨立波特率發(fā)生器以釋放定時(shí)器1,見(jiàn)表3說(shuō)明。
寄存器AUXR1,地址A2H。其中的D7位關(guān)系到單片機內在的串口切換。例如:
3.2 數據存儲及轉發(fā)
STC10F04EX單片機,內部數據存儲器為256 B,片上擴展的外部數據存儲器為256 B,共計512 B,數據空間緊湊。程序運行中的一些變量需要占用一部分數據空間,因此只能開(kāi)辟約220個(gè)字節作為緩存空間,暫存接收到的來(lái)自串口設備的數據。如果一次接收的數據量小于緩存空間,則不會(huì )導致數據溢出;如果外部設備需傳送的數據量較大,則必須與外部設備建立聯(lián)絡(luò )控制發(fā)送,以使每次傳來(lái)的數據小于系統緩存,避免數據丟失現象的發(fā)生。
評論