DMA传输数据到显示屏的问题汇总

1.如果机子不跑死而屏幕不亮,大概率是DMA传输的时间太短了,要加个delay。只刷新半个屏幕,一半不变,那就是数组只传输了一半,同理可得,变了一截,是只传输了一截。
2.图像显示的失真比较厉害的话,可以在DMA传输之前和之后都SCB_CleanInvalidateDCache();一下。我因为传输的数据量比较大,使用SCB_CleanInvalidateDCache()之后,传输字节之间间隔比较大,改为了仅在DMA传输之前SCB_CleanDCache();一下,效果还是比较好的,时间间隔小了很多。
3.注意,先初始化DMA再初始化其它外设,不然DMA会莫名其妙出错。
4.如果要结合LVGL,注意是全屏刷还是半屏刷,每次DMA传输的数据量要与LVGL刷新的一致,不然显示也会异常。

参考内容:
1.BUG分享|SPI接口屏幕无法点亮(SPI无法判断发送完成)https://www.cnblogs.com/lxy0558/p/17933881.html
2.[DMA2D] STM32H743 LVGL开启DMA后 屏幕显示异常https://www.armbbs.cn/forum.php?mod=viewthread&tid=125829

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值