|
【前言】 前面的TouchGFX的LCD数据发送是使用阻塞式的发送,虽然画面比较流畅了,但是今天我成功的切换到了gpdma进行数据传送,经调试好后,画面切换以及拖动,相比以前有了非常大的提升,可谓经典丝滑,现将我的优化记录如下。 在touchGFX中主要的接口是在TouchGFXHAL.cpp中的flushFrameBuffer函数。他负责将touchGFX生成的图像,通过spi发送给LCD屏。 刷新后生成的数据块为对象rect,rect对象在定义中是如下描述的:
里面包含了起始坐标,图像的长与宽。我们拿到这块数据的内存地址,然后通过spi发送给LCD屏。 【优化前的代码】
在这里我是使用HAL_SPI_Transmit来发送的。 【优化后代码】 在切换为spi_dma之前,需要在stm32cubeMX中配置GPDMA,配置如下图所示:
配置好后,还需要在spi中打开中断。
然后修改发送代码如下:
最后还需要添加两个中断回调函数:
【测试效果】 下载后,改善的效果是非常明显的,为了可视化的观察,我特意在发送前与发送后,通获取系统的tick数,执行完后,再获取,相减后通过串口打印出来。
阻塞式使用的tick数:
使用dma+16bit传递的tick:
可以看到通过优化后,提升的效果是非常之明显的。 |
有奖直播 | STM32U3新系列超低功耗MCU — 近阈值设计开启最佳能耗新纪元
《STM32U3线上课程》学习笔记+FLASH存储器的核心特性
《STM32U3线上课程》学习笔记+更丰富的外设兼容和总线矩阵学习和总线矩阵学习
【NUCLEO-STM32U385RG开发板测评】02 基于Vscode搭建开发环境
近阈值技术引领者:STM32U3系列的能效与安全革新
经验分享 | 基于LL库实现STM32U5 LPTIM 功能的代码演示
【NUCLEO-STM32U385RG开发板测评】05 启用ThreadX
【NUCLEO-STM32U385RG开发板测评】04 低功耗测试
【STM32U3评测】5.U3中TrustZone的学习使用
【STM32U3评测】4.初步移植ThreadX
微信公众号
手机版