本章將詳細闡述如何通過串行接口(UART)對RF125-TX發(fā)射模塊進行配置和控制,為固件開發(fā)人員提供一份完整的操作指南。
UART接口規(guī)范
與RF125-TX模塊的通信遵循標準的異步串行協(xié)議。
- 通信參數(shù):波特率為9600 bps,8位數(shù)據(jù)位,無奇偶校驗,1位停止位(即9600, 8, N, 1)。
- 數(shù)據(jù)格式:所有指令和數(shù)據(jù)均使用十六進制(HEX)格式發(fā)送。
- 指令結束符:每條完整的指令都必須以回車換行符 0x0D 0x0A (\r\n) 結尾。
- 指令間隔:連續(xù)發(fā)送兩條設置指令的最小時間間隔為100ms。這個延時是必要的,以確保模塊有足夠的時間處理前一條指令并更新內部狀態(tài)。
- 響應機制:模塊會對接收到的指令進行校驗。如果指令格式正確且參數(shù)有效,模塊將返回ASCII字符串 "OK\r\n"(十六進制為 0x4F 0x4B 0x0D 0x0A)。如果指令錯誤,則返回 "ERROR\r\n"(十六進制為 0x45 0x52 0x52 0x4F 0x52 0x0D 0x0A)。
配置指令集詳解
RF125-TX的指令集設計簡潔,圍繞著配置發(fā)射參數(shù)和控制發(fā)射狀態(tài)兩大核心功能。
(1) 設置發(fā)射數(shù)據(jù)內容 (CMD: 0x57)
- 功能:設置模塊在啟動發(fā)射后需要周期性發(fā)送的數(shù)據(jù)負載(Payload)。
- 格式:0x57 | Length (1 Byte) | Payload (Length Bytes) | 0x0D 0x0A
- 參數(shù):
- Length:1字節(jié),表示Payload的長度。其范圍是0到0x2D(十進制45)。這個長度值不包括命令字0x57、Length字節(jié)本身和結束符。
- Payload:實際的數(shù)據(jù)內容,長度由Length字節(jié)決定。
- 示例:設置發(fā)射數(shù)據(jù)為 0x01 0x02 0x03 0x04 0x05。
- 發(fā)送:0x57 0x05 0x01 0x02 0x03 0x04 0x05 0x0D 0x0A
- 成功返回:0x4F 0x4B 0x0D 0x0A
(2) 修改發(fā)射機ID (CMD: 0x58)
- 功能:設置發(fā)射機的唯一標識符(ID)。接收機在配對模式下會根據(jù)此ID來過濾數(shù)據(jù)包。
- 格式:0x58 | ID (1 Byte) | 0x0D 0x0A
- 參數(shù):
- ID:1字節(jié),但有效位為7位。其范圍是0x00到0x7F。任何大于0x7F的值都將被視為錯誤。
- 示例:將發(fā)射機ID設置為0x01。
- 發(fā)送:0x58 0x01 0x0D 0x0A
- 成功返回:0x4F 0x4B 0x0D 0x0A
(3) 讀取發(fā)射機ID (CMD: 0x52)
- 功能:查詢模塊當前配置的發(fā)射機ID。
- 格式:0x52 | 0x0D 0x0A
- 返回:ID (1 Byte) | 0x0D 0x0A
- 示例:假設當前ID為0x01。
- 發(fā)送:0x52 0x0D 0x0A
- 返回:0x01 0x0D 0x0A
(4) 設置發(fā)射時間間隔 (CMD: 0x53)
- 功能:設置自動發(fā)射數(shù)據(jù)包之間的時間間隔。
- 格式:0x53 | TIME_H (1 Byte) | TIME_L (1 Byte) | 0x0D 0x0A
- 參數(shù):
- TIME_H 和 TIME_L:共同組成一個16位的時間值(大端模式),單位為毫秒(ms)。
- 范圍:0x00FA到0xEA60,即250ms到60000ms(60秒)。如果設置的值低于250ms,模塊會自動將其更正為250ms。
- 示例:設置發(fā)射間隔為1000ms(1000的十六進制為0x03E8)。
- 發(fā)送:0x53 0x03 0xE8 0x0D 0x0A
- 成功返回:0x4F 0x4B 0x0D 0x0A
(5) 設置發(fā)射機的發(fā)射狀態(tài)
- 開啟發(fā)射 (CMD: "start")
- 格式:0x73 0x74 0x61 0x72 0x74 | 0x0D 0x0A
- 描述:發(fā)送此命令后,RF125-TX會根據(jù)預先設置好的數(shù)據(jù)內容、ID和時間間隔,自動、連續(xù)地發(fā)射數(shù)據(jù)包。
- 成功返回:0x4F 0x4B 0x0D 0x0A
- 關閉發(fā)射 (CMD: "stop")
- 格式:0x73 0x74 0x6F 0x70 | 0x0D 0x0A
- 描述:發(fā)送此命令后,RF125-TX將立即停止發(fā)射。
- 成功返回:0x4F 0x4B 0x0D 0x0A
表2:RF125-TX UART指令集快速參考
|
功能 |
命令字 (HEX) |
參數(shù) |
描述 |
示例 (HEX) |
|
設置數(shù)據(jù) |
0x57 |
"Length (1B), Payload (nB)" |
設置要發(fā)送的數(shù)據(jù)內容,最大45字節(jié)。 |
57 05 01 02 03 04 05 0D 0A |
|
設置ID |
0x58 |
"ID (1B, 7-bit)" |
設置發(fā)射機ID,范圍0x00-0x7F。 |
58 01 0D 0A |
|
讀取ID |
0x52 |
無 |
讀取當前配置的ID。 |
52 0D 0A |
|
設置間隔 |
0x53 |
"TIME_H (1B), TIME_L (1B)" |
設置發(fā)射間隔,單位ms,范圍250-60000。 |
53 03 E8 0D 0A (1000ms) |
|
開啟發(fā)射 |
73 74 61 0x72 0x74 |
無 |
啟動自動連續(xù)發(fā)射。 |
73 74 61 72 74 0D 0A |
|
關閉發(fā)射 |
73 74 6F 0x70 |
無 |
停止發(fā)射。 |
73 74 6F 70 0D 0A |
4.3 協(xié)議設計與系統(tǒng)行為分析
RF125-TX的UART協(xié)議設計體現(xiàn)了一種“狀態(tài)機”或“配置-執(zhí)行”分離的模式。與一些每次發(fā)送數(shù)據(jù)都需要將數(shù)據(jù)包完整傳給射頻模塊的“透傳”模式不同,RF125-TX的工作流程是先由主控MCU通過一系列指令(如0x57, 0x58, 0x53)對模塊的內部狀態(tài)(數(shù)據(jù)緩沖區(qū)、ID寄存器、定時器周期)進行配置,然后再通過一個獨立的指令(start)來觸發(fā)模塊進入一個自主運行的狀態(tài)。
這種設計模式具有顯著的工程優(yōu)勢。它將對時間精度要求很高的周期性發(fā)射任務,從主控MCU完全卸載到了RF125-TX模塊自身。一旦配置完成并啟動,主控MCU就不再需要維護一個精確的定時器來決定何時發(fā)送下一包數(shù)據(jù)。MCU可以轉而去處理其他任務,甚至進入低功耗睡眠模式,從而大大簡化了主控端的固件邏輯,降低了其實時性要求。RF125-TX在此架構下扮演了一個智能協(xié)處理器的角色,而不僅僅是一個簡單的UART轉RF的“調制解調器”。這種架構對于資源有限的MCU系統(tǒng),或者需要MCU執(zhí)行復雜主業(yè)務邏輯的應用來說,尤其有價值。
RF125系列125KHz無線模塊解說系列:
RF125系列125KHz無線模塊解說(一):RF125系列技術概述
RF125系列125KHz無線模塊解說(二):技術參數(shù)與規(guī)格
RF125系列125KHz無線模塊解說(三):硬件集成與電路設計指南
RF125系列125KHz無線模塊解說(四):串行通信與配置協(xié)議
RF125系列125KHz無線模塊解說(五):功能與操作模式
RF125系列125KHz無線模塊解說(六):RF物理層傳輸協(xié)議深度解析及總結