(四)中提到一个问题,LTDC 使用双buffer,花屏问题。四处查找也没找到对应的办法,自己试了很多方式也没解决。没法子,只好使用LTDC的单buffer。
使用单buffer,看起来简单了,其实不然,我是希望保持ARGB8888格式不变,这样用int型变量正好一个像素,省去了3byte的间隔的问题。
没有双buffer,前景色和背景色的融合就需要dma2d了。此时如果还用之前的方式,我竟然失败了。没有把预期的像素显示出来。
想法很简单,一片空间,我赋值之后,用dma2d搬移到ltdc的单buffer里,然后做一下前景,背景融合而已。结果失败了……………………
利用dma2d搬移的所有东西都么有显示出来。继续找问题,继续找原因。
DMA2D函数用错了。初始化的时候选择的是双层dma2d,所以要用blend的dma2d,两层融合。实验后,发现又可以刷屏了。代码已上库。
https://gitee.com/guyspring/CubeMX_ArtPi
另外有个问题,ltdc频率不能太高,我试了下,25MHz比较稳,就这个了,32MHz和28Mhz都有问题,就不继续试了,后续就先用25MHz了。
总结一下,其实这几天的问题都很简单,除了ltedc那个双缓存的问题没解决,其它的都只是之前没理解透彻而已。下一步还是想想dma2d的用武之地才对。搞一个gui,让dma2d发挥作用才对。