Hello TI
在 serial.h 裡的 struct serial_rs485
delay_rts_before_send
delay_rts_after_send
請問這是用來幹嘛的? 為何需要這些? 希望能簡易說明。 謝謝。
Steven Liu1:
这个应该是流控信号的控制,建议你google一下485的RTS,CTS
Bernie Chen:
回复 Steven Liu1:
Hi Steven
https://github.com/gn00618777/am335x_serial_port_patch/blob/master/omap_serial_add_rs485_flag
上面是我的github,有關於 omap_serial.c 加入 RS485 功能的 patch。目的是要從板子傳送 data 時, RTS 被拉 high ,不傳送時RTS自動拉 low ,我在 baud rate 9600 時將data傳送到電腦,偶爾出現訊息出現雜訊狀態,但是如果用115200,幾乎每次傳送一個字元,他都是雜訊。看了波型,發現每次 data 傳送時把 RTS 拉 high ,TX的波型沒有整個被涵蓋在 RTS 為 high 的區間裡面,TX前端在區間外,所以才造成雜產生。 現在我看到 delay_rts_before_send 和 delay_rts_after_send 這兩個,不知道能不能改善我這個 driver 寫法? 查詢了很多資料,網路上根本都只是照字面上翻譯,希望能有圖形解說更好,謝謝了….
Bernie Chen:
回复 Bernie Chen:
Hi Steven
http://godspeedlee.myweb.hinet.net/modbus/0/ 我參考了這個
認為 delay_rts_after_send 的用意是 – 當要傳送 data 時,對方可能暫時無法接收訊息,但是 RTS 不能馬上被拉 low ,所以要加個 delay。
至於 delay_rts_before_send 也是類似道理,那這樣我的問題似乎就不是能靠這兩個來解決了….
謝謝
leo chen:
回复 Bernie Chen:
这个要看看你的硬件电路了
你的rs485方向控制是怎么接的
Bernie Chen:
回复 leo chen:
Hi Leo
TTL
TX————>
RX————> SP339E_40_QFN
RTS———-> (RS485 mode)
這是 baud rate 9600 data 有在 RTS 被拉 high 的區間,所以 data 可以從板子傳送出去
這是 baud rate 115200 , data 波行前端沒包在 RTS high 區間,導致訊息 lost 掉,電腦端看不到
我想要 data 能夠 delay 或是還有甚麼方式能夠解決? 謝謝。
Segmentation fault:
回复 Bernie Chen:
您好,我目前调试485也是遇到同样的问题,请问您解决了吗,能不能分享下解决思路或者方法?谢谢