[RA4 & RA6] 瑞萨RA4E2串口初始化

[复制链接]
44|1
天体书记 发表于 2026-5-16 23:42 | 显示全部楼层 |阅读模式
瑞萨 RA4E2系列MCU为基于 ARM Cortex-M4,通常使用瑞萨的 ‌FSP (Flexible Software Package)‌ 进行开发。串口初始化可以通过图形化配置工具(e2 studio / FSP SmartConfigurator)自动生成代码,也可以手动编写底层驱动代码——好久没有使用寄存器编写了。

在 RA4E2 中,串口是由 SCI (Serial Communication Interface) 模块实现,这点与STM32或国内芯片大不相同。在使用 FSP 时,需要先在 configuration.xml 中配置GPIO与UART stack,然后使用生成的句柄进行初始化和操作。

FSP 的 UART 驱动通常采用异步中断方式,因此需要定义一个回调函数来处理发送完成或接收数据事件。

  1. volatile bool uart_tx_complete_flag = false;

  2. /**
  3. * [url=/u/brief]@brief[/url] UART 回调函数
  4. * @param p_args 回调参数指针
  5. */
  6. void user_uart_callback(uart_callback_args_t * p_args)
  7. {
  8.     switch (p_args->event)
  9.     {
  10.         case UART_EVENT_TX_COMPLETE:
  11.             uart_tx_complete_flag = true;
  12.             break;
  13.         
  14.         case UART_EVENT_RX_CHAR:

  15.             break;
  16.             
  17.         default:
  18.             break;
  19.     }
  20. }



在 hal_entry() 中调用初始化并测试。

  1. void hal_entry(void)
  2. {
  3.     fsp_err_t err;

  4.     err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
  5.    
  6.     if (FSP_SUCCESS != err)
  7.     {

  8.         while(1);
  9.     }

  10.     const char *test_msg = "Hello RA4E2 UART\r\n";
  11.     uint8_t *p_data = (uint8_t *)test_msg;
  12.     uint32_t data_len = strlen(test_msg);

  13.     /* 非阻塞发送 */
  14.     err = R_SCI_UART_Write(&g_uart9_ctrl, p_data, data_len);
  15.    
  16.     if (FSP_SUCCESS == err)
  17.     {
  18.         while (!uart_tx_complete_flag)
  19.         {
  20.             /* wait for byte */
  21.             ;
  22.         }
  23.         uart_tx_complete_flag = false; // 清除标志位
  24.     }

  25.     /* 主循环 */
  26.     while (1)
  27.     {

  28.         R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
  29.     }
  30. }



使用图形化配置工具与瑞萨提供的底层驱动库函数来实现项目吧!寄存器配置这种古老的实现方式还是让其成为历史吧!






SolitudeSage 发表于 2026-5-22 09:51 | 显示全部楼层
楼主是用的瑞萨家自己配套的ide吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0