通过UART通信STM32 Nucleo L476和Arduino UNO R3 [已关闭]

Communication STM32 Nucleo L476 and Arduino UNO R3 over UART [closed]

提问人:Tobias 提问时间:11/14/2023 最后编辑:Tobias 更新时间:11/16/2023 访问量:58

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

7天前关闭。

我想使用 UART 通信将测试字符串从 Arduino UNO R3 发送到 STM32 Nucleo L476。 我想做什么: Arduino发送字符串 Nucleo 接收 Nucleo 使用 USB/TTL 转换器将其发送回 PC/Putty。

我使用的UART端口都已配置并设置为9600波特(在CubeIDE,Arduino和USB / TLL Devicemanager中)

已检查正确的 COM 端口。

如果我单独测试每个板的通信(通过 USB/TTL 与 PC 通信),它正在工作并且我收到测试字符串。

如果我在 UART 句柄中使用延迟时间和超时,则 Puttys 光标正在移动,但只显示一个神秘的标志。

Wiring

我在arduino中使用以下草图:

void setup() {
  // Initialisiere die serielle Schnittstelle mit einer Baudrate von 9600
  Serial.begin(9600);
  
}

void loop() {
  // Sende den Text "Hallo Welt" über die serielle Schnittstelle
  Serial.println("A");
  delay(2000);
  Serial.println("B");
  delay(2000);
  Serial.println("c");
  // Warte für eine Sekunde (1000 Millisekunden)
  delay(2000);
}

我在 CubeIDE 中使用以下代码:


#include "main.h"
#include "usart.h"
#include "gpio.h"
#include <string.h>



uint8_t stringbuf[3];
uint8_t tr_stringbuf[3];


int main(void)
{

  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_USART1_UART_Init();

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

     //Receive Arduino
     HAL_UART_Receive(&huart2, (uint8_t *)stringbuf, 3, 6000);

     HAL_Delay(500);

     //Copy Received Value
     uint8_t tr_stringbuf[3]={stringbuf[0], stringbuf[1], 
     stringbuf[2]};

     //kopierten Wert weiterschicken
     HAL_UART_Transmit(&huart1, (uint8_t *)tr_stringbuf, 3, 4000);

     //TogglePin
     HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // Toggle LD2 LED

     HAL_Delay(100);
   



    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
Arduino 嵌入式 UART Nucleo

评论

2赞 Lundin 11/14/2023
从字面上看,这可能是由任何事情引起的。首先使用示波器验证波特率,以及 Tx、Rx 和 GND 是否正确连接。
0赞 the busybee 11/14/2023
可爱的草图中的注释与实际代码相矛盾。:-D你介意清理一下你的源示例吗?一个最小的可重复示例(强调“最小”)和接线示意图会有所帮助。
0赞 gre_gor 11/15/2023
我没有看到 Nucleo 代码中定义的波特率。
0赞 Tobias 11/16/2023
波特率是在 CubeIDE 的 .ioc 文件中配置的。然后,它会生成一个单独的文件“usart.c”。我试图清理我的代码。我现在收到一个“\0”信号到 hterm(putty 仍然不起作用)。我认为这种联系是有效的,但正如我所希望的那样。

答: 暂无答案