1、RS485技術參數
- 兩線電壓差2~6V,兼容TTL電平
- 10m距離,最高速度35Mbps。1km距離,100Kbps
- 一般最多支持32個節點,某些特製芯片可達400
- 終端電阻:120R
- 通訊鏈路方式:總線型(如下圖1)
- 通訊方式:半雙工
2、硬件電路
如下圖2,R15、R16取值參考了原子哥的設計,RO、D1分別對應串口RX和TX,而中間的RE和DE則是(發送\接受)控制端,當端口爲1時,爲發送模式、爲0時,爲接受模式。
485協議中的,半雙工模式則要求一方爲發送模式,一方爲接收模式
3、程序邏輯
由於RS485不能像某些IIC器件一樣,設置硬件地址位(其實也是軟件設置的),所以我們需要使用一種方法來對該總線下的單片機設置地址,這裏推薦的做法是使用單片機模擬EEPROM,這樣就可以不用每次都去設置地址,修改方式可以爲複用下載器的CLK\DAT兩個端口,作爲串口1使用,如果不想讓用戶二次修改,可以在程序中判別該位置是否被讀寫過。
另外的一種方法就是使用撥碼開關,但此種辦法需要佔用IO,並不推薦。
由於RS485通訊模式類似廣播。所以需要在通訊過程中,建議做好數據包的校驗,添加報頭、報尾、校驗位、地址位等,可以在串口接收中斷中進行校驗,提高程序的執行效率(N76E003使用多箇中斷時,可能會出現速度變慢的問題)。
如果從機需要從接收器轉換爲發送器,直接翻轉控制RE、DE的IO口電平即可。最好每次發送或正確接收完了,就切換到另一種狀態下。