tzz1983 发表于 2024-9-18 13:28:08

刷屏,画重点:DMA 需要 RTOS!38ms,DMA-i8080并口8位刷TFT320*240彩屏@ILI9341

刷屏,画重点:DMA 需要 RTOS
38ms,DMA-i8080并口8位刷TFT320*240彩屏
===@ILI9341,Ai8051U 实验箱
19ms,DMA-i8080并口16位刷TFT320*240彩屏
===@ILI9341,Ai8051U 实验箱
最近在论坛上看到一些关于TFT刷屏的贴子,
前几天买了个20元的TFT,正好到货了,也来试一试 !!!
首先来聊两个话题,分别为 “刷屏时间” 和 “DMA释放CPU”。
后面再简单介绍代码。
刷屏时间:
条件:40M主时钟,DMA-8位并口,
仅计算刷屏时间,不计算准备数据的时间
代码为红绿蓝三基色320*240整屏循环刷,
起始和结束信号用IO输出,接入示波器直接看。
结论,320*240整屏刷屏时间为: 38ms
理论上用16位并口还可以再提升一倍

259
关于DMA释放CPU:
前段时间在论论上看到“发现启动DMA传输后,要等待传输完成”
这样一种论调,似乎DMA真正的作用成摆设了。
其实并非如此:以下的代码为循环播放两个图片来模拟动画,
可以看到,CPU 使用率 始终保持到 1%。

260

DMA释放CPU结论:
如果使用了RTOS,则DMA的作用非常大。
数据传输能力不逊色于CPU本身!
祼机用DMA性能提升确实不大,
要么是周期性的DMA,不需要查询上一次DMA是否已经结束,
要么就是等待上次DMA结束,可以看出限制性能的是祼机, 而不是DMA本身.

代码介绍:
力求最简的方式呈现,只体现基础代码,或许可以成为您项目的起点。
(部分来源为卖家例程)

先看DMA配制:没用库,就5行搞定DMA配制。
void DMA_LCD_Config(void)
{
    DMA_LCM_CFG   = 0x8F;
    DMA_LCM_ITVH    = 0x00;
    DMA_LCM_ITVL    = 0x00;
    DMA_LCM_STA   = 0x00;
    DMA_LCM_CR      = 0X80;
}

TFT配制,也是5行搞定:
void LCM_Config(void)
{
    LCMIFCFG    = 0x00;
    LCMIFCFG2   = 0x25;
    LCMIFSTA    = 0x00;
    LCMIFPSCR   = 0x00;
    LCMIFCR   = 0x80;
}

/*------------------------------------------------------------------------------
TASK_B, 刷屏或刷动画,基于uC/OS-II任务
------------------------------------------------------------------------------*/
void TASK_B(void *ppdata)
{
    LCD_Clear(0XFFFF);
    while(1)
    {
      //循环播放两副图片 模拟动画
      LCD_SetWindows(140,90,200-1,180-1);
      DMA_LCM_Write(IMG_DATA1,sizeof(IMG_DATA1));
      OSTimeDly(200);
      LCD_SetWindows(140,90,200-1,180-1);
      DMA_LCM_Write(IMG_DATA2,sizeof(IMG_DATA2));
      OSTimeDly(200);
/*
      //RGB 三基色循环刷整屏
      LCD_Clear(RED);
      OSTimeDly(500);
      LCD_Clear(GREEN);
      OSTimeDly(500);
      LCD_Clear(BLUE);
      OSTimeDly(500);
*/
    }
    if(ppdata);
}

代码:


神农鼎 发表于 2024-10-1 17:36:12

冲哥淘宝店有TFT320*240触摸彩屏配套了

https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=10511&pid=109185

神农鼎 发表于 2024-11-10 09:31:53



https://www.stcaimcu.com/forum.p ... id=10511&pid=103755


Ai8051U-LQFP48比普通 M0/M3,如 32F103C8T6 强太多的地方:
1,Ai8051U有TFPU@120MHz, 算力比他强, uS级硬件三角函数/浮点运算器;
2,Ai8051U的抗干扰比他强;
3,Ai8051U的内部复位是专业级的复位电路,彻底省外部复位;
4,Ai8051U的内部时钟完全满足串口通信要求,4组串口;
5,Ai8051U-LQFP48有 QSPI, i8080/M6800-TFT 接口,32F103C8T6没有;
6,Ai8051U的PWM支持硬件移相@120MHz
7,Ai8051U是 34K SRAM
8,Ai8051U是 自带硬件USB, 1个芯片就能直接USB连接电脑仿真/下载,全球唯一


Ai8051U,USB 型 1T 8051,支持32位和8位指令集, LQFP48-RMB2.3
===直接 USB下载 / USB仿真,1个芯片搞定
管脚兼容天王级别的:89C52RC,12C5A60S2
要兼容 8位8051指令集,可以用 Keil C51/IAR/SDCC 编译器
===就相当于更强大的 8H8K64U
要兼容 32位8051指令集,可以用 Keil C251 编译器,双核兼容设计
===就相当于更强大的 32G12K128, 32G8K64
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz, 硬件浮点/硬件三角函数 运算器
DMA支持PWM, DMA支持外设直接到外设, P2P
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, 4组串口,12位ADC, 轨到轨比较器
QSPI, SPI, I2S, I2C,TFT-i8080/M6800 接口
PDIP40,LQFP44,LQFP48
CPU32@42MHz

wadz 发表于 2024-9-18 18:37:07

楼主研究一下在刷整屏时出现的斜纹怎么解决,
查资料说是屏读写不同步造成的,
竖屏横用就会出现斜向撕裂,
一直没找到好的方法

tzz1983 发表于 2024-9-18 19:12:10

本帖最后由 tzz1983 于 2024-9-18 19:22 编辑

wadz 发表于 2024-9-18 18:37
楼主研究一下在刷整屏时出现的斜纹怎么解决,查资料说是屏读写不同步造成的,竖屏横用就会出现斜向撕裂,一 ...
啥斜纹呀,我不知道这是什么东西, 是眼晴看到的, 还是手机拍到的?
如果眼睛看上去没有,手机拍照有, 这种情况属于正常, 适当的拉远或调近摄像头一般都可消除.
同为电子产品, 像机扫描和和屏自身的扫描可能会有一些频率相关性

autopccopy 发表于 2024-9-18 19:56:24

我对彩屏不熟悉,也正在玩。
下面都是AI8051U@40MHz,
一个是软件SPI驱动ST7789-320X240,
另一个是8位并口驱动ILI9325-320X240单色刷屏。
抛开型号不同,明显是并口比SPI串口快很多。
没有使用DMA硬件SPI等,都是软件的,
屏幕配套的原始例程。待时间再优化看看...

80

邮箱 发表于 2024-9-18 19:59:03

{:4_250:}

tzz1983 发表于 2024-9-18 20:43:05

本帖最后由 tzz1983 于 2024-9-18 20:44 编辑

autopccopy 发表于 2024-9-18 19:56
我对彩屏不熟悉,也正在玩。
下面都是AI8051U@40MHz,
一个是软件SPI驱动ST7789-320X240,

SPI接口省端口, 速度也不错. 是非常实用的接口.

实际应用时,软件优化后, 大多数时候是不需要全屏刷新的,
比如某个控件只占很小一块面积, 刷新就特别快.

我也是头回玩彩屏哈, 这是我第一块买的彩屏!
平常都是工业应用, 用个KS0108的128*64, 了不得了, 哈哈

wadz 发表于 2024-9-18 21:02:10

tzz1983 发表于 2024-9-18 19:12
啥斜纹呀,我不知道这是什么东西, 是眼晴看到的, 还是手机拍到的?
如果眼睛看上去没有,手机拍照有, 这种情 ...

不是手机拍摄问题,直接看就有,两个大色块切换的时候

tzz1983 发表于 2024-9-18 21:30:24

本帖最后由 tzz1983 于 2024-9-18 21:32 编辑

wadz 发表于 2024-9-18 21:02
不是手机拍摄问题,直接看就有,两个大色块切换的时候
你抓的图片是我的吧,这个就是相机拍出来的, 实际没有这个条纹,
这个就是屏暮在刷新, 而相机正在扫描, 两组组合就成这样了,



看这张图, 这是坛友拍的, 或许是刷新速度不一样, 又或者是手机型号不一样,
同为绿色, 中间那段和上面就是不一样的,有明显的界线, 所以, 所见并非所得.
我们的眼睛时刻都在被电子设备“欺骗"着,
建议你 深刻的学习 点亮数码管的代码,
实际上, 同一时刻只有一个数码管是亮的, 但是我们看到的却是整排都亮的,
如果刷新率低, 用摄像机拍那就更惨了, 直接给你来段爆闪视频!

tzz1983 发表于 2024-9-18 21:37:45

本帖最后由 tzz1983 于 2024-9-18 21:39 编辑

wadz 发表于 2024-9-18 21:02
不是手机拍摄问题,直接看就有,两个大色块切换的时候
另一种解释就是, 只要你够快, 快到摄像机没法捕捉到切换过程, 那就不会有所谓的"斜纹"
一般达到100以上的帧频, 就不会有"斜纹"了.

另外你看一下我主贴第二个视频, 就没有"斜纹", 这就是因为刷新的地方小, 速度提上去了

wadz 发表于 2024-9-18 22:35:39

请了解一下这篇文章

如何解决液晶屏TE(Tearing Effect,显示撕裂)问题 - 来自Madliar https://www.madliar.com/notebook/publish/i/caoliang.net/2023-11-29/-ru-he-jie-jue-ye-jing-ping-TETearingEffect-xian-shi-si-lie--wen-ti.html
页: [1] 2 3 4
查看完整版本: 刷屏,画重点:DMA 需要 RTOS!38ms,DMA-i8080并口8位刷TFT320*240彩屏@ILI9341