1. 程式人生 > >uart和rs232/rs485的關係及linux下232和485程式設計的區別

uart和rs232/rs485的關係及linux下232和485程式設計的區別

     有人會問,這些設定裡,看不到對RS232或者RS485的區分啊,對於這兩種協議沒有程式設計的區別嗎?      其實,看了我這篇講UART和RS232和RS485關係的文章的 話,就會理解:RS232和RS485定義是電氣特性,影響的是資料線上路上的傳輸過程,RS232和RS485的收發器通過UART才能被CPU訪問, 所以,只要控制了UART,就可以控制串列埠的傳輸方式,而所謂的程式設計其實就是對UART程式設計,所以RS232個RS485從程式設計師視角是不可見的。      “那你就直接說RS485和RS232程式設計上沒有區別不就完了?”       問題是,實際總比理論複雜,這裡有一種例外:       RS232用兩根線實現全雙工,兩根線各做各的,互不影響,可以同時進行;RS485雖然可以用四根線實現全雙工,但是實際應用中比較少見,更常見的是隻用兩根線實現半雙工,這樣一來,就涉及到“收狀態”和“髮狀態”的切換,這一切換又涉及兩種情況:       1、驅動程式中已經含有對半雙工情況下的接受切換,驅動程式會根據你讀或寫的動作,自動進行切換。這種情況下,RS485的程式設計就與RS232完全沒有區別。       2、驅動程式不帶自動切換,此時,為了完成切換,必須使用額外的GPIO連線RS485收發模組的接受使能端,在接受、傳送資料之前,首先對使能端置位,使之處於正確的“接收”或“傳送”狀態。