前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

单片机从SPI Flash刷图片到TFT屏(单片机adc是什么意思)

qiguaw 2024-09-16 01:44:19 资源文章 17 ℃ 0 评论

快速刷屏

最近的一个项目用到了2.4寸TFT LCD屏,分辨率为240*320,其中客户对屏幕的响应速度不太满意,后来做了优化,结果尚可。

一 硬件平台介绍

主芯片采用新唐NUC126芯片,64PIN,主频72MHz,内部Flash为256KB,内部RAM为20KB。

TFT LCD屏控制器为ST7789,屏幕采用8位并口。

由于图片资源较多,使用了8M字节 SPI Flash保存图片数据。图片像素是RGB565格式保存,一个像素占2字节空间。

项目要求:在项目上,界面有全屏的背景图片,该图片保存在SPI Flash,在上层有一些参数,如电池电量、阻值、功率、电压、温度等,是可变的。这些参数是彩色的,甚至有的是透过背景显示的。

二 刷屏接口性能

NUC126 SPI速度,原厂理论上说可以到36Mbps(主频的一半),但实测最高为28.75Mbps = 144M/5.(PLL频率为144M)

因为RAM只有20KB,代码已经使用了10KB左右,剩余的RAM很有限。所以采取的方式是按行读出,读一行刷一行。

刷屏效果很差,能看到显示屏从上到下依次刷数据。

三 刷屏速度优化

1 为了快速将图片数据刷到屏幕上,我使用了DMA控制,建立两个缓存(保存一行像素,各占480字节)以便进行乒乓操作,在将数据写入屏幕端的同时可以继续从SPI Flash读数据,减少了等待时间。

从外部SPI Flash读取数据到刷屏完成 所需要的时间为132MS。很明显能看到刷屏动作。

软件直接通过并口刷全屏单色(不需要从SPI Flash取数据)的时间为28MS。由此可见,大部分的时间消耗在从SPI Flash读取数据。

2 由于图片数据一个像素是RGB565格式保存的,也就是一个像素占2字节,将DMA传输位宽设为16位时,刷一幅全屏图片需要87MS,效果还是明显的;

同样的,将DMA数据宽度设为32位时,刷一幅全屏图片需要68MS。由此可见,DMA数据宽度不同,对传输效果有较大影响的。

3 以上都是按行读取,改为一次读两行数据,耗时65MS,一次读4行,耗时63MS,一行读8行,耗时63MS。最优的是一次读 4行。

四 总结及后续

MCU SPI速度受到了限制,远低于并口速度。通过DMA乒乓操作、DMA的传输优化大大提升了刷屏速度。

后续改善建议:

1 MCU选择SPI速度高的,一般SPI速度理论上可达到主频的一半。如SPI速度达到50Mbps,速度也会有明显提升。

2 MCU选择带有Qaud SPI(4 IO模式)功能的,如果用与NUC126引脚兼容的M452芯片,使用Qaud SPI,从SPI Flash读取数据的速度应该还会有较大提升。

3 在UI设计时,也要尽量考虑到不要全屏切换,全屏切换的数据量很大,对硬件的要求也高,局部刷新,或者大部分区域采用单色。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表