欢迎光临散文网 会员登陆 & 注册

关于STM32的SPI加DMA通讯速度的调试总结

2019-12-29 11:16 作者:叭布-  | 我要投稿

最近在琢磨240*320的RGB565的LCD屏幕的写入,移植了店家提供的例程,尝试各种方法,清屏需要的时间由原来的94ms变成了24ms到26ms,使用的单片机是STM32F411CEU6,单片机最后使用的两种清屏幕的程序如下:单纯的SPI1传输SPI1加DMA传输

单片机模拟SPI通讯实在是太慢了!

耗时测试的方法:使用了个小软件,能在收到串口信息时输出当前时间(精确到ms),而单片机清屏开始前串口发送 “s”到电脑,结束时又发送“P”到电脑,对比两次时间的差距就知道花了多少时间了。

这是普通的SPI写入清屏的耗时,一个320*240的循环,每次写入2个Byte,这次耗时38ms

而DMA加SPI写入数据的思路是,DMA传输512个Byte,等待传输结束,再次传输512个Byte,循环300次。

这次的运行耗时为25ms,由此可见DMA加SPI比单纯SPI发送快上不少,但具体原因我现在还不知道,如果谁有资料推荐的话在评论发一下链接,非常感谢。

SPI1的发送和接收都是挂DMA2上的,我开始感觉,一个DMA不同通道同时搬运数据会不会让清屏时间变长?那样的话一个DMA不就只能开启一个通道?最后又花些时间实现SPI1加DMA同时发送接收时,清屏时间依然没有什么变化,总的来说,DMA搬运数据可能是STM32传输数据达到最快速度的必须的硬件了。


使用的小软件大概学过C#的查查资料都能做出来了,就不放链接了。

关于STM32的SPI加DMA通讯速度的调试总结的评论 (共 条)

分享到微博请遵守国家法律