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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 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, 下载次数: 131

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:65
  • 最近打卡:2025-05-12 07:51:58

719

主题

1万

回帖

1万

积分

管理员

积分
15697
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:101
  • 最近打卡:2025-05-12 13:14:41

19

主题

217

回帖

1821

积分

版主

STC

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-12 22:48 , Processed in 0.121245 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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