1、引言
客户需要评估 STM32U5+SPI LCD 整屏刷新时的显示效果。一般 SPI LCD 都内置了GRAM,在使用 TouchGFX 时都会选用部分帧缓冲以节省内存。客户需要整屏刷新,并尽量节省内存,则需要使用单帧缓冲的方式。
2、问题
本文使用 STM32U575 NUCLEO 板与 X-NUCLEO-GFX01M1 板上的 SPI LCD 进行了测试。此 LCD 分辨率为 320x240,16bpp 色深,整屏传输时数据量为 153600 字节。而U5 的 GPDMA 一次数据传输要小于 64K,因此 LCD 整屏传输需要由多次 DMA 传输完成。利用 U5 的 GPDMA 链表模式,可将帧缓冲的数据组织到一个链表中,由 DMA 一次性传输完成即可实现 LCD 的整屏刷新。
在实际调试中却发现,在准备好 GPDMA 链表后,调用 HAL_SPI_Transmit_DMA 函数启动链表传输后,屏幕显示不完整,也没有 DMA 传输完成回调
3、小结
在使用 STM32U5 的 GPDMA 链表模式进行 SPI 通信时,需要将 SPI 的 TSIZE 配置为0,才能使链表的多个节点配置逐个执行,完成所有数据的发送。
阅读全文