硬汉嵌入式论坛

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

[UART] STM32H7上UART接收和发送都增加了16个数据的硬件FIFO,大家可以根据需要开启

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2018-4-17 01:41:38 | 显示全部楼层 |阅读模式
QQ截图20180417013923.png
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
发表于 2018-4-17 06:54:11 | 显示全部楼层
本帖最后由 leiyitan 于 2018-4-17 07:02 编辑

记得去年做一个项目时,使用的407处理器,使用到5个uart,Dma+空闲中断的方式。两个spi,还有M2M,收发全使用了dma,两个dma16个流全部使用完了,程序跑起来后问题不少,很容易进入硬件错误,各种调试测试一直都没有解决。猜测Dma这么多流和通道,还有优先级,太多太忙使用Dma,其仲裁器也会忙出错。Dma能配合fifo使用么,还有此处提到h7的fifo和f407处理器里提到的fifo不知道有什么区别
回复

使用道具 举报

4

主题

531

回帖

543

积分

金牌会员

积分
543
发表于 2018-4-17 08:56:36 | 显示全部楼层
leiyitan 发表于 2018-4-17 06:54
记得去年做一个项目时,使用的407处理器,使用到5个uart,Dma+空闲中断的方式。两个spi,还有M2M,收发全 ...

ST的DMA每个流最好只用一个通道,这样一般是没问题的!但是一个流使用多个通道就比较麻烦,你就需要做使用标志位,让中断使用对应的通道去工作,不然会错误
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
 楼主| 发表于 2018-4-17 09:53:08 | 显示全部楼层
leiyitan 发表于 2018-4-17 06:54
记得去年做一个项目时,使用的407处理器,使用到5个uart,Dma+空闲中断的方式。两个spi,还有M2M,收发全 ...

串口FIFO和DMA的FIFO是两种不同的东西。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
 楼主| 发表于 2018-4-17 09:58:35 | 显示全部楼层
qiousanxi 发表于 2018-4-17 08:56
ST的DMA每个流最好只用一个通道,这样一般是没问题的!但是一个流使用多个通道就比较麻烦,你就需要做使 ...

F4和F1有区别,F1是多个外设通过多路选择器到一个通道。

而F4是多个通道通过多路选择在到一个数据流。这才是根本原因。
回复

使用道具 举报

4

主题

531

回帖

543

积分

金牌会员

积分
543
发表于 2018-4-17 10:50:46 | 显示全部楼层
eric2013 发表于 2018-4-17 09:58
F4和F1有区别,F1是多个外设通过多路选择器到一个通道。

而F4是多个通道通过多路选择在到一个数据流。 ...

嗯,玩f7.的时也遇到他那种情况!我参考的官方demo
回复

使用道具 举报

1

主题

16

回帖

19

积分

新手上路

积分
19
发表于 2018-4-17 11:08:45 | 显示全部楼层
leiyitan 发表于 2018-4-17 06:54
记得去年做一个项目时,使用的407处理器,使用到5个uart,Dma+空闲中断的方式。两个spi,还有M2M,收发全 ...

最近两年项目上基本DMA都是全用上,没有任何问题,不要怀疑片子的问题,问题一般是出在人身上。要是st有这种低级bug那也就不用做了。我还希望st多开一些dma呢,这样中断频率大大降低。
回复

使用道具 举报

1

主题

16

回帖

19

积分

新手上路

积分
19
发表于 2018-4-17 11:09:30 | 显示全部楼层
qiousanxi 发表于 2018-4-17 10:50
嗯,玩f7.的时也遇到他那种情况!我参考的官方demo

F765用了一年了。dma全部开启,没遇到过问题。
回复

使用道具 举报

4

主题

531

回帖

543

积分

金牌会员

积分
543
发表于 2018-4-17 11:15:39 | 显示全部楼层
dzc0426 发表于 2018-4-17 11:09
F765用了一年了。dma全部开启,没遇到过问题。

一个流,使用多通道的时候!需要注意一下就好了
回复

使用道具 举报

1

主题

16

回帖

19

积分

新手上路

积分
19
发表于 2018-4-17 11:39:37 | 显示全部楼层
qiousanxi 发表于 2018-4-17 11:15
一个流,使用多通道的时候!需要注意一下就好了

我记得一共是16个,可以分配个8个需要双向通信的外设。一个tx对应一个通道,一个rx对应另一个通道。这样肯定没问题的。
回复

使用道具 举报

4

主题

531

回帖

543

积分

金牌会员

积分
543
发表于 2018-4-17 11:43:46 | 显示全部楼层
dzc0426 发表于 2018-4-17 11:39
我记得一共是16个,可以分配个8个需要双向通信的外设。一个tx对应一个通道,一个rx对应另一个通道。这样 ...

是的,但是多个通道对应一个流,就需要标志位处理,相应的hal的dma.处理函数
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2018-4-17 12:40:39 | 显示全部楼层
FIFO也开始有了,看来ST追上来了
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
发表于 2018-4-17 13:22:50 | 显示全部楼层
本帖最后由 leiyitan 于 2018-4-17 13:29 编辑
eric2013 发表于 2018-4-17 09:58
F4和F1有区别,F1是多个外设通过多路选择器到一个通道。

而F4是多个通道通过多路选择在到一个数据流。 ...

f1就是一个多路开关,f4是一个8*8*2数字开关矩阵,最终到的高速路还是只有两条,每条路同时只能有一辆车,车来的太多的时候仲裁器都会被玩奔溃…
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
 楼主| 发表于 2018-4-17 13:49:15 | 显示全部楼层
leiyitan 发表于 2018-4-17 13:22
f1就是一个多路开关,f4是一个8*8*2数字开关矩阵,最终到的高速路还是只有两条,每条路同时只能有一辆车 ...

是的,我把这个问题的框图贴出来吧,方便其他看此贴的网友:

F1系列
1.png

F4系列
QQ截图20180417134604.png


H7系列
QQ截图20180417134632.png



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 12:47 , Processed in 0.351728 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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