对于RL78系列的MCU,为了提高运行效率,减少CPU的占用,建议UART数据收发使用DMA功能。DMA(Direct Memory Access)是RL78 MCU内置的一个控制器,能在支持DMA外围硬件的SFR和内部RAM之间不经过CPU而自动传送数据。
打开DMA0的配置界面如下,首先要确定DMA0的传送方向,其次选择外设SFR寄存器,以及RAM的地址和指定DMA0传送的数据长度,第三要设置DMA0的触发源。DAM1的设置和DMA0是相同的,根据应用需求,进行相应的配置。
UART的配置比较简单,在此不在累述,配置好后,点击“code generator”,生成对应的驱动代码,顺便说,自动生产的串口API函数是没有__far类型的,但是实际测试的时候,发送的数据可能是错误的,因为定义的数据buffer可能不在镜像区,这样会导致传送的地址是错误的,所以为避免类似的情况发生,建议在如下地方修改为__far类型。
定义好接收数据的uart_buf[10], 并把数据buffer的地址给到DRA0,如下,DMA0被触发后,会把在SFR接收到的数据直接送给uart_buf[10]。
左右滑动查看完整内容
左右滑动查看完整内容
通过DMA1发送数据时,也是一样,要发送数据的buffer的地址赋给DRA1,DMA1被触发后,会把RAM buffer的数据送给SFR进行发送。
左右滑动查看完整内容
在主函数main里,初始化相关的函数,如下。
左右滑动查看完整内容
连接好硬件,并把生成的.mot文件下载到MCU里,通过串口助手给MCU发送8个字符数据“12345678”,在应用程序里没有对接收的SFR数据进行处理的情况下,通过DMA0会把接收到SFR的8个数据送到指定的buffer 里,经检查结果,数据接收正确。
-
mcu
+关注
关注
146文章
16608浏览量
347188 -
控制器
+关注
关注
112文章
15843浏览量
174909 -
寄存器
+关注
关注
31文章
5243浏览量
119054 -
uart
+关注
关注
22文章
1194浏览量
100759 -
dma
+关注
关注
3文章
552浏览量
99858
原文标题:RL78系列MCU DMA在UART中的使用
文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
RL78 G12 UART SPI IIC不能同时使用吗?
瑞萨RL78/G15针对8位MCU应用进行的优化
介绍了RL78/G13 MCU 开发套件演示
瑞萨电子推出的RL78/I1x系列微控制器是RL78微控制器系列
RL78/G23 Data flash使用教程
RL78系列MCU Data Flash使用介绍
互动有礼 | 16位的RL78/G24 MCU可实现与32位MCU相当的性能!
![互动有礼 | 16位的<b class='flag-5'>RL78</b>/G24 <b class='flag-5'>MCU</b>可实现与32位<b class='flag-5'>MCU</b>相当的性能!](https://file1.elecfans.com//web2/M00/AB/27/wKgZomUxbX-AW0OlAAAjnzUztYo564.png)
RL78/G13 自编方案(通过UART收到的数据) CC-RL Rev.1.01
![<b class='flag-5'>RL78</b>/G13 自编方案(通过<b class='flag-5'>UART</b>收到的数据) CC-<b class='flag-5'>RL</b> Rev.1.01](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论