你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 DMA串口发送 FIFO错误中断频繁进的问题

[复制链接]
煜寒.H 提问时间:2017-7-13 15:42 /
STM32F407ZET6的片子,采用DMA进行串口发送,DMA部分相关固定配置如下:         DMA_InitStructure.DMA_BufferSize =  255;//固定要发送的字节长度
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
        DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
        DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
        DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
        DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
        DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
        DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA在发送中断中,置完成标志位,下次发送时检查该标志位,发送完成则再次发送。
发送能正常发送,发送完成中断也能正常进,但每次发送时都会先进FIFO错误中断。何解????

收藏 1 评论7 发布时间:2017-7-13 15:42

举报

7个回答
heluo1985 回答时间:2018-5-28 10:07:44
在配置完DMA之后,再使能串口触发DMA发送 该问题即可解决 每次DMA发送之侯,下次发送之前 关闭一下 串口触发DMA发送,使能DMA之后再将使能打开

点评

串口发送前,先使能DMA,让DMA总线仲裁让CPU授权出MemoryBus,标准库的例子里也是大佬这样,666  发表于 2019-4-4 07:36
衔胆栖冰 回答时间:2017-10-9 08:39:54
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;   
FIFO失能,后面的配置有什么用?!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-10-9 08:45:54
楼上的说的对,
既然FIFO都关闭了,
应该把FIFO的中断也关闭吧。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

中山无雪 回答时间:2017-10-9 12:58:53
五哥1 回答时间:2017-10-10 00:12:49
先签到下
heluo1985 回答时间:2018-5-26 17:04:46
In direct mode, the FIFO error flag can also be set under the following conditions:
• In the peripheral-to-memory mode, the FIFO can be saturated (overrun) if the memory
bus is not granted for several peripheral requests
• In the memory-to-peripheral mode, an underrun condition may occur if the memory bus
has not been granted before a peripheral request occurs
If the TEIFx or the FEIFx flag is set due to incompatibility between burst size and FIFO
threshold level, the faulty stream is automatically disabled through a hardware clear of its
EN bit in the corresponding stream configuration register (DMA_SxCR).

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版