新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 某光電跟蹤產品雙DSP系統RS422通信設計

        某光電跟蹤產品雙DSP系統RS422通信設計

        作者: 時間:2011-08-09 來源:網絡 收藏

        1.1 上的RS 422程序
        上的RS 422程序是一種有限狀態機,它利用上層協議將位流進行傳輸,具體如下:
        1.1.1 位流的形成
        發送過程:RS 422是四線制的差分電平標準,在本中,TMS320C6201B的McBSP1用作通用I/O口,將MeBSP1的7根本來用作同步通信用的數據與控制線,現設置為通用I/O線。
        通過將TMS320C6201B的McBSP1接口的DX引腳置高與置低實現發送一位位的數據流,通過讀取RX引腳上的電平信號來接收數據位流。位流的速度與PC機上接收與發送流的速度一致。位流的格式遵循標準異步通信協議(UART),本中,設定為1位起始位,8位數據位,2位停止位。由于TMS320C6201B上沒有帶UART通信口,只能用軟件通過通用I/O引腳模仿UART。位流的節奏由TMS320C6201B的定時器0定時周期控制。圖2所示為UART通用異步通信協議。

        本文引用地址:http://www.104case.com/article/155937.htm

        b.jpg


        接收過程:RS 422傳輸線Rx+、Rx-經過MAX490ESA422接口芯片后,變成5 V CMOS電平信號Rx。Rx接至TMS320C6201B的兩個地方,一是TMS320C6201B的McBSP1的Rx腳,另外還同時接至TMS320C6201B的INT5腳。接收的過程如下:一旦PC機發出一個8位數據,PC機首先要發送電平為低的起始位,這時將引起Rx腳由高到低的跳變,TMS320C6201B的INT5腳將感受到這一電平的跳變,這將引發TMS320C6201B的一次電平中斷,用來提示TMS320C6201B,請準備接收PC機上的數據。在INT5的中斷處理程序中,首先關掉INT5腳電平中斷,以防后來還沒有接收完8位的數據位流上的電平變化再次引發不希望出現的中斷,然后退出中斷。TIMER0開始計數到給定的周期時,引起了TIMER0的定時中斷,TIMER0判斷是否收滿8位,如果沒有,則讀取McBSP1腳上的Rx信號,將其移入到接收緩沖區;如果接收滿了8位,則根據接收緩沖區接收到的字的意義以及其他參數做出處理,當然,收滿8位,TIMER0定時將打開INT5中斷,復原其他狀態,為下一次接收完整數據做準備。這樣就完整地接收到了PC機上的一串完整的8位數據。
        1.1.2 上層通信協議
        位流形成后必須能識別出位流中包含的意義,或者建立一種DSP與PC之間的通信協議或通信狀態機,確保DSP能夠識別出PC機發出的命令字,同時PC機也能正確接收包含著特別含義的位流。
        該通信協議要實現以下功能:
        (1)確保DSP與PC機能正確地握手。當握手不成功時,要有相應的錯誤處理機制;當握手不成功的次數太多時,必須停止握手,提示操作人員做相應的處理。
        (2)在握手成功后,DSP能夠根據PC發出的命令,做出相應的響應。
        (3)協議應該簡單,不太復雜,擴展容易。
        為了達到以上目的,本系統在DSP上設計了如圖3所示的RS 422通信狀態機。

        c.jpg


        其基本過程是:當DSP啟動后,進入主程序,首先將通信狀態機置于準備接收PC機握手碼狀態,一旦收到PC機發出的8位數據,判斷是否是8位握手碼,如果是則將通信狀態機置于發送握手碼狀態,如果握手碼接收錯誤,則發0x55,否則發0xAA。如果是正確的握手碼,則將通信狀態機置于準備接收PC機命令態。下一步,通信狀態機等待接收PC機發出的命令,一旦收到8位數據,則認為是PC機發出的命令,并根據PC發出的命令,將通信狀態機調整到PC機要求的工作狀態,然后執行PC機要求的操作,如傳送AD原始數據與相關結果,等待接受PC機發出2187的程序數據等。當執行完PC機的命令,調整通信狀態機回到初始等待PC發出握手測試碼狀態,為新一輪的通信準備好條件。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁海县| 潍坊市| 富宁县| 南木林县| 神农架林区| 郑州市| 武鸣县| 萨迦县| 台南市| 汉阴县| 原阳县| 怀远县| 张家口市| 政和县| 科技| 清水县| 邳州市| 图片| 漳平市| 丹巴县| 福清市| 札达县| 长宁区| 襄樊市| 太白县| 娄烦县| 福清市| 信阳市| 浪卡子县| 朝阳县| 磴口县| 宁津县| 宁安市| 莱州市| 宜春市| 富锦市| 南宫市| 邯郸市| 资阳市| 南城县| 湟源县|