找回密码
 立即注册
查看: 1281|回复: 3

快速刷屏例程分享-基于STC32G12K128和JLX256128

[复制链接]
  • TA的每日心情
    无聊
    2023-11-26 13:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    85

    回帖

    611

    积分

    高级会员

    积分
    611
    发表于 2023-5-25 16:16:14 | 显示全部楼层 |阅读模式
      常听到有人说刷屏太慢,于是想测一下我的屏最快能刷多少帧。目的不是为了看视频,而是减少MCU在刷屏方面占用的时间。提高其使用效率。
      本实验使用的MCUSTC32G12K128,屏采用了晶联讯的JLX256128-920-PN。屏的时序是6800.
      测试时采用了一幅256x128的单色图(黑白图)。因为这款屏只能显示单色图像。
      先在群里咨询了一下各位大师。用什么办法方便测试屏的刷新速度。有高人指出。找一个闲置IO口,每次刷新完就让IO口翻转一次。然后运行时用示波器测IO口的频率,其二倍就是刷新速度了。
      按这个思路,写了一个程序,第一次测出刷新是40X2=80帧。
      不太满意,又修改了程序。使用了STC32G12K128的硬件LCM接口和DMA功能。再测刷新速度成为265x2=530帧。
      做最后的努力。对程序进行极限优化,测出的刷新速度为323x2=646
      这时mcu的设置到了极限,就是说找不到可以继续提高的速度的设置了。估计使用STC32F,刷新速度还会有大的提高。
      对这个数据我简单分析了一下。一屏图像的数据量为256x128=32768点。单色屏需要4096字节。也就是4K646帧数据需要每秒传送2646016字节。不到3M,一个字节需要的时间包括相关使能电平变化,数据的移动,指令的下达,应该是这个时间的4-6倍。按5倍核算的话,这时端口的运行速度在15M。无论对MCU还是屏都是可以接受的。
      下面给出程序的主要内容和测试时示波器的显示:
    void main(void)
    {                                               
    uint i;
            mcu_initial();
            initial_lcd();                                                 //对液晶模块进行初始化设置
            transfer_command_lcd(0x08);                //数据格式,
            clear_screen();                                        //清屏
    for (i=0;i<4096;i++)
            buffer1=onecolor;//把code的数据搬到xdata
            lcm_dma_transfer(1,1,256,128,4096,buffer1);//这是个完整的显示函数
            clear_screen();                                //清屏
    lcd_address(1,1,256,128);
            while(1)
            {
                    DMA_LCM_CR = 0xa1; //启动 DMA 开始发送数据
                    P1=~P1;
                    while(!(DMA_LCM_STA&0x01));//等待一屏数据发送完成
                            DMA_LCM_STA = 0x00; //清除 DMA 状态
            }
    }
    void mcu_initial(void)
    {
    P1M1=0x00;
    P1M0=0x00;   //P1配置为准双向
    P2M1=0x00;
    P2M0=0x00;   //P2配置为准双向
    P3M1=0x00;
    P3M0=0x00;   //P3配置为准双向      
    P4M0=0xff;
    P4M1=0x00;
    EAXFR = 1; //使能访问 XFR
    CKCON = 0x00; //设置外部数据总线速度为最快
    WTST = 0x00; //设置程序代码等待参数,
    LCMIFCFG = 0x01; //设置 LCM 接口为 8 位数据位,6800 接口,数据口为 P2
    LCMIFCFG2 = 0x00;        //RS:P45,RD:P44,WR:P42; Setup Time=0,HOLD Time=0
    LCMIFSTA = 0x00;//标志位清零
    LCMIFCR = 0x80; //使能 LCM 接口
    }
      速度提升最大的是LCM接口的使用和DMA功能的使用。极限优化主要表现在两点,一个是LCMIFCFG2=0。把数据建立时间和保持时间都设成最小了。
    二是主程序循环中把设置项都提前了。避免重复设置。循环中只保留了向屏发送数据指令,IO口翻转指令和等待任务完成指令。MCU主频为35M。完整的程序见附件。

    40.png
    265.png
    323.png
    实物.jpg

    lcd_256.zip

    129.83 KB, 下载次数: 38

    回复 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9428

    回帖

    1万

    积分

    管理员

    积分
    14003
    发表于 2023-5-25 17:31:52 | 显示全部楼层
    好,感谢楼主分享,必须组织学习
    另外STC32G12K128配套教材如下
    《STC 32位8051 单片机原理与应用》,可网购
    每位同学配套人手1块【屠龙刀-STC32G12K128核心功能实验板】课后实验
    全球最大的大学计划,在学学生人手一套STC32核心功能实验板, 4:1 实验箱配套
    需要样书的老师,请联系主编丁向荣老师,QQ:181269315,微信:13728005860
    ◎  STC 32位8051元年芯片:STC32G12K128,与STC8H8K64U,单片机在引脚、资源上兼容;
    ◎  基于STC官方实验箱开发,STC大学计划指定教材,使用的学校STC官方送实验箱建立联合实验室支持
        每位同学配套人手1块【屠龙刀-STC32G12K128核心功能实验板】课后实验,由任课教师统一领取保管。
    ◎  基础部分采用基于寄存器方式编程,提高部分采用基于库函数方式编程;
    ◎  理实一体,精选工程训练实例。
    ◎  书号:978-7-121-45513-1   电子工业出版社出版
    ◎   购买渠道:https://item.jd.com/10076573741169.html
    优秀合作学校,按每学期学习STC的学生人数的 4 :1 赠送实验箱建立联合实验室
    各大高校还有选为下学期用书的时间
    需要样书的老师,请联系主编丁向荣老师,QQ:181269315,微信:13728005860
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-26 13:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    85

    回帖

    611

    积分

    高级会员

    积分
    611
     楼主| 发表于 2023-5-26 20:25:10 | 显示全部楼层
    这款屏所用芯片的帧率上限是153HZ,所以有理由认为这个测试实际是测量了stc32g12k128
    的写屏速度,并且这个速度对单屏图像显示是有效的。对于连续写屏。屏上实际显示出的内容受限于屏本身的刷新速度。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 38 天

    [LV.5]常住居民I

    12

    主题

    185

    回帖

    1119

    积分

    版主

    STC

    积分
    1119
    发表于 2023-5-29 10:03:54 | 显示全部楼层
    美好的一周从星期一开始,向高手学习第一步从看帖子开始
    电话:0513-55012982、18106296593 (微信同)
    QQ : 1347154513
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-15 04:38 , Processed in 0.060242 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表