ST意法半导体
直播中

李建设

7年用户 1400经验值
私信 关注
[问答]

ESP32-CAM无法通过UART与其他设备通信怎么办

我一直在与这个问题作斗争一段时间。我有一个基于 STM32G05 的简单定制板。我正在使用 2 个 UART。其中一个我只用于串口调试。获取键盘输入(但不要使用它)并打印出调试数据。
另一个连接到不同的 MCPU。ESP32,特别是 ESP32-CAM。
当 ESP32-CAM 启动时,它会向串行端口发送一些诊断信息。
我的STM32看不到这个数据。   
我可以使用 USB 串行端口(带腻子)并独立地与 STM32 和 ESP32 通信。但是,将 ESP32 TX 引脚连接到 STM32 RX 引脚根本没有给我任何数据。
我可以“接入”ESP32 TX 引脚并将其连接到 USB 串行端口 RX 引脚并在启动时查看数据,但 STM32 根本看不到它。我查看了示波器上的数据,逻辑电平是正确的。

我的代码很简单
  • #include "main.h"
  • extern UART_HandleTypeDef huart1;
  • extern UART_HandleTypeDef huart2;
  • uint8_t rx[6];
  • uint8_t rx2[6];
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •         if (huart->Instance == USART1) {
  •                 serprintf("UA1: %cnr", rx[0]);
  •                 HAL_UART_Receive_IT(&huart1, rx, 1);
  •         }
  •         else {
  •                 serprintf("UA2: %cnr", rx2[0]);
  •                 HAL_UART_Receive_IT(&huart2, rx2, 1);
  •         }
  •     if (rx[0] == 13)  {
  •         serprintf("nr");
  •     }
  • }
  • void app_main(void)
  • {
  •     HAL_StatusTypeDef status;
  •     serprintf("Starting...nr");
  •     HAL_UART_Receive_IT(&huart2, rx, 1);
  •     HAL_UART_Receive_IT(&huart1, rx2, 1);
  •     while (1) {
  •         }
  •    }
我已经尝试使用两个串行端口进行此操作,并且行为都遵循这两个端口。
但是,STM32能够成功向 ESP32CAM 发送数据。它似乎无法接收它。

回帖(1)

周润艺

2022-12-27 14:38:20
我解决了这个。问题是在中断内部执行 UART 写入 (serprintf) 不利于性能,并且中断实际上并未获取数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分