单片机/MCUwilliam hill官网
直播中

jf_86933706

1年用户 11经验值
擅长:嵌入式技术
私信 关注
[问答]

STM32使用HAL库SPI+DMA发送导致TFT屏幕图片显示错误?

我用的屏幕是普通的1.8寸TFT屏幕,使用SPI传输数据正常,spi显示图片也没有问题,我想使用DMA+SPI去发送图片,结果导致成了这个样子微信图片_20231114204226.jpg,SPI和DMA设置的数据长度都是八位,图片是16位BMP 128*160 ,数组大小为【40960】,请问可能是什么错误啊?这是原图微信图片_20231110110125.jpg,这是使用SPI正常显示效果微信图片_20231114205822.jpg

已退回20积分

回帖(4)

阿信509

2023-11-15 16:56:15
想办法把发出去的数据看一下就明白了,看看有没有啥手段
举报

jf_86933706

2023-11-15 20:48:52
问题已解决,由于图片数据是16位的且低位在前,DMA设置的是8位,导致显示错误,只需把图片数据改为16位的高位位在前即可。但是我又遇到了新的问题,发送图片后,使用SPI发送数据会导致都无法正常显示,会乱码闪屏
举报

华仔stm32

2023-11-25 06:50:26
把速度降低一点,用逻辑分析仪抓一个包的数据,看看是否跟你用非DMA的数据是否一样。这样就可以找到问题的所在。
举报

胖子的逆袭

2023-12-7 17:01:32
很抱歉,无法直接分析和确定问题的原因。有关STM32使用HAL库的SPI+DMA发送数据导致TFT屏幕图片显示错误的问题,可能有多种原因。

首先,请确保您的SPI和DMA配置正确。确保数据长度和位序设置正确,以及传输速度和时钟设置正确。您可以参考相关的STM32参考手册和HAL库的文档来确认您的配置是否正确。

其次,可能是您的DMA缓冲区设置不正确导致数据传输错误。请确保DMA缓冲区地址和大小设置正确,并且能够正确地存储和传输数据。

另外,也有可能是您的TFT屏幕驱动程序有问题,无法正确解析16位的BMP图片数据。请检查您的屏幕驱动程序,确保能够正确地解析和显示16位的BMP图片数据。

最后,您可以尝试减小图片的大小,先测试较小的图片,以确认问题是否与图片大小有关。如果较小的图片可以正常显示,那么可能是您的DMA和SPI的设置不支持较大的数据传输。

如果您仍然无法解决问题,建议您仔细检查您的代码和配置,确保没有其他问题。您还可以查找相关的STM32社区或william hill官网 ,咨询其他开发者是否遇到过类似的问题,或者直接向STM32的技术支持团队寻求帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分