<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于STC11F02E的RS232/RS485轉換器設計

          基于STC11F02E的RS232/RS485轉換器設計

          作者: 時間:2010-03-24 來源:網絡 收藏


          轉換器的程序設計和設計

          轉換器的程序設計流程

          轉換器的整個程序的總體流程圖如圖5所示,主要包括程序初始化模塊、主程序模塊和串行口中斷服務模塊這三個部分。



          圖5 轉換器程序流程圖

          程序初始化模塊主要完成一些寄存器的初始化工作,包括看門狗設置、設定主機數據接收結束標志位MDE和從機數據接收結束標志位SDE、初始化串行口的連接引腳、初始化串行口設置寄存器和通信波特率、開啟串口中斷和總中斷。主程序模塊主要任務是完成串行口連接引腳之間的有序切換以及數據的發(fā)送。串行口中斷服務模塊的功能是完成數據的接收并置位標志位MDE和SDE。

          由于每次通信結束之后單片機的UART模塊的引腳總是和主機相連的,所以每次通信都必須是由主機發(fā)起的,從機總是處于接收狀態(tài),只有主機尋址到從機時,從機才可向主機發(fā)送數據。

          RS485總線設計

          為了保證數據傳輸的可靠性,必須規(guī)定好RS485總線主從式通信的。

          該轉換器采用的通信協(xié)議在傳送每個字節(jié)數據時共發(fā)送的數據位有10位和11位兩種,具體采用哪種通信方式可以人為進行設置。通信數據以信息幀的格式發(fā)送信息,每一信息幀由多個字節(jié)數據構成,包含地址域、功能域、數據域和CRC校驗域這4個部分,如表1所示。其中地址域用于選擇要進行通信的從機地址;功能域用于指示要執(zhí)行的具體操作;數據域包含所要傳輸的數據;CRC校驗域用于存放產生的CRC差錯校驗碼,保證數據傳輸的正確性。

          通信協(xié)議中規(guī)定的通信波特率有2400 bps 、4800 bps 、9600 bps 、19200 bps、38400bps和115200bps六種波特率,默認波特率為9600bps,可以根據實際需要通過軟件設定。通信方式和波特率對應的設置參數存于單片機自帶的EEPROM存儲器中。

          通信協(xié)議中定義的功能碼及其功能如表2所示。將來如果需要擴展功能的話,還可以通過在應用程序中增加相應的功能碼來增加系統(tǒng)對應的功能,使得系統(tǒng)功能擴展更加靈活。

          表1 信息幀標準結構


          表2 功能


          轉換器的試驗結果

          為了方便轉換器的調試,這里采用10位的通信方式,即1位起始位、8位數據位和1位停止位。其中上位機為PC機,通信接口為RS232接口;下位機是以C8051F020單片機為核心設計的水泵綜合參數測試平臺的主控電路板,通信接口為RS485接口。調試軟件使用串口調試助手。上位機和下位機的連接就是采用上面已經設計好的RS232/RS485轉換器。這里設置從機地址為01H,采用前面設置的功能碼進行調試。具體的調試結果如圖6所示。

          圖6中第1行豎線左邊的數據是PC機發(fā)送03H功能碼讀取從機外部數據存儲器2345H地址單元開始的16個單元中的數據時從機返回的數據。主機發(fā)送的數據幀(16進制數)為:

          01 03 23 45 10 db 12

          圖6中第1行豎線左邊部分第1字節(jié)代表從機地址,第2字節(jié)代表從機返回的功能碼,第3字節(jié)為從機發(fā)給主機的數據個數,后面的16個字節(jié)為所讀取的單元的數據,最后2個字節(jié)為CRC16校驗碼。重復發(fā)送相同功能碼時可以看到返回的數據是一樣的,說明通信正常。

          圖6中第2行豎線右邊的數據是PC機發(fā)送10H功能碼對從機外部數據存儲器2345H地址單元開始的16個單元寫入數據時從機返回的數據。主機發(fā)送的數據幀(16進制數)為:

          01 10 23 45 10 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff a7 21

          圖6中第2行豎線右邊部分第1字節(jié)代表從機地址,第2字節(jié)代表從機返回的功能碼,第3和第4字節(jié)分別為外部數據存儲器地址的高字節(jié)和低字節(jié),第5字節(jié)代表寫入的數據個數,最后2個字節(jié)為CRC16校驗碼。重復發(fā)送相同功能碼時可以看到返回的數據是一樣的,說明此時通信也正常。在發(fā)送10H功能碼之后再發(fā)送03H功能碼進行檢查,可以看出從機返回的外部數據存儲器2345H地址單元開始的16個單元中的數據和剛才寫入的數據是相同的,由此可知對應功能碼的操作正確,而且通信也正常。



          圖6 采用串口調試助手對設計的轉換器進行調試的結果

          從上面的試驗可以看出該轉換器可以實現PC機和RS485總線的正常通信,說明所設計的轉換器符合預期的要求。

          結論

          本文利用單片機STC11F02E的串口引腳可以在P3.0、P3.1引腳和P1.6、P1.7引腳之間隨意切換的特性,設計了一個簡單實用的RS232/RS485轉換器。該轉換器結構非常簡單,只用到了三片常用集成芯片外加少量外圍器件便可完成總體設計,極大地減小了體積和成本,而且轉換器的電源還可以通過PC機的USB接口提供的5V電源來供電,可以省去另外配置電源的麻煩。

          該轉換器已成功應用在所設計的水泵綜合參數測試平臺上,實際試驗結果表明該轉換器運行穩(wěn)定可靠,可應用于由PC機作為主機的RS485總線的主從式半雙工通信系統(tǒng)當中。

          上一頁 1 2 下一頁

          關鍵詞: 通信協(xié)議

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();