硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7917|回复: 9
收起左侧

[UART] H7的串口DMA_FIFO例程分享

  [复制链接]

32

主题

262

回帖

363

积分

高级会员

积分
363
发表于 2020-3-18 11:00:02 | 显示全部楼层 |阅读模式
本帖最后由 在水一方 于 2020-3-18 13:27 编辑

前两天和群友讨论了下DMA_FIFO的功能觉得在OS下挺实用的,花了一点时间基于硬汉的串口FIFO例程修改,和测试。
1.这里面有几个注意点的地方:
  • DMA 使用需要和 MPU 配合使用。
  • DMA cache 的处理。
  • DMA 模式的选择。
  • DMA1 和 DMA2 无法访问DTCM
这里我选择的堆栈区是DTCM,所以使用DMA的时候需要把 FIFO 缓存放到 AXISRAM。
1.堆栈.jpg
1. MPU 配置.jpg

2. DMA 的配置
2.DMA配置.jpg
        这里可以看到我DMA RX使用的是循环模式,这里我使用定时查询的办法去处理DMA 数据,
所以没有去配置 DMA RX 的中断,DMA TX 使用方法和中断的方式是一样的。

3. FIFO 的处理
1. 这里我把硬汉的封装修改了下增加了几个回调函数
3.结构体处理.jpg 2. 因为我没有使用发送中断,所以只能进行查询处理DMA RX 数据
这里稍微要注意的就是 DMA cache 的处理。
4.DMA RX 数据处理.jpg
3. DMA 发送
经过测试尽量不要打开MPU 里面的 BUFF 选项,不知道是不是ST cache 有问题,
可能会出现一些奇怪的问题。所以个人建议不要打开。
5.DMA TX函数.jpg

4. 性能测试
这里使用10毫秒发送 45个字节数据进行压力测试。发送数据7884315,接受数据7884315.
总时长大约29分钟。波特率921600,实际中收发数据很少会有这么快的。这里有个问题,
如果接受缓存大小不满足接收速度和处理速度的要求,可能会出现一些问题。
6.压力测试.jpg

百度云链接:
链接:https://pan.baidu.com/s/1cvn2TuzOu3RBM6IO50DbjQ
提取码:unc9

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2020-3-18 14:32:39 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

17

主题

101

回帖

152

积分

初级会员

积分
152
发表于 2020-3-18 20:51:49 | 显示全部楼层
我选择消息队列或者ringbuff,是个单片机就能用。dma这些好是好,太限制单片机
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2020-4-21 23:50:26 | 显示全部楼层
初晴sama 发表于 2020-3-18 20:51
我选择消息队列或者ringbuff,是个单片机就能用。dma这些好是好,太限制单片机

DMA 用来分担MCU工作的
回复

使用道具 举报

5

主题

54

回帖

69

积分

初级会员

积分
69
发表于 2020-9-22 09:20:33 | 显示全部楼层
这个是怎么实现接收的哇,没看明白
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2020-9-27 20:10:55 | 显示全部楼层
没用FIFO 使用消息队列传输封装过的数据信息(串口号,内存池起始位置,长度,时间等信息),再使用DMA发送
STLINKV3MINI 实测6M波特率
收发各一个队列
回复

使用道具 举报

4

主题

16

回帖

28

积分

新手上路

积分
28
发表于 2021-3-25 08:55:48 | 显示全部楼层
楼主,方便问一下工程中的MemoryManage模块是引用的哪里的吗?之前没接触过想学习下
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2021-4-2 10:21:13 | 显示全部楼层
样时代 发表于 2021-3-25 08:55
楼主,方便问一下工程中的MemoryManage模块是引用的哪里的吗?之前没接触过想学习下

是read cache, write no cache
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-5-12 10:10:12 | 显示全部楼层
感谢楼主分享哈
回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2021-12-13 22:12:17 | 显示全部楼层
刚好下来试试,把楼主的程序存在论坛防止丢失

STM32H7_UART1_DMA_FIFO.7z

1.17 MB, 下载次数: 68

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 03:41 , Processed in 0.332160 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表