RDK X3与ESP32串口通讯 - 非阻塞式互传字符串
创作时间:
作者:
@小白创作中心
RDK X3与ESP32串口通讯 - 非阻塞式互传字符串
引用
CSDN
1.
https://m.blog.csdn.net/SA2672873269/article/details/136834623
RDK X3和ESP32是两种常用的嵌入式开发平台,它们之间的串口通讯在物联网、智能家居等领域有着广泛的应用。本文将详细介绍如何通过UART实现RDK X3和ESP32之间的非阻塞式双向通讯,包括硬件连接、代码实现和回环测试等内容。
硬件连接图
RDK X3在40PIN上默认使能 UART3,物理管脚号 8 和 10,IO电压 3.3V,支持波特率:9600,19200,38400,57600,115200,921600。
我使用的ESP32开发板为ESP32-DevKitC-V1,基本上淘宝20元出头的都是这个板子,IO电压3.3V,有三个硬串口,分别为UART0,1,2,其中0用于固件下载和Debug串口输出。在这里我用的是UART2与RDK X3进行串口通讯。
如果您使用的是Arduino-UNO或者ESP8266,并且使用唯一的硬件串口与RDK X3进行通讯,烧录Arduino固件时需要断开与RDK X3的串口连接。
RDK X3 的代码(Python)
from time import sleep
from select import select
from sys import stdin
from serial import Serial
def main():
try:
x3_serial = Serial("/dev/ttyS3", 115200, timeout=1)
except Exception as e:
print("Open Serial /dev/ttyS3 failed!\n")
exit()
print("Open serial Successfully\n")
while True:
if x3_serial.in_waiting:
data_receive_from_uart = x3_serial.read_until(b"\n").decode('UTF-8')
print("\033[31m" + "--> RDK X3 Received Message From ESP32: \n%s"%data_receive_from_uart + "\033[0m")
r, w, e = select([stdin], [], [], 0.0)
if r:
data_receive_from_shell = stdin.readline()
print()
x3_serial.write(data_receive_from_shell.encode('UTF-8'))
sleep(0.001)
if __name__ == "__main__":
main()
ESP32 的代码(Arduino)
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("Serial 0 init successfully.");
Serial2.begin(115200);
while (!Serial2);
Serial.println("Serial 2 init successfully.");
while (true) {
if (Serial.available()) {
String data_receive_from_DebugSerial = Serial.readStringUntil('\n');
Serial2.println(data_receive_from_DebugSerial);
}
if (Serial2.available()) {
String data_receive_from_uart = Serial2.readStringUntil('\n');
Serial.print("--> ESP32 Received Message From RDK X3: \n" + data_receive_from_uart);
Serial.println();
}
delay(10);
}
}
void loop() {
}
RDK X3 的 UART回环测试
在2.0.0及以上版本的系统,参考手册:使用串口 | RDK X3用户手册 (horizon.cc)
短接RDK X3的40pin的RX和TX,也就是8和10号脚,运行测试程序:
python3 /app/40pin_samples/test_serial.py
出现以下内容说明RDK X3的串口正常:
请输出需要测试的串口设备名:/dev/ttyS3
请输入波特率(9600,19200,38400,57600,115200,921600):115200
Serial<id=0x7fbe32fc40, open=True>(port='/dev/ttyS3', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
Starting demo now! Press CTRL+C to exit
Send: AA55
Recv: AA55
Send: AA55
Recv: AA55
Send: AA55
Recv: AA55
ESP32 的 UART回环测试
以下程序用于测试ESP32的UART2,使用Arduino-IDE将以下程序烧录进ESP32,短接TX2和RX2脚:
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("Serial 0 init successfully.");
Serial2.begin(115200);
while (!Serial2);
Serial.println("Serial 2 init successfully.");
int cnt = 1;
while (true) {
Serial.print("loop: "); Serial.println(cnt);
cnt ++;
String data = "AA55";
Serial.println("Data Send:" + data);
Serial.print("Data Receive:");
Serial2.println(data);
delay(10);
while (Serial2.available()) {
char data_rx = Serial2.read();
Serial.print(data_rx);
}
Serial.println();
delay(1000);
}
}
void loop() {
}
串口调试器出现以下信息,说明ESP32的串口的回环测试通过:
loop: 1
Data Send:AA55
Data Receive:AA55
loop: 2
Data Send:AA55
Data Receive:AA55
loop: 3
Data Send:AA55
Data Receive:AA55
loop: 4
Data Send:AA55
Data Receive:AA55
...
热门推荐
广东城际“四线”正式贯通!站间最低票价5元,列车时刻表收好
盘点中国最牛10大数学家,“韦神”能排第几?
华中科技大学强基学科解读 | 数学与应用数学:强基兴中华 培育数学JIA
数学皇帝和他的“天才捕手”计划
李子柒教你选炖肉香料,白芷肉蔻少不了
肉蔻炖肉,香料界的秘密武器
“浆泰功”酸菜品牌带动六峰镇农民增收,日耗蔬菜2.3万斤
乳酸菌发酵让酸菜更健康,家庭制作指南来了
从智能监测到护理机器人:中国智慧养老产业蓬勃发展
从冷面到鱼籽:佳木斯六大特色美食全攻略
人参黄芪当归:补气血“三剑客”的传统智慧与现代解读
2795米城垣步道串起贵阳“九门四阁”,AR技术赋能文旅新体验
2023年起广州车检费用上调,OBD检测成新增项目
每天一碗薏米山药茯苓粥,有效改善痰湿体质
告别痰湿体质:中医推荐的饮食运动调理方案
从四个“泽”字成语,看中华孝道文化
在家打造专业画室:功能区规划与设备选购全攻略
默沙东佳达修疫苗获批男性接种,开启450亿市场新蓝海
中国首款男性HPV疫苗“佳达修”获批上市,市场潜力巨大但接种意愿待提升
默沙东佳达修®HPV疫苗,男性接种新潮流
十八籽佛珠手链:传统文化的时尚新生
红烧鱼这样做,连猫都抢着吃!
一首《滚滚长江东逝水》,听杨洪基唱响20年春晚
《滚滚长江东逝水》:谷建芬作曲、杨洪基演唱的音乐经典
盐城建湖县专业公司教你一体化污水提升泵站安装秘籍
城市排水系统的秘密武器:一体化污水提升泵站
冬瓜皮竟是中医的秘密武器?
4S店购车防坑指南:新手必看!
八年老司机揭秘:二手车避坑秘籍
两寸PVC管使用指南:尺寸参数、选购要点与安装规范