標題: mcu刷屏速度測試—基于STC32G12K128和JLX256128 [打印本頁]
作者: 麗江春水 時間: 2023-5-25 16:03
標題: mcu刷屏速度測試—基于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[ 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
(20.49 KB, 下載次數: 54)
下載附件
2023-5-25 15:57 上傳
-
265.png
(25.54 KB, 下載次數: 56)
下載附件
2023-5-25 15:57 上傳
-
323.png
(23.1 KB, 下載次數: 51)
下載附件
2023-5-25 15:57 上傳
-
實物.jpg
(3.94 MB, 下載次數: 51)
下載附件
2023-5-25 15:57 上傳
-
-
lcd_256.zip
2023-5-25 15:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
129.83 KB, 下載次數: 12, 下載積分: 黑幣 -5
作者: 指北針 時間: 2023-5-25 18:49
學到了DMA方式驅動LCM.
作者: 麗江春水 時間: 2023-5-26 20:26
這款屏所用芯片的幀率上限是153HZ,所以有理由認為這個測試實際是測量了stc32g12k128
的寫屏速度,并且這個速度對單屏圖像顯示是有效的。對于連續寫屏。屏上實際顯示出的內容受限于屏本身的刷新速度。
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |