国学芯用 发表于 2023-8-11 09:21:40

慢速的串行SPI-TFT彩屏,如何发挥STC32G12K128/STC32G8K64/STC8H8K64U的刷屏极限速度

慢速的串行SPI-TFT彩屏,没用16位并口屏,客人问如何发挥
STC32G12K128/STC32G8K64/STC8H8K64U的刷屏极限速度
attach://16744.mp4






飞哥 发表于 2023-8-11 09:30:33

程序中,使用的是硬件SPI传输数据,但是每个字节都会等待SPI传输完成标志位置1。
这种写法跟软件模拟SPI速度差距不大。如果能一次传输1组数据就会快很多。
也就是要改用DMA SPI方式进行传输。

HSCLKDIV = 3;               //HSPWM/HSSPI时钟源4分频
SPCTL = (SPCTL & ~3) | 3;   //SPI 时钟频率选择, 0: 4T, 1: 8T,2: 16T,3: 2T
HSSPI_CFG2 |= 0x20;         //使能SPI高速模式

这里的IO口、SPI时钟都是没设置到最大。而且使能了SPI高速模式。


神农鼎 发表于 2023-8-11 11:12:10

寄给梁工帮忙实际测试下

国学芯用 发表于 2023-8-11 11:22:40

请梁工帮忙修改,挑战刷屏极限

梁工 发表于 2023-8-11 11:23:28

客人用的是SPI串口屏,480*320的屏。
刷一屏需要写入的数据字节:480*320*2=307200。
MCU跑32MHz,SPI用2T,则SPI速度为16MHz,
加上传送数据、函数调用、装载数据、触发SPI、等待完成、函数返回,
每个字节超过了1us,所以刷新一屏需要500ms以上了,
就像客人的视频显示的速度,这个是正常的。

使用DMA传输,可以提速到200ms左右。
使用高速SPI+DMA,可以提速到100ms,这个要验证。

其实想速度快,必须使用16位数据的并口屏,可以刷出视频级的,
可以参考我写的“老梁示波器”的显示波形,就是用480*320 TFT屏的,
视频级的波形显示。

神农鼎 发表于 2023-8-11 11:28:48


再用上这套DMA乒乓缓冲技术/算法,几乎不占 CPU 的时间,
DMA 支持的 2组独立 SPI 自己折腾,自己发挥到极限,CPU忙其他的事





【新提醒】使用SPI_DMA+TFT_DMA双缓冲对TFT刷屏,不占CPU时间 - DMA: 支持4组串口,3组SPI,I2C,TFT-i8080/M6800,ADC - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

国学芯用 发表于 2023-8-11 12:07:56

第一版 非DMA模式传输速度快一点,下午继续,要加DMA
attach://16793.mp4

神农鼎 发表于 2023-8-12 10:03:51

DMA-SPI FLASH
DMA-SPI TFT

STC32G12K128-35MHz
1,DMA-SPI-Flash, 到 DMA-SPIx-TFT, 几乎不占CPU时间;
2,STC32G12K128-35MHz: SPI-FLASH-17.5M bps, SPI-TFT-17.5M bps;
3, SPI 速度相同的情况下,不管哪种 MCU 速度就是一样的快

STC32G8K64-42MHz
1,DMA-SPI-Flash, 到 DMA-SPIx-TFT, 几乎不占CPU时间;
2,STC32G8K64-42MHz: SPI-FLASH-21M bps, SPI-TFT-21M bps;
3, SPI 速度相同的情况下,不管哪种 MCU 速度就是一样的快
==========================================
刷 SPI-TFT 只比较 SPI的速度就行了,其他比较都南辕北辙了,
SPI的TFT屏用320*240比480*320数据量少 50%,用并行 8位/16位为好

用 SPI-TFT/480*320外行了,用DMA提高主频改成 SPI-TFT/320*240
==========================================
SPI 的速度是极限,不是其他那



神农鼎 发表于 2023-8-12 10:33:31

STC32G的独立SPI的速度控制




STC32G的 USART1 / USART2 支持的 SPI 速度控制






国学芯用 发表于 2023-8-12 10:37:58


页: [1] 2
查看完整版本: 慢速的串行SPI-TFT彩屏,如何发挥STC32G12K128/STC32G8K64/STC8H8K64U的刷屏极限速度