关于DMA和中断的问题

2019-07-20 06:09发布

本帖最后由 老李的森林 于 2018-9-14 09:06 编辑

STM32F7
DMA在访问SDRAM时,因为数据量大,所以需要的时间会比较长。假如此时发生中断,也要访问SDRAM,
此时会发生什么情况,DMA会被打断么,
这种打断的情况是否可以让用户选择。




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
edmund1234
1楼-- · 2019-07-20 11:34
情况分两种,
一) 是DMA循环的把abc_buf的内容送到usart_DR去, 而你在同时有需要也在读写abc_buf的内容
二) 是DMA循环的把abc_buf的内容送到usart_DR去, 而你在同时有需要也在读写RAM的其它区域

二)是不会有问题
一)读是不会有冲突的, 而写则有方法避开, DMA有个buffer半满或全满的标志或中断, 让你确定DMA正在读哪儿的RAM, 便可让DMA与你的读错开, 比如DMA在读前半段abc_buf, 后半段的你可以写, 相反, DMA在读后半段时, 前半段你可以写

老李的森林
2楼-- · 2019-07-20 16:17
本帖最后由 老李的森林 于 2018-9-13 14:27 编辑

感谢回复,我现在的情况,LTDC需要读SDRAM,  与此DMA和中断也要各自写SDRAM,    而且二者要写的数据都不少,同时发生写SDRAM的时候,到底谁优先呢,这个优先级是否可以设置的。。

现在的现象是分别写数据的时候,写数据正常,只要再操作LTDC的层缓冲区(也就是改变屏幕显示),屏的一部分区域会不时乱掉,显然是冲突了。
该如何解决呢
老李的森林
3楼-- · 2019-07-20 19:32
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-20 20:04
老李的森林 发表于 2018-9-13 14:26
感谢回复,我现在的情况,LTDC需要读SDRAM,  与此DMA和中断也要各自写SDRAM,    而且二者要写的数据都不 ...

这个是总线仲裁的事情了
一般来说,你访问SDRAM越频繁就越占带宽,可能会导致lcd短暂花屏。
但是不会像你说的数据错乱。
老李的森林
5楼-- · 2019-07-20 22:39
那可能还是我的程序处理有问题,我再看看,谢谢原子哥

一周热门 更多>