本文將對4G模組Air724UG軟件的UART做出相關示例,希望想了解此模組的朋友們收藏好仔細看。
一、串口(uart)概述
UART(通用異步接收器/發(fā)送器)是一種串行通信協(xié)議,因其多功能性和簡單性而被廣泛使用。與 I2C 和 SPI 不同,UART 只需要兩條線即可運行:TX(發(fā)送)和 RX(接收)。該協(xié)議允許異步通信,也就是說發(fā)送器和接收器之間無需共享時鐘。數(shù)據(jù)被組織成數(shù)據(jù)包,每個數(shù)據(jù)包包含一個起始位、5 到 9 個數(shù)據(jù)位、一個可選的奇偶校驗位和1個、2個或者1.5個停止位。
優(yōu)點:
簡單:UART 通信協(xié)議相對簡單,易于實現(xiàn)和調試。
適用性廣泛:UART 被廣泛應用于各種設備之間的通信,具有較好的兼容性。
距離:UART 通信距離較遠,適用于需要長距離傳輸?shù)膱鼍啊?/p>
缺點:
速度較低:UART 通信速度相對較低,不適用于對速度要求較高的應用。
雙工:UART 通信是雙工的,可以進行低速雙工傳輸數(shù)據(jù),進行數(shù)據(jù)的發(fā)送和接收。
不可靠:由于 UART 是異步通信,可能會受到噪聲和干擾的影響,導致數(shù)據(jù)傳輸不可靠。
二、演示功能概述
本文主要教你使用 Air724UG 開發(fā)板對串口(uart)進行一個測試,其中包含了串口,RS485,usb 虛擬串口,多串口,串口電平轉換等內容,其中對 RS485 有一個搭配溫濕度傳感器做的一個溫濕度傳感器 demo
三、準備硬件環(huán)境
3.1 開發(fā)板準備
在開始之前,需要準備一套 Air724UG 開發(fā)板,目前合宙推出兩種 Air724UG 開發(fā)板(開發(fā)板和核心板),開發(fā)板的優(yōu)勢在于大多數(shù)管腳接口都引出來了,例如 sd 卡,camera,屏幕等接口,實際使用都是一樣的,在使用時可根據(jù)自身需求選擇開發(fā)板。
1)如果你選擇的是Air724UG開發(fā)板:
此開發(fā)板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG產品手冊中的 《EVB_Air724UG_AXX開發(fā)板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14開發(fā)板使用說明》;開發(fā)板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。
2)如果你選擇的是Air724UG核心板:
下方資料可供你參考查閱:
https://docs.openluat.com/air724ug/product/
Air724UG產品手冊中的Air724UG-核心板硬件資料
3.2 SIM 卡
在中國大陸環(huán)境下,使用移動,電信,聯(lián)通的物聯(lián)網卡或者手機卡都可以。
3.3 數(shù)據(jù)通信線
1)USB 數(shù)據(jù)線
2)由于本篇教程和串口相關,所以需要準備 USB 轉 TTL 工具或者串口線。例如 CH340、FT232 等,本文使用的是高速串口
3.4 PC 電腦
PC 電腦推薦使用 win7 及以上版本,Air724UG 驅動下載地址:
8910驅動:
https://doc.openluat.com/wiki/21?wiki_page_id=6908
3.5 介紹串口如何接線
Air724UG 模組有 5 個串口,分別為 UART1,UART2,UART3,HOST UART 和 ZSP UART 調試串口。
其中對于 Luat 開發(fā)方式,UART1 可以用作一個通用的串口來連接其他的串口設備。
UART2 可以用來射頻校準,同時 UART2 還用來和內部的藍牙進行通訊,如果用到了藍牙功能,則 UART2 不可 再用作其他用途。
UART3 是一個通用串口,可以用作外接 GPS 等外設。
HOST UART 用來軟件調試時輸出 AP trace。
ZSP UART 用來軟件調試時輸出 CP trace。
其中 HOST UART 和 ZSP UART 不能作為普通串口使用,只用于調試輸出底層日志。
1)如果你想了解這 5 個串口對應于模組的哪個管腳,請看下方圖片:
2)如果你只想知道 Air724UG 開發(fā)板的串口引出位置,請看下方圖片:
3)接下來進行接線操作,注意模塊與 MCU 之間要交叉接線,即 TX 接 RX,RX 接 TX,GND 接 GND 。由于本文只需用到 UART1 和 UART2 兩個通用串口,因此下表中只列出了這兩個通用串口的模塊引腳編號及模塊與 MCU 之間接線說明。
四、準備軟件環(huán)境
4.1 源碼及工具
Air724UG模塊使用固件:
固件地址:
https://docs.openluat.com/air724ug/luatos/firmware/
選擇最新版本CORE_V4030,本文使用的固件版本是:LuatOS-Air_V4030_RDA8910_BT_FLOAT.pac
將固件和腳本燒錄到模塊中,使用說明參考:
Luatools 下載和詳細使用
https://docs.openluat.com/Luatools/
串口工具本文選用的是 sscom
4.2 uart 庫接口描述
uart 庫即串口操作庫,該庫為內部庫,所以在程序中使用時無需 require 調用,本文只是簡單介紹 uart 庫中常用接口描述,其余接口描述請參考:uart 接口文檔
4.2.1 配置串口參數(shù)
4.2.2 寫串口
4.2.3 讀串口
4.2.4 關閉串口
4.2.5 注冊串口事件回調
4.2.6 485 轉向控制
4.2.7 從串口讀取單字符
4.3 初始化 uart
使用 UART1 串口
使用 UART2 串口
4.4 注冊接收數(shù)據(jù)的回調函數(shù)
uart.on 函數(shù)用于注冊一個接收事件的回調函數(shù),當指定的串口 UART_ID 接收到數(shù)據(jù)時,該回調函數(shù)會被自動觸發(fā)并執(zhí)行。回調函數(shù)通過 uart.on(UART_ID, "receive", read)定義,并處理接收到的數(shù)據(jù)。數(shù)據(jù)的讀取是通過 uart.read()函數(shù)進行的,uart.read()函數(shù)是非阻塞的,它是直接從現(xiàn)有緩存區(qū)中直接讀取數(shù)據(jù)。
4.5 發(fā)送數(shù)據(jù)
本文中字符串編碼格式為 UTF-8 編碼格式,SSCOM 串口調試工具的編碼格式為 GB2312,所以導致無法正確顯示字符串中的中文,需要注意。
4.5.1 發(fā)送普通字符串
4.5.2 發(fā)送十六進制的數(shù)據(jù)串
4.5.3 發(fā)送 json 格式的數(shù)據(jù)
4.6 完整例程
代碼運行結果:
uart.write(UART_ID, common.utf8ToGb2312("合宙模塊Air724UG"))向串口發(fā)送對應的字符串數(shù)據(jù),uart.on()會事先注冊一個接收數(shù)據(jù)的回調函數(shù),當指定的串口 UART_ID 接收到數(shù)據(jù)時,該回調函數(shù)會被自動觸發(fā)并執(zhí)行,log.info("testUart.read bin",data) log.info("testUart.read hex",data:toHex())會將接收到的數(shù)據(jù)打印出來,此時我們通過串口調試工具,選擇對應的端口,即可看到對應的打印信息。
五、RS485 通信
5.1 簡單介紹下 RS485
物聯(lián)網(IoT)在工業(yè)場景中的應用越來越廣泛,而 RS485 是一種常見的通信協(xié)議,廣泛應用于工業(yè)自動化和物聯(lián)網系統(tǒng)中。RS485 是一種串行通信標準,主要用于長距離、多節(jié)點通信。適用于工業(yè)環(huán)境中的傳感器、執(zhí)行器、控制器等設備之間的數(shù)據(jù)傳輸,且支持多點通信,可以連接多個設備,實現(xiàn)分布式控制。因為具有較好的抗干擾能力,也很適用于噪聲環(huán)境下的通信。RS485 支持長距離傳輸,通常可達 1200 米,適用于工業(yè)現(xiàn)場中的遠程監(jiān)控和控制。
RS485 是一種半雙工通信協(xié)議。半雙工通信協(xié)議允許數(shù)據(jù)在兩個方向上傳輸,但同一時間只能在一個方向上傳輸數(shù)據(jù)。在 RS485 通信中,當發(fā)送數(shù)據(jù)時,只能發(fā)送數(shù)據(jù)而不能接收數(shù)據(jù);當接收數(shù)據(jù)時,只能接收數(shù)據(jù)而不能發(fā)送數(shù)據(jù)。
比如:在 RS485 通信中,通常使用一個引腳(如 A 或 RX )作為發(fā)送引腳,另一個引腳(如 B 或 TX )作為接收引腳。當發(fā)送數(shù)據(jù)時,發(fā)送引腳輸出高電平或低電平,接收引腳不工作;當接收數(shù)據(jù)時,接收引腳輸出高電平或低電平,發(fā)送引腳不工作。有的也有單獨一根線專門用于控制收發(fā)邏輯,輸出高低電平,負責管理 RS485 的通訊,包括發(fā)送、接收、處理錯誤等數(shù)據(jù)。
優(yōu)點:
抗干擾能力強:RS485 采用差分信號傳輸,抗干擾能力強,適用于工業(yè)環(huán)境中的噪聲干擾。
傳輸距離遠:RS485 支持長距離傳輸,適用于工業(yè)現(xiàn)場中的遠程監(jiān)控和控制。
多節(jié)點通信:RS485 支持多點通信,可以連接多個設備,實現(xiàn)分布式控制。
兼容性好:RS485 是一種標準化的通信協(xié)議,具有較好的兼容性,可以與其他設備進行通信。
成本較低:RS485 模塊和電纜的成本相對較低,適用于工業(yè)現(xiàn)場中的成本控制。
缺點:
信號衰減:隨著距離的增加,信號衰減會加劇,影響通信質量。
速率限制:RS485 的傳輸速率相對較低,通常在 9600bps 到 115200bps 之間,適用于低速數(shù)據(jù)傳輸。
電氣特性要求:RS485 對電氣特性有較高的要求,需要使用特定的電纜和連接器。
布線復雜:RS485 需要使用雙絞線進行布線,布線復雜度較高。
5.2 硬件展示
724UG 開發(fā)板 +RS485-TTL+RS485-USB
RS485-USB
接線方式:
注意:上面的硬件使用的 RS485-TTL 為硬件自動轉換,實際使用根據(jù)硬件設置去選擇 gpio 轉換或者硬件自動轉換
5.3 初始化 uart
5.4 注冊接收數(shù)據(jù)的回調函數(shù)
5.5 發(fā)送數(shù)據(jù)
本文中字符串編碼格式為 UTF-8 編碼格式,SSCOM 串口調試工具的編碼格式為 GB2312,所以導致無法正確顯示字符串中的中文,需要注意。
5.5.1 發(fā)送普通字符串
5.5.2 發(fā)送十六進制的數(shù)據(jù)串
5.5.3 發(fā)送 json 格式的數(shù)據(jù)
5.6 完整例程
代碼運行結果:
uart.write(UART_ID, common.utf8ToGb2312("合宙模塊Air724UG"))向串口發(fā)送對應的字符串數(shù)據(jù),uart.on()會事先注冊一個接收數(shù)據(jù)的回調函數(shù),當指定的串口 UART_ID 接收到數(shù)據(jù)時,該回調函數(shù)會被自動觸發(fā)并執(zhí)行,log.info("testUart.read bin",data) log.info("testUart.read hex",data:toHex())會將接收到的數(shù)據(jù)打印出來,此時我們通過串口調試工具,選擇對應的端口,即可看到對應的打印信息。
5.7 溫濕度傳感器例程
5.7.1 硬件展示
使用的硬件為 sht20 溫濕度傳感器 +724UG 開發(fā)板 +RS485-TTL
sht20溫濕度傳感器
接線方式:
5.7.2 代碼展示
本示例是利用 sht20 溫濕度傳感器 +724UG 開發(fā)板 +RS485-TTL 通過 485 做的一個采集溫濕度的 demo,主要邏輯是通過發(fā)送 16 進制數(shù)據(jù) 0x01,0x04,0x00,0x01,0x00,0x02,0x20,0x0B 來獲取溫濕度
然后對獲取數(shù)據(jù)進行 modbus 校驗,然后對數(shù)據(jù)進行解析,根據(jù)公式計算出實際溫濕度
通過 json.encode()把表內的數(shù)據(jù)轉換成 json 類型打印出來
六、USB 虛擬串口
6.1 介紹 USB 虛擬串口
USB 虛擬串口是一種將 USB 接口轉換為串行通信接口的技術。它允許計算機通過 USB 接口與其他設備進行串行通信,如調制解調器、打印機、掃描儀等。USB 虛擬串口通常由一個 USB 轉串行適配器和一個驅動程序組成。
并且虛擬串口通常沒有波特率要求,因為它們是軟件模擬的串行通信接口,不依賴于物理硬件。然而,在實際應用中,虛擬串口仍然需要遵守一些基本的通信協(xié)議,比如數(shù)據(jù)位、停止位和校驗位等。
USB 虛擬串口的主要功能包括:
串行通信:USB 虛擬串口可以模擬串行通信接口,實現(xiàn)數(shù)據(jù)的串行傳輸。它支持各種串行通信協(xié)議,如 RS-232、RS-485 等。
傳輸可靠:傳統(tǒng)的串口連接線容易受到干擾,而 USB 虛擬串口采用的 USB 技術可以更好地抵抗干擾,提高了通信的可靠性。
串行控制:USB 虛擬串口可以控制串行通信參數(shù),如波特率、數(shù)據(jù)位、停止位、奇偶校驗等。它還支持串行通信的流控制和錯誤處理。
使用方便:USB 虛擬串口無需再使用傳統(tǒng)的串口連接線,只需要一個標準的 USB 數(shù)據(jù)線即可連接計算機和外部設備,使得設備連接更加方便
USB 虛擬串口廣泛應用于各種領域,如工業(yè)自動化、物聯(lián)網、智能家居等。它為各種設備提供了便捷的串行通信解決方案,提高了系統(tǒng)的靈活性和可靠性。
6.2 虛擬通訊串口-端口位置說明
首先通過帶有 DM、DP 的 USB 數(shù)據(jù)線兩端連接 模塊 和 Windows7 及以上系統(tǒng)的電腦。
然后將模塊開機,就可以從電腦的設備管理器中看到端口處多出來 4 個 USB 端口。
驅動裝好之后會枚舉出 4 個 USB 接口,其中 LUAT USB Device 1 AT (COM6)為虛擬 AT 口,MODEM 為日志口,AP,和 CP 口為底層日志口
6.3 初始化 USB_UART
6.4 注冊接收數(shù)據(jù)的回調函數(shù)
6.5 發(fā)送數(shù)據(jù)
本文中字符串編碼格式為 UTF-8 編碼格式,SSCOM 串口調試工具的編碼格式為 GB2312,所以導致無法正確顯示字符串中的中文,需要注意。
6.5.1 發(fā)送普通字符串
6.5.2 發(fā)送十六進制的數(shù)據(jù)串
6.5.3 發(fā)送 json 格式的數(shù)據(jù)
6.6 完整例程
代碼運行結果:
七、多串口
7.1 簡介
前面已經介紹了串口的基本用法,本文將使用兩個串口(UART1、UART2)進行分別通信的演示。
7.2 介紹多串口如何接線
大家可先跳轉至 3.5 介紹串口如何接線中查看單串口的接線說明,在學會了 UART1 接線和 UART2 接線后,只需將這兩個通用串口同時接上對應位置即可。
7.3 初始化 UART1 串口和 UART2 串口
7.4 注冊接收數(shù)據(jù)的回調函數(shù)
7.5 發(fā)送數(shù)據(jù)
本文中字符串編碼格式為 UTF-8 編碼格式,SSCOM 串口調試工具的編碼格式為 GB2312,所以導致無法正確顯示字符串中的中文,需要注意。
7.5.1 發(fā)送普通字符串
7.5.2 發(fā)送十六進制的數(shù)據(jù)串
7.5.3 發(fā)送 json 格式的數(shù)據(jù)
7.6完整例程
代碼運行結果:
八、UART 電平
8.1 介紹 UART 電平
UART 電平是指串行通信中使用的電壓電平標準。常見的串口電平標準有 RS-232、TTL 和 RS-485 等。
1、RS-232 電平:RS-232 是一種常用的串口通信標準,它使用負邏輯電平,即邏輯 1 用 -3V 到 -15V 表示,邏輯 0 用 +3V 到 +15V 表示。RS-232 電平適用于短距離、低速率的通信。
2、TTL 電平:TTL(Transistor-Transistor Logic)電平是一種常見的數(shù)字電路電平標準,它使用正邏輯電平,即邏輯 1 用 +5V 表示,邏輯 0 用 0V 表示。TTL 電平適用于短距離、高速率的通信。
3、RS-485 電平:RS-485 是一種常用的串口通信標準,它使用差分電平,即邏輯 1 用 +2V 到 +6V 表示,邏輯 0 用 -2V 到 -6V 表示。RS-485 電平適用于長距離、高速率的通信。
在串口通信中,選擇合適的電平標準非常重要,它直接影響到通信的可靠性和穩(wěn)定性。
Air724UG 模塊的 UART IO 電壓默認為 1.8V,如果要和 3.3V/5V 的 MCU 或其他串口外設通信,必須要加電平轉換電路
8.2 電平轉換參考電路設計
8.3 常見問題
1、串口電平電壓過低或過高可能會導致什么問題?如果電壓過低,可能會導致接收器無法正確識別信號,如果過高,可能會導致信號損壞或損壞接收器。概述:可能會導致串口無法正常通訊,或通訊數(shù)據(jù)會突然出現(xiàn)亂碼,數(shù)據(jù)錯亂等問題。
九、常見問題
9.1 模塊串口接收到亂碼是什么情況?
串口接收到亂碼通常是由于數(shù)據(jù)格式不匹配或信號干擾等原因引起的。以下是一些可能導致亂碼的情況及其解決方法:
1、波特率不一致 - 情況:發(fā)送方和接收方的波特率設置不同。- 解決:確保兩端的波特率設置一致。
2、數(shù)據(jù)位、停止位或校驗位不匹配 - 情況:數(shù)據(jù)格式不一致,例如數(shù)據(jù)位數(shù)、停止位或是否使用校驗位。- 解決:確認發(fā)送和接收的設置一致。例如,常用設置為8個數(shù)據(jù)位、1個停止位、無校驗。
3、信號干擾 - 情況:外部干擾導致信號失真。- 解決:使用屏蔽線纜,縮短線纜長度,避免在電磁干擾強的環(huán)境中使用。
4、接線錯誤 - 情況:TX(發(fā)送)和RX(接收)線接反。- 解決:檢查接線,確保正確連接。
5、設備未正確初始化 - 情況:發(fā)送設備未配置好,導致數(shù)據(jù)格式不正確。- 解決:檢查發(fā)送設備的初始化代碼和配置,確保正確設置。
6、緩沖區(qū)溢出 - 情況:接收端處理速度慢,導致數(shù)據(jù)被覆蓋。- 解決:提高接收端處理速度,或者增加緩沖區(qū)大小。
7、電源問題 - 情況:設備供電不足或不穩(wěn)定。- 解決:檢查電源供應,確保設備正常供電。
8、數(shù)據(jù)編碼不一致 - 情況:發(fā)送和接收使用不同的字符編碼(如ASCII與UTF-8)。- 解決:確保兩端使用相同的字符編碼。
9、物理連接問題 - 情況:接口接觸不良或線纜損壞。- 解決:檢查串口連接,確保接觸良好,必要時更換線纜。
10、串口驅動問題 - 情況:驅動程序不兼容或未正確安裝。- 解決:檢查并更新串口驅動程序。
9.2 使用 RS485 連接模塊,出現(xiàn)漏發(fā),接收不到的情況是怎么回事?
出現(xiàn)漏發(fā)和接收不到的情況,大概率是因為模塊轉向時間設置的問題,模塊收不到數(shù)據(jù)可能是因為沒有設置轉向腳,導致只能發(fā)不能收,出現(xiàn)漏發(fā)的情況,大概率是因為轉向時間設置和設備的實際轉向存在偏差導致漏數(shù)據(jù)的情況,可以通過 uart.set_rs485_oe()接口調整轉向時間,通常 9600 波特率設置 3500us 的轉向時間。
9.3 模塊串口接收不到數(shù)據(jù)/模塊發(fā)的數(shù)據(jù)收不到?
如果出現(xiàn)模塊串口接收不到數(shù)據(jù)的情況,首先排查軟件方面邏輯是否寫的正確,可以按照 Uart 的 demo 進行測試,如果 demo 也不行的話,排查下模塊端和設備端是否為 rx-tx,tx-rx 這樣的接法,避免 rx-rx,tx-tx,如果接線也都正常的話確定下波特率方面,如果有條件的話,可以直接通過邏輯分析儀/示波器檢測模塊的 rx/tx 腳看是否收到數(shù)據(jù)或者發(fā)送數(shù)據(jù)。
分享完畢。
-
通信協(xié)議
+關注
關注
28文章
1033瀏覽量
41154 -
物聯(lián)網
+關注
關注
2930文章
46219瀏覽量
392195 -
uart
+關注
關注
22文章
1276瀏覽量
103897 -
模組
+關注
關注
6文章
1636瀏覽量
31360
發(fā)布評論請先 登錄
4G 模組 HTTP 網絡協(xié)議應用 白嫖版!

白嫖篇:4G 模組 MQTT 通信功能!

UART串口通信示例:開啟通信寶藏之門的定位模組LuatOS入門

MiniPCIE 封裝4G模組價值仍在
4G模塊是什么4G模塊的類別4G模塊的選擇
4G模組, 4G模塊是什么?4G模組,4G模塊的平臺?4G模組,4G模塊怎么選?ASR RDA 高通
LuatOS開發(fā)之4G模組隨機數(shù)(random)|實戰(zhàn)指南

評論