10154|8

527

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【 ST NUCLEO-H743ZI测评】(1)SPI之DMA刷TFT屏 [复制链接]

本帖最后由 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原创,如需转载或用于商业用途需征得作者同意并注明出处







此帖出自stm32/stm8论坛

最新回复

请问一下我和你一样设置完后无法发送是为什么  详情 回复 发表于 2023-12-27 18:55
点赞 关注(1)
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
性能的确好
此帖出自stm32/stm8论坛

点评

这个都跟以前的2440主频差不多了,以前拿着个51都不敢看2440  详情 回复 发表于 2019-2-21 09:32
 
 

回复

527

帖子

1

TA的资源

一粒金砂(高级)

板凳
 

这个都跟以前的2440主频差不多了,以前拿着个51都不敢看2440
此帖出自stm32/stm8论坛
 
 

回复

1366

帖子

6

TA的资源

版主

4
 
感谢楼主分享。针对SPI屏幕的,不过有几个建议给楼主
1、SPI进行DMA收发,建议发送和接收都使能DMA,接受时发送DMA指向dummy,内存地址不增;发送时,接收DMA指向dummy,内存地址不增。这样就能解决SPI数据错位或者丢失问题,这个跟SPI速率是没关系的。
2、关于SPI数据需要颠倒问题,我现在也是通过处理把数据颠倒过来,其实尚不清楚原因。我项目中使用的是外部FLASH数据通过SPI DMA直接发给FSMC显示。
3、楼主SPI DMA刷这个分辨率需要15ms还是有点偏慢了。我刷同样的分辨率,F1的SPI也就需要20多ms左右
此帖出自stm32/stm8论坛

点评

多谢大神指点,当前我写的这个程序DMA只是在刷数据得时候使用,配置指令的时候是使用的普通SPI模式,配置完地址之后再切换成DMA刷屏,这个不知道有没有更好的方式,有的话不知可否分享一下。我当前使用SPI只是25M  详情 回复 发表于 2019-2-21 11:32
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

264

帖子

0

TA的资源

一粒金砂(中级)

5
 
感觉H7都可以为所欲为了。@RCSN 大佬的建议很不错。
此帖出自stm32/stm8论坛
 
 
 

回复

527

帖子

1

TA的资源

一粒金砂(高级)

6
 
RCSN 发表于 2019-2-21 10:30
感谢楼主分享。针对SPI屏幕的,不过有几个建议给楼主
1、SPI进行DMA收发,建议发送和接收都使能DMA,接受 ...

多谢大神指点,当前我写的这个程序DMA只是在刷数据得时候使用,配置指令的时候是使用的普通SPI模式,配置完地址之后再切换成DMA刷屏,这个不知道有没有更好的方式,有的话不知可否分享一下。我当前使用SPI只是25M的,这个屏不支持太高的,所以性能提高在这个屏上来看不出太多。数据颠倒的主要原因应该是我这个取模软件的问题,看着有数据颠倒的功能却是灰的,只能自己想办法去再颠倒回来。多谢您的建议
此帖出自stm32/stm8论坛
 
 
 

回复

1368

帖子

6

TA的资源

版主

7
 
H系列要上系统,上哪些系统会合适,楼主在基础搞定,可以专门搞一系统实时系统相关的文章
比如freertos,thread-rtt,ucos...等
还可以做一些针对的测试
比如界面系统,网络等
此帖出自stm32/stm8论坛

点评

赞同,很好的建议,之后有时间一定要搞一下!  详情 回复 发表于 2019-3-15 21:53
 
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 

回复

527

帖子

1

TA的资源

一粒金砂(高级)

8
 
懒猫爱飞 发表于 2019-3-13 13:29
H系列要上系统,上哪些系统会合适,楼主在基础搞定,可以专门搞一系统实时系统相关的文章
比如freertos,th ...

赞同,很好的建议,之后有时间一定要搞一下!
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

请问一下我和你一样设置完后无法发送是为什么



此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表