|
【前言】 前面的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评测】CANFD Bootloader(1)
STM32U3B5/U3C5:为超低功耗设计带来高性能 DSP 与边缘 AI
【STM32U3评测】使用INS5699 RTC模组
【评测汇总】STM32U3 系列开发板评测全汇总 | 吃透新品核心性能与实战场景
【stm32U3测评】FDCAN 满载性能实测
【STM32U3 评测】CAN FD测试与UDS OTA升级
【STM32U3 评测】基于 CAN 的 UDS OTA 不完全实现指南
【STM32U3评测】轻量级人脸检测部署。
【STM32U3 评测】FDCAN 性能极限与软硬件协同开发实测
【STM32U3评测】基于 HSP 的轻量级人脸检测部署
微信公众号
手机版