慢速的串行SPI-TFT彩屏,如何发挥STC32G12K128/STC32G8K64/STC8H8K64U的刷屏极限速度
慢速的串行SPI-TFT彩屏,没用16位并口屏,客人问如何发挥STC32G12K128/STC32G8K64/STC8H8K64U的刷屏极限速度
attach://16744.mp4
程序中,使用的是硬件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高速模式。
寄给梁工帮忙实际测试下 请梁工帮忙修改,挑战刷屏极限 客人用的是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屏的,
视频级的波形显示。
再用上这套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)
第一版 非DMA模式传输速度快一点,下午继续,要加DMA
attach://16793.mp4 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 的速度是极限,不是其他那
STC32G的独立SPI的速度控制
STC32G的 USART1 / USART2 支持的 SPI 速度控制
页:
[1]
2