丽江春水 发表于 2023-5-25 16:16:14

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

常听到有人说刷屏太慢,于是想测一下我的屏最快能刷多少帧。目的不是为了看视频,而是减少MCU在刷屏方面占用的时间。提高其使用效率。本实验使用的MCU是STC32G12K128,屏采用了晶联讯的JLX256128-920-PN。屏的时序是6800.测试时采用了一幅256x128的单色图(黑白图)。因为这款屏只能显示单色图像。先在群里咨询了一下各位大师。用什么办法方便测试屏的刷新速度。有高人指出。找一个闲置IO口,每次刷新完就让IO口翻转一次。然后运行时用示波器测IO口的频率,其二倍就是刷新速度了。按这个思路,写了一个程序,第一次测出刷新是40X2=80帧。不太满意,又修改了程序。使用了STC32G12K128的硬件LCM接口和DMA功能。再测刷新速度成为265x2=530帧。做最后的努力。对程序进行极限优化,测出的刷新速度为323x2=646帧。这时mcu的设置到了极限,就是说找不到可以继续提高的速度的设置了。估计使用STC32F,刷新速度还会有大的提高。对这个数据我简单分析了一下。一屏图像的数据量为256x128=32768点。单色屏需要4096字节。也就是4K。646帧数据需要每秒传送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; //使能访问 XFRCKCON = 0x00; //设置外部数据总线速度为最快WTST = 0x00; //设置程序代码等待参数,LCMIFCFG = 0x01; //设置 LCM 接口为 8 位数据位,6800 接口,数据口为 P2LCMIFCFG2 = 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。完整的程序见附件。

神农鼎 发表于 2023-5-25 17:31:52

好,感谢楼主分享,必须组织学习{:4_196:}
另外STC32G12K128配套教材如下
《STC 32位8051 单片机原理与应用》,可网购每位同学配套人手1块【屠龙刀-STC32G12K128核心功能实验板】课后实验
全球最大的大学计划,在学学生人手一套STC32核心功能实验板, 4:1 实验箱配套https://www.stcaimcu.com/data/attachment/forum/202305/24/213810dlqx03nk0d9n33qs.png需要样书的老师,请联系主编丁向荣老师,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

丽江春水 发表于 2023-5-26 20:25:10

这款屏所用芯片的帧率上限是153HZ,所以有理由认为这个测试实际是测量了stc32g12k128
的写屏速度,并且这个速度对单屏图像显示是有效的。对于连续写屏。屏上实际显示出的内容受限于屏本身的刷新速度。

大刀阔斧 发表于 2023-5-29 10:03:54

美好的一周从星期一开始,向高手学习第一步从看帖子开始
页: [1]
查看完整版本: 快速刷屏例程分享-基于STC32G12K128和JLX256128