查看: 843|回复: 2

【瑞萨RA4系列开发板体验】串口测试与标准输入输出重定向

[复制链接]

116

主题

134

帖子

3778

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3778
发表于 2023-1-5 23:31:20 | 显示全部楼层 |阅读模式
作者:jf_1137202360


下载Demo代码
基于\ra-fsp-examples\example_projects\ek_ra4m2\sci_uart\sci_uart_ek_ra4m2_ep\keil\sci_uart_ek_ra4m2_ep.uvprojx
工程测试

串口配置
原理图可以看到使用串口9,引脚P109P110



串口9JTAG引脚有复用
所以先配置位SWD调试接口


再配置串口9引脚

再配置串口9属性

再重新生成

接上USB后始终不能接收到数据,CH340G串口枚举正常,设备管理器串口号也正常,
使用逻辑分析仪直接查看P109TX引脚是有数据的,CH340G对应引脚也有数据,说明H340G有问题,短接TX RX 也不能收发,更加说明CH340G本身就有问题了。
买了几片CH340G,到时换了再确认。
先直接使用其他的USB转串口线接到P109P110测试。


标准输入输出重定向测试
网上可以搜到大量MDK重定向标准输入输出的文章,都是只有结果,直接给出了代码。作为嵌入式开发,第一手资料是芯片手册和开发环境的帮助文档,所以了解如何去获取相关内容更重要。这样对于一个全新的平台也能很快入手。
MDK菜单栏
Help->uVision Help
我们知道printf属于stdio,所以我们就搜索stdio关键字,一个个看搜索出来的结果,很快就能看到如下关键内容,正是我们需要的


FSP的接口实在是不好用,所以重写收发接口。

uart_ep.c中实现串口查询收发

  1. void uart_poll_send(uint8_t ch)

  2. {

  3. g_uart_ctrl.p_reg->TDR = ch;

  4. while(g_uart_ctrl.p_reg->SSR_b.TEND == 0);

  5. }



  6. uint8_t uart_poll_read(void)

  7. {

  8. while(g_uart_ctrl.p_reg->SSR_b.RDRF == 0);

  9. return g_uart_ctrl.p_reg->RDR;

  10. }
复制代码


添加文件retarget.c
  1. #include

  2. #include

  3. #include "hal_data.h"


  4. void uart_poll_send(uint8_t ch);

  5. uint8_t uart_poll_read(void);


  6. int fputc(int ch, FILE *f)

  7. {

  8. (void)f;

  9. uint8_t data = (uint8_t)ch;

  10.   /* Your implementation of fputc(). */

  11. uart_poll_send(data);

  12.   return ch;

  13. }


  14. int fgetc(FILE *f)

  15. {

  16.     (void)f;

  17.     /* Your implementation of fgetc(). */

  18.     return (int)uart_poll_read();

  19. }
复制代码


hal_entry.c
  1. void hal_entry(void)

  2. {

  3.     /* Initializing UART */

  4.     uart_initialize();

  5. int a;

  6.   int b;

  7. printf("Hello World!\r\n");

  8.   while(1)

  9. {

  10. printf("please input a and b:");

  11. scanf("%d %d",&a,&b);

  12. printf("%d+%d=%d\r\n",a,b,a+b);

  13. }

  14. }
复制代码



总结
个人觉得瑞萨的串口驱动写的很烂,根本不好使用,搞一堆什么回调,貌似看起来是搞得驱动,实际根本不是驱动,杂糅在一起,根本没有分层思想,搞得很复杂,实际上根本不方便使用。哪怕就是要简单使用查询进行收发都不行,只能用它那一堆回调。哪怕是和意法半导体一样搞个标准外设库,提供基本的外设配置接口也好,具体逻辑用户自己去实现就可以了。总之瑞萨的FSP个人觉得是一个比较反人类的设计。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

45

主题

134

帖子

9926

积分

论坛元老

Rank: 8Rank: 8

积分
9926
发表于 2023-1-6 06:16:39 | 显示全部楼层

它是想做一些象rtthread的驱动的封装吧。
回复

使用道具 举报

3

主题

195

帖子

1540

积分

金牌会员

Rank: 6Rank: 6

积分
1540
发表于 2023-3-14 11:27:16 | 显示全部楼层

不错,学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:134精华:0

RA_Lance

主题: 92帖子:132精华:9

lugl

主题: 45帖子:134精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:95精华:0
快速回复 返回顶部 返回列表