【瑞萨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]