回答

收藏

[评测分享] 【RISC-V 沁恒微-CH585M-R1开发板试用体验】3. 串口收发测试

#板卡评测 #板卡评测 793 人阅读 | 0 人回复 | 2025-06-18

本帖最后由 stm1024 于 2025-6-18 22:09 编辑

点灯以后,自然又到了经典的串口收发功能模块的测试了。
CH585的基本串口功能实现起来非常简单,在标准库的协助下,以及芯片的基本复位状态值,只需要几行代码就可以实现串口的功能。
在介绍串口之前,先安利一下沁恒的调试器,WCH-LinkE,这个调试器除了和常见的各种ST-link等功能类似之外,还具有一个串口功能,在调试时更加方便。除此之外,WCH-LinkE还支持ARM和RISC-V核心,可以说是功能比较全面了。

1. 硬件连接
通常使用UART1,其使用的针脚是PA8和PA9,其中PA8为RXD,PA9为TXD,另外,和其他设备进行通讯时,需要将开发板的其他设备的TXD和RXD进行交叉连接。这里我使用了WCH-LinkE调试器,下载数据使用PB14和PB15,然后调试器的串口和开发板的PA8/9进行交叉连接,如下图所示:



2. 串口发送数据
新建一个工程,我这里还是复用的前面LED的工程,当然代码做了修改:

运行效果如下:

从上面的例子可以看出,通过串口发送数据,外设的配置只需要简单的几行代码就可以了,默认的配置就是115200-8-N-1这种,可以说是上手非常容易了。

3. 串口接收数据
示例程序中,提供了串口作为echo效果的例程,并演示了使用轮询和中断方式接收数据方式,先说轮询方式接收,修改代码如下:

编译后写入开发板,运行效果如下:


可以看到对于中英文都可以支持,此外对于较长字符串测试也OK。不过这种对MCU的占用率较高,另外一种更加常见的方式是使用中断,这个在示例代码中也有,借鉴一下:

比较关键的是两个地方,一个是配置和使能了相关的中断,在主程序中添加了4行:
  1. UART1_ByteTrigCfg(UART_7BYTE_TRIG);
  2. trigB = 7;
  3. UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
复制代码

另外一个就是十分关键的中断处理函数了,即void UART1_IRQHandler(void),其中将中断分为了多种情况,主要处理了两种,一个是数据就绪时(当然不满7字节)时,将收到的数据发送出去;如果超时,则将暂存的数据都发送出去,虽然UART0只有一个长度为7的FIFO,但是通过这种方式,同样可以接收较长的字符串:

OK,今天的测试就先到这了。
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

5300 积分
55 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条