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