某光電跟蹤產品雙DSP系統(tǒng)RS422通信設計
1.1 DSP上的RS 422通信程序設計
DSP上的RS 422通信程序是一種有限狀態(tài)機,它利用上層協議將位流進行傳輸,具體設計如下:
1.1.1 位流的形成
發(fā)送過程:RS 422是四線制的差分電平通信標準,在本系統(tǒng)中,TMS320C6201B的McBSP1用作通用I/O口,將MeBSP1的7根本來用作同步通信用的數據與控制線,現設置為通用I/O線。
通過將TMS320C6201B的McBSP1接口的DX引腳置高與置低實現發(fā)送一位位的數據流,通過讀取RX引腳上的電平信號來接收數據位流。位流的速度與PC機上接收與發(fā)送流的速度一致。位流的格式遵循標準異步通信協議(UART),本系統(tǒng)中,設定為1位起始位,8位數據位,2位停止位。由于TMS320C6201B上沒有帶UART通信口,只能用軟件通過通用I/O引腳模仿UART。位流的節(jié)奏由TMS320C6201B的定時器0定時周期控制。圖2所示為UART通用異步通信協議。本文引用地址:http://butianyuan.cn/article/155937.htm
接收過程:RS 422傳輸線Rx+、Rx-經過MAX490ESA422接口芯片后,變成5 V CMOS電平信號Rx。Rx接至TMS320C6201B的兩個地方,一是TMS320C6201B的McBSP1的Rx腳,另外還同時接至TMS320C6201B的INT5腳。接收的過程如下:一旦PC機發(fā)出一個8位數據,PC機首先要發(fā)送電平為低的起始位,這時將引起Rx腳由高到低的跳變,TMS320C6201B的INT5腳將感受到這一電平的跳變,這將引發(fā)TMS320C6201B的一次電平中斷,用來提示TMS320C6201B,請準備接收PC機上的數據。在INT5的中斷處理程序中,首先關掉INT5腳電平中斷,以防后來還沒有接收完8位的數據位流上的電平變化再次引發(fā)不希望出現的中斷,然后退出中斷。TIMER0開始計數到給定的周期時,引起了TIMER0的定時中斷,TIMER0判斷是否收滿8位,如果沒有,則讀取McBSP1腳上的Rx信號,將其移入到接收緩沖區(qū);如果接收滿了8位,則根據接收緩沖區(qū)接收到的字的意義以及DSP其他參數做出處理,當然,收滿8位,TIMER0定時將打開INT5中斷,復原系統(tǒng)其他狀態(tài),為下一次接收完整數據做準備。這樣就完整地接收到了PC機上的一串完整的8位數據。
1.1.2 上層通信協議
位流形成后必須能識別出位流中包含的意義,或者建立一種DSP與PC之間的通信協議或通信狀態(tài)機,確保DSP能夠識別出PC機發(fā)出的命令字,同時PC機也能正確接收包含著特別含義的位流。
該通信協議要實現以下功能:
(1)確保DSP與PC機能正確地握手。當握手不成功時,要有相應的錯誤處理機制;當握手不成功的次數太多時,必須停止握手,提示操作人員做相應的處理。
(2)在握手成功后,DSP能夠根據PC發(fā)出的命令,做出相應的響應。
(3)協議應該簡單,不太復雜,擴展容易。
為了達到以上設計目的,本系統(tǒng)在DSP上設計了如圖3所示的RS 422通信狀態(tài)機。
其基本過程是:當DSP啟動后,進入主程序,首先將通信狀態(tài)機置于準備接收PC機握手碼狀態(tài),一旦收到PC機發(fā)出的8位數據,判斷是否是8位握手碼,如果是則將通信狀態(tài)機置于發(fā)送握手碼狀態(tài),如果握手碼接收錯誤,則發(fā)0x55,否則發(fā)0xAA。如果是正確的握手碼,則將通信狀態(tài)機置于準備接收PC機命令態(tài)。下一步,通信狀態(tài)機等待接收PC機發(fā)出的命令,一旦收到8位數據,則認為是PC機發(fā)出的命令,并根據PC發(fā)出的命令,將通信狀態(tài)機調整到PC機要求的工作狀態(tài),然后執(zhí)行PC機要求的操作,如傳送AD原始數據與相關結果,等待接受PC機發(fā)出2187的程序數據等。當執(zhí)行完PC機的命令,調整通信狀態(tài)機回到初始等待PC發(fā)出握手測試碼狀態(tài),為新一輪的通信準備好條件。
評論