【Quectel移遠(yuǎn)展銳平臺(tái)5G模組RX500U/RG200U使用指南(二)-USB/TTL的使用】

USB調(diào)試
展銳5G模組的USB接口有3個(gè)功能:
USB轉(zhuǎn)串口用于AT控制
? ? ? ?USB轉(zhuǎn)串口跟4G模塊是一樣的,都會(huì)虛擬出多個(gè)USB串口設(shè)備,Windows下是Quectel AT的串口設(shè)備,只需要安裝原廠提供的USB驅(qū)動(dòng)程序即可,安裝成功后,用串口調(diào)試工具打開(kāi)即可與模組進(jìn)行通訊。


————————————————
Linux下會(huì)有些麻煩,因?yàn)樵谀壳暗腖inux內(nèi)核中,usbserial模塊中,沒(méi)有添加移遠(yuǎn)展銳模組的VID和PID,所以無(wú)法識(shí)別設(shè)備,也就枚舉不出來(lái)ttyUSBx設(shè)備,一種方式是按照原廠的移植文檔修改內(nèi)核option.c的源碼,更新usbsserial庫(kù)。
如是是臨時(shí)手動(dòng)調(diào)試,也可以手動(dòng)寫(xiě)入模組的VID,PID去加載模組驅(qū)動(dòng),不過(guò)重啟設(shè)備后還需要重新手動(dòng)加贊。
首先確保usbserial.ko已經(jīng)正確加載:lsmod " grep usbserial*
若沒(méi)有查詢(xún)到usbserial,執(zhí)行如下命令以加載usbserial驅(qū)動(dòng)。
輸入 sudo /sbin/modprobe usbserial
加載成功后,/sys/bus目錄下會(huì)出現(xiàn)usb-serial目錄。
如果發(fā)現(xiàn)usbserial.ko都沒(méi)有找到,說(shuō)明你的Linux就沒(méi)有編譯這個(gè)驅(qū)動(dòng),請(qǐng)配置Linux內(nèi)核并重新編譯,此操作需要用戶根據(jù)自己使用的Linux環(huán)境自行編譯。
寫(xiě)入模組vid/pid:
sudo echo 2c7c 0900 > /sys/bus/usb-serial/drivers/generic/new_id
如果顯示沒(méi)有權(quán)限,可修改new_id文件的權(quán)限:
sudo chmod 666 /sys/bus/usb-serial/drivers/generic/new_id
寫(xiě)入vid和pid之后,在/dev下會(huì)出現(xiàn)ttyUSB0~3的串口設(shè)備,ttyUSB2為模組的AT口,可以直接通過(guò)串口工具打開(kāi)該串口設(shè)備進(jìn)行AT命令操作。
————————————————


其它的如樹(shù)莓派等設(shè)備都是一樣的方法。
USB轉(zhuǎn)網(wǎng)卡用于數(shù)據(jù)傳輸
? ? ? ? USB網(wǎng)卡分兩種,Windows下使用RNDIS驅(qū)動(dòng),Linux下使用NCM驅(qū)動(dòng)。
? ? ? ? Windows下直接安裝原廠驅(qū)動(dòng)程序就可以,Linux默認(rèn)支持NCM驅(qū)動(dòng),通過(guò)ifconfig可以查看到對(duì)應(yīng)網(wǎng)卡設(shè)備。
? ? ? ? 這兩種模式可以通過(guò)AT命令進(jìn)行切換:
? ? ? ? ? ? ? ? AT+QCFG="usbnet",3 (RNDIS驅(qū)動(dòng))
? ? ? ? ? ? ? ? AT+QCFG=”usbnet",5(NCM驅(qū)動(dòng))
? ? ? ? 配置完成后需要重啟模塊。
?ADB用于調(diào)試
? ? ? ? ?展銳的5G模組支持adb調(diào)試,通過(guò)adb shell直接進(jìn)入模組的后臺(tái),雖然大部分時(shí)候不會(huì)用到,但是對(duì)于需要從模組中導(dǎo)出日志,或者基于模組進(jìn)行二次開(kāi)發(fā)的,adb功能還是比較有用的。
? ? ? ? ?AT+QCFG="usbcfg",0x2c7c,0x0900,1,1,1,1,1,1,1
此命令開(kāi)啟模組的ADB功能,開(kāi)啟后,需要重啟模組生效。
————————————————

adb shell上去后,就進(jìn)入了模組的后臺(tái)。
在這里說(shuō)明一下,模組里面跑的就是一個(gè)Linux-Yocto Linux,就是一個(gè)嵌入式Linux系統(tǒng)

?如果模組有問(wèn)題,可以將yocto.log直接pull出來(lái)進(jìn)行分析,當(dāng)然,大部分時(shí)候模組的AP不會(huì)出什么問(wèn)題,主要是出在modem側(cè),它的log就需要用專(zhuān)門(mén)的工具去抓了,后面會(huì)講到。
如果不做二次開(kāi)發(fā),adb很少能用到,愛(ài)折騰的可以玩玩,別亂刪東西哈,折騰掛了后果自負(fù),呵呵。
除了這三種使用方式,移遠(yuǎn)展銳的5G模組還支持USB Host,通過(guò)AT命令可以切換
? ? ? ? AT+QCFG="usbmode",host
不過(guò),當(dāng)切換到host下之后,AT接口可就都沒(méi)了,想清楚了再設(shè)置,除非你有TTL的串口可以切換回來(lái),否則可能就要重新刷固件了。至于host模式能干啥,這個(gè)后面會(huì)講到接口的擴(kuò)展。
TTL串口
5G模組已經(jīng)將TTL接口引了出來(lái),M.2接口的模組是62和64PIN,分別是TTL的TX和RX,默認(rèn)的波特率為115200,功能默認(rèn)用于AT命令控制,使用上跟USB串口調(diào)試沒(méi)有區(qū)別,而且TTL串口與USB串口可以同時(shí)使用,兩個(gè)互不影響。
TTL的串口AT功能也可以通過(guò)AT命令去開(kāi)關(guān)
? ? ? ? AT+QCFG="uartat",1? ? //打開(kāi)串口的AT功能
這個(gè)對(duì)于一些無(wú)法使用USB串口的上位機(jī)比較有用處,比如STM32系列的MCU,本身不是Linux系統(tǒng),無(wú)法支持USB轉(zhuǎn)串口,可以用TTL串口與5G模塊進(jìn)行通訊,同時(shí),上位機(jī)也可以通過(guò)AT命令讓串口進(jìn)入透?jìng)髂J?,與4G時(shí)期的模組使用方法就一樣了,通過(guò)AT指令控制可以進(jìn)行串口數(shù)據(jù)透?jìng)鱐CP/UDP服務(wù)器。
TTL另一個(gè)重要的功能是在關(guān)閉了串口AT功能,當(dāng)你能進(jìn)行二次開(kāi)發(fā)的時(shí)候,如果串口AT功能關(guān)閉,這個(gè)串口將由你來(lái)接管,就是/dev/ttyS0,你可以開(kāi)發(fā)自己的程序去操作串口進(jìn)行數(shù)據(jù)處理,比如串口數(shù)據(jù)直接MQTT轉(zhuǎn)發(fā),485設(shè)備的Modbus解析及RTU/TCP轉(zhuǎn)發(fā)等。
同時(shí),串口的波特率也可以進(jìn)行配置
? ? ? ? AT+IPR=115200
可以根據(jù)上位機(jī)的串口配置進(jìn)行修改。