eefocus_4231172 发表于 2026-8-2 13:20:34

【瑞萨RA-eco-RA6M4评测】- 解决demo中串口收发问题

一、前言
上一篇文章中使用了官方的demo程序测试串口的收发功能,但最后发现测试失败。本篇主要内容是解决上一篇demo中出现的串口收发问题。

二、开发板图片


三、正文
1、确认串口是否有输出
更改代码,每500ms,输出特定的数据。

printf("TEST\r\n");
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);如上所示,将原有的代码屏蔽掉,增加一个打印函数和一个延迟函数,该代码的功能实现了每500ms打印一次的任务

2、程序下载进去之后,观察是否有打印输出

如上图所示,看到串口每500ms输出一次数据,这说当前的配置和引脚是能输出串口数据的,那么当前输出的数据是乱码,只有一个可能,那就是串口的波特率不对,现在我们可以尝试更改一下波特率,在原本的115200的基础上,将串口软件的波特率往下调整,或者往上调整试试看。

3、将串口软件的波特率由115200调整到57600

如上图所示,将串口波特率调整到57600之后,发现打印的信息是正确的,那么此时我们能判断是波特率的问题,什么东西会影响到波特率呢?这个时候想到的只有时钟,也就是外部晶振,接下来我们需要查看原理图上的晶振的频率。

4、原理图上晶振的频率

如上图所示晶振的频率可能有两种,一种是12MHz,另外一种是24MHz,我们需要看下我们板上的晶振频率,从实物上可以看到我们的晶振频率为12MHz的

5、查看工程配置中时钟的配置

按照上图中的顺序来查看时钟的配置,发现时钟配置的为24MHz的,和我们实物的差了一倍,所以在实际使用当中会出现乱码的问题。

6、更改时钟频率为12MHz

如上图所示将时钟频率更改成12MHz,之后再点生成代码

7、更改时钟频率后的结果
https://www.bilibili.com/video/BV1un3X6fExv/

8、屏蔽掉测试代码

while(1)
          {
            R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); // NOLINT100->160
            if(Rx_flag_finish==1)
            {
                      printf_usart();
            }
            // printf("TEST\r\n");
            // R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
          }

9、测试原来demo的收发逻辑


发→◇"3□
收←◆length=4
data: = 0x11
data: = 0x22
data: = 0x33
data: = 0xff

发→◇"3□
收←◆length=4
data: = 0x11
data: = 0x22
data: = 0x33
data: = 0xff
如上图所示,发送11 22 33 ff,输出数据的长度信息和原本接收到的字节数据

10、结论
demo中使用的时钟频率和实际的开发板不匹配,导致串口收发出现异常。
页: [1]
查看完整版本: 【瑞萨RA-eco-RA6M4评测】- 解决demo中串口收发问题