openmv与arudino mega通讯时,未上电前会一直发送空数据,接收数据时会延迟8位是什么问题?
-
这样连接uart1和uart3一样。
未开启程序,mega2560收到空
mega2560发送了11次
openmv只收到了3次
openmv代码:void setup() { Serial.begin(9600); Serial1.begin(4800); pinMode(LED_BUILTIN, OUTPUT); } int cx=0; void loop() { if (Serial1.available() > 0) { char received = Serial1.read(); digitalWrite(LED_BUILTIN, HIGH); Serial.print("Received: "); Serial.println(received); // 简单回声测试 if(received == 'T') { cx++; Serial1.write(cx); // 回复R Serial.println(cx); } delay(100); digitalWrite(LED_BUILTIN, LOW); } }
arduino代码
from pyb import UART import time uart = UART(1, 4800, timeout_char= 1000) uart.read() # 清空初始化残留数据 while True: # 发送'T' uart.write(b'T') print("Sent 'T'") # 接收优化:增加重试检测,避免单次错过 for _ in range(5): # 连续检测5次(共250ms) if uart.any(): data = uart.read(1) # 读取所有可用数据(而非固定1字节) print("Received:", data) break time.sleep_ms(50) else: print("No data received") time.sleep_ms(500) # 降低发送频率,避免冲突
插上wifi扩展板后,没有异常:

-
使用数据帧的方法传输串口数据即可解决问题