RK3568開發(fā)筆記(九):開發(fā)板buildroot固件調通RS485口,運行項目中RS485協(xié)議調試工
前言
??上一篇已經將Qt移植過去了,此時我們移植整體應用不是什么問題了,那么現在應用對外得接口使用了RS485接口,板載了一個RS485,于是需要調通,兼容這個開發(fā)板得RS485。
補充
??看起來很簡單,弄起來不懂得就是不懂,懂得雖然懂還得花時間去研究一下開發(fā)板特性,與廠家溝通下,改下代碼,得益于之前使用HI3559DV300做過類似得RS485,所以這次弄起來花費了不太麻煩。
調通RS485過程
步驟一:RS485調試設備與開發(fā)板連線
??先得有個RS485調試轉USB,這樣才能調試,界限,筆者得是綠聯得RS422/485口,如下圖:
??

??開發(fā)板485口原理圖:
??

??于是接線,對了,這個口子是2.54mm得4dip得dip接插件,這個做硬件得一般都會備點貨,屬于通用接口,當年各種都備貨了一點:
??

??剪一根的一半,然后按照加插件插入的順序接入,因為看到1和4引腳是聯通的地,萬用表測了對覆銅層通的(GND),直接1和4接到一起了,然后接A對應T/R+,B對應T/R-,如下圖:
??

??接入發(fā)開飯:
??

??另外一頭usb接入PC電腦,用串口打開即可(PS:485的usb模塊對于pc來說就是一路串口)。
步驟二:打開開發(fā)板RS485調試工具
??這里的話,因為開發(fā)板使用的buildroot,去打開RS485這個類似于串口的設備還真沒有,得益于筆者項目研發(fā)都會產出階段性調試工具,于是便有了如下工具(PS:官方有個RS485調試Qt的demo,讀者可以使用官方的):
??

??(對了,這里還有相關工具的交叉編譯移植,其實跟x86下編譯類似,不贅述了,不懂得可以查看《RK3568開發(fā)筆記(八):開發(fā)板燒寫buildroot固件(支持hdmi屏),搭建Qt交叉編譯開發(fā)環(huán)境,編譯一個Demo,目標板運行Demo測試》得demo編譯過程,其實是一樣的。
步驟三:調試工具輪詢接收測試485口
??因為調試工具是被動接收485數據的,所以pc端打開485之后,1s發(fā)送一次,每一個端口依次打開,測試485口試哪個口。
??

??然后,結果試每個口都不行,這時候就懷疑:
是否試AB的正負線接反了,可以直接交換,測一輪,也可以核對一次。
Rs485口是否有特殊的,需要自行拉上拉下(這里得到官方驗證,默認是拉上的,只能發(fā)出不接收)
(PS:通過客服技術支持,得到口為ttyS7,且需要上下拉,默認是上拉,只發(fā)送)
??于是加了一個按鈕,直接發(fā)送出去測試一下:
??

??PC端收到了發(fā)送過來的消息:
??

??確認了,是需要上下拉,這時候查閱官方文檔,并沒有關于上下拉的描述,只能通過官方提供的RS485的Qtdemo來提取了。
步驟四:提取官方QT調試RS485的demo中的關鍵上下拉邏輯代碼
??

??

??直接摳代碼,一般是通過echo輸入到一個設備文件、file打開設備文件,或者ioctl的方式,這三種方式稍微提一下區(qū)別(何種方式看開發(fā)板方案上是怎么提供的):
echo方式:cmd的方式,程序中用system,qt中可以用QProcess,這個方式效率相對有點低,不適合頻發(fā)發(fā)送接收的狀態(tài)
file方式:file方式是文件方式,兼容linux系統(tǒng)和qt開發(fā)最合適的方式,當作文件寫入控制,很好的處理了環(huán)境問題,效率比echo高,比ioctl低,但是5ms足夠幾百字節(jié)的完成切換了(具體要按照實際情況發(fā)送調)。
ioctl方式:ioctl的方式在qt中不是很好,在某些情況下,qt根本不需要接觸到sysroot下面的依賴庫,直接qt交叉編譯自己的庫就可以,本開發(fā)板是已經融合好了??(PS:像海思這種,就只能將qt反向弄到sample里面去,因為環(huán)境都是makefile配置的)
??以上三種各有優(yōu)缺點,但是其實選擇權不在我們,而在主板方案提供商,所以拿過來用,能用就行了,別死磕。
??提取代碼如下:
??

??

步驟五:改造我們的串口代碼
??添加一個宏定義:
??

??在串口設備管理模塊添加相關代碼.
??在打開的時候,添加代碼:
??

??在發(fā)送的時候,添加代碼:
??

??在關閉的時候,添加代碼:
??

??改在完以后,再交叉編譯協(xié)議調試工具過去測試。
步驟六:調試解析成功
??在目標板上打開應用,打開對應的串口,然后實現收發(fā)成功:
??

小結
??RS485調試通了,大項目中的調試工具也通了,那么剩下的就是移植應用了,移植應用中,遇到了新的問題(做嵌入式,輪上都是沒問題,實際上問題一個又一個,運氣好不麻煩,運氣不好卡個一兩天,麻煩的一兩周都常有的事)