使用 UART ESP32 micropython \x00 错误从 STM32 读取数据?

物联网 微控制器 ESP32 stm32
2021-06-20 14:26:45

我正在使用 LOLIN32 lite (ESP32) 读取从 STM32F103(黑色药丸)发​​送的数据。ESP32 使用 micropython,STM32 使用 CubeMX + Truestudio 编程。

在 micropython 中调用 uart.read() 或 uart.readline() 时,我得到了 STM32 发送的数据,但它在开头附加了一个 \x00 值。

从 Tera 终端我得到: b'\x00test message\n'

立方体MX:

UART配置CubeMX

STM32中使用的代码(我用的是HAL库,剩下的代码太长就不贴了)。

uint8_t buff_uart[] = "test\t a long message\n";

while (1){
   HAL_UART_Transmit(&huart1,buff_uart,sizeof(buff_uart),1);
   HAL_Delay(1000);
}

micropython中的代码:

uart = UART(2, 115200)
uart.init(115200, bits=8, parity=None, stop=1, timeout=2000)

while True:
   uart.readline() 

如果我将 STM32 的串行线连接到串行 USB,我可以在 Tera 终端(不带 \x00)中看到正确的数据。是不是 micropython 添加了分隔符?

或者这是一个错误?我在这里缺少什么?

1个回答
  1. 编写 uart 传输代码并将其加载到 STM32 板上
  2. 用 micropython 语言为 esp32 编写 UART 代码
  3. 连接他们的 Rx 和 Tx 并运行 esp32 代码