欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2285|回復: 2
收起左側

mcu刷屏速度測試—基于STC32G12K128和JLX256128

[復制鏈接]
ID:1039438 發表于 2023-5-25 16:03 | 顯示全部樓層 |閱讀模式
  常聽到有人說刷屏太慢,于是想測一下我的屏最快能刷多少幀。目的不是為了看視頻,而是減少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[ i]=onecolor[ i];//把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, 下載次數: 12, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:373976 發表于 2023-5-25 18:49 | 顯示全部樓層
學到了DMA方式驅動LCM.
回復

使用道具 舉報

ID:1039438 發表于 2023-5-26 20:26 | 顯示全部樓層
這款屏所用芯片的幀率上限是153HZ,所以有理由認為這個測試實際是測量了stc32g12k128
的寫屏速度,并且這個速度對單屏圖像顯示是有效的。對于連續寫屏。屏上實際顯示出的內容受限于屏本身的刷新速度。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表