RS-485标準接口是單片機系統常用的一種串行總線之一。采用半雙工通信方式,它文成TTL電平轉換為RS-485電平的功能。
以MAX485晶片為例,其結構和引腳都非常簡單,内部含有一個驅動器和接收器。MAX485的封裝有DIP、SO和uMAX三種。
DIP封裝如下
管腳的功能如下:
R0:接收器輸出端,若A比B大200mV,RO為高(接收為高電平);反之則接收為低電平。
RE: 接收器使能端,RE為低時,RO有效(接收有效);RE為高,RO呈高阻狀态。
DE:驅動器使能端,DE=1,DI有效(輸出有效);若DE=0,則DI呈高阻态。
DI:驅動輸入端。DI=0,有A=0,B=1; DI=1,則A=1,B=0。
GND:接地
A:同相接收器輸入和同相驅動器輸出。
B:反相接收器輸入和反相驅動器輸出
VCC:電源端,一般接3.3V(5V)。
以下為典型的485工作電路,平衡電阻Rp通常取100~300歐姆。
RS485一種比較常用的現場總線,運用領域比較廣泛。
曾經寫好的485程式,過段時間貌似好像又不行了,似乎沒有改哪裡。程式莫名其妙被更改了,可能麼 ? 答案是NO。
那麼應該是硬體上有問題,就要進行485功能調試,排除故障。假設硬體設計上沒有問題。
出現過故障:
1、485通信能發不能收?
2、485發送不正常?
3. 485通信亂碼(非波特率問題)
工具:電腦(USB轉序列槽TTL再轉RS485) 闆上(UART口/RS485)
總的來說一個485程式經過以下幾步調試應該OK。
1、确定闆上UART與電腦通信正常(不經過485,證明MCU和電腦通信正常)。
2、切換各種波特率,UART與電腦通信
3、擦除闆上程式,使用電腦USB-->TTL->RS485->RS485->TTL與電腦進行通信(若通信不正常,則一定是RS485部份存在問題,實作電腦通過兩個485通信)
4、切換各波特率再與電腦進行通信
5、最後編寫相應程式,采集485裝置資料(與裝置通信時,通常可能出現采集資料無響應,這時一般需要考慮兩者的波特率是否比對及是否存線上路幹擾問題)
485通信能發不能收:使能RE/DE始終置1,
485發送:使能RE/DE始終清零。
總結——一個IC器件的硬體調試
1、熟悉IC器件的DataSheet,每個管腳在不同功能是的不同配置,以及不同功能的時序圖,保證軟體邏輯沒有問題。
2、确定各管腳有沒有虛焊、短路、短路,特别是電源和地不能短路。在上電後,確定各管腳輸入沒有問題。可以用無水酒精把闆子擦洗一般,因為在調試過程中某些管腳總會搞進點污穢,引起短路,這個方法可以解決大約40%闆子突然罷工的問題(确認是闆上問題)。
3.在2的基礎上如直接輸出有問題,則很大的機率是IC器件挂了(一般很皮實的)
4.經過接口線外接器件時,外接器件收到有問題,很有可能是接口線問題,一般通說一步一步沿着信号傳輸的方向查找問題。