本帖最后由 supermiao123 于 2019-2-21 09:20 编辑
大家好,很高兴能参与本次测评,感谢ST和EEW提供的测评机会。 由于之后的测评内容都需要TFT屏来显示测评内容,所以刚开始就先来用H7的SPI来刷刷屏。
TFT屏是个人机交互的好方式,就像手机没有屏,电脑没有屏,很多事情就不那么直观了,而屏幕显示的内容不同场合有不同的需求,有的静态显示就好,比如展示一张照片,有的则需要快速刷新,比如看视频。对于我们电子爱好者来说,也会遇到类似的场合,比如显示网络IP地址,因为不会经常更改,静态显示就可以。再比如利用摄像头采集图像,则需要比较快速的刷新屏幕,如果不够快,屏幕会一卡一卡的。卡与不卡可以直接反映出处理器与屏的通讯速度的快慢。接下来我们就来测试一下H7的刷屏速度吧!
先来一张H7与TFT的合影吧。如图所示,我用了一个小的TFT,128X160分辨率。具体参数如下图。
驱动IC是ST7735S,驱动方式是4线SPI。
ST7735S的4线SPI的时钟周期至少是66ns即最快是15MHz左右的速度。
TFT的参数了解了下面就看H7的SPI配置,我使用的STM32CUBE来进行初始化代码生成。SPI设置如下图。
H7的SPI速度提高的很多,最高可以达到100Mbit的速度,可惜这个TFT还不支持这么高的速度,先选个25M吧,上面手册写着只能支持到15M。
因为要用DMA方式,添加SPI发送DMA。
上图是时钟配置,主频倍到了400M,外设时钟200M,SPI是200M的8分频,25M。
下图是生成的SPI初始化代码。
下图是main函数里关于TFT的几行代码,使能SPI,初始化屏,然后紧接着让屏刷个单色看看程序和硬件是否有问题。
先期已经验证了硬件和软件,这里就不再多说调试过程了。主要看下屏的刷新时间对比。
我主要对比两种方式刷屏,SPI刷屏和SPI DMA方式刷屏。普通IO刷屏就不再对比了,IO再快肯定也是不如SPI快。
对比方式如下图,在采集前HAL_GetTick()获取当前Tick,showimage1是SPI刷屏,运行完获取Tick,再接着运行
showimage2是DMA方式刷屏,运行完进DMA完成中断获取当前tick。
完成后统计时差,tick[3]是SPI方式,tick[4]是SPI DMA方式。
可以看到SPI是0x1A,即26ms的时间刷一次屏,而SPI DMA花费的时间是0XF,即15ms。由于SPI速度都是一样的,差异应该主要在DMA效率更高上。
下图是SPI方式,数据需要一个一个捯饬进去。
下面是DMA方式,配置好DMA相关的内容直接开始DMA,话说DMA方式里我还多加了1ms延时,还有配置寄存器这些操作。
到此,SPI DMA方式速度对比就差不多到这里了,不过过程好像挺简单,其实里面有不少准备工作。
最先开始是调试DMA,下面这张图是正常,红色渐变底。SPI方式刷没有问题。
可是DMA刷就成下面这两幅图了。
最后找到原因是刷屏数据错位了,原因是在DMA初始化时先禁用SPI这个地方产生了一个毛刺,多了两位。最后不禁用SPI就解决了。
还有一个调试的过程是SPI的速度选择,100M是肯定不行的,出不来图像。50M的如下图。
这个可能还是有错位的情况在里面。但是比上面说的错位好很多,应该还是速度太快的原因。
下面这张是25M的速度刷出的图片,应该算是合格的。
以上就是关于H7的SPI刷屏的相关内容,不过要夸一句,400M主频干啥都够,这么快的单片机超赞!
此内容由EEWORLD论坛网友supermiao123原创,如需转载或用于商业用途需征得作者同意并注明出处