STM32驅動RA8875彩屏正確顯示圖像
作者:日照北京 來源:會員上傳 點擊數:
… 更新時間:2014年05月20日 【字體:
大 中 小】
經過一段時間的折騰,在磕磕絆絆的前進中,終于收獲了成果。我的圖像終于能正常顯示了。
先曬下美圖:
以下記錄調試過程種遇到的問題。
1、我采用循序將近的方法,首先通過 image2LCD取圖像的二進制文件,配置為:按照默認配置(不選高位在前,RGB(565))
取出圖片的二進制 文件保存下來。做一個上位機軟件通過串口下載到MCU,MCU再寫入到FlashRom。通訊協議自己定的。
(取的圖片文件是低位在前的,上位機軟件可以選擇高位在前。)
注:MCU從Flash中讀取數據再送RA8875顯示是低位在前。
RA8875直接控制FlashRom是高位在前的。

圖片下載后,通過MCU從Flash中讀取數據再送RA8875能夠顯示圖像,但速度比較慢,一屏慢慢地刷下來。
初步效果實現了,但這樣的速度是不行的。動手開始第二步嘗試,RA8875控制讀取FlashRom的數據顯示圖片。
把顯示上的PWM口線懸空(注:MCU讀取時PWM要接3.3V)。配置RA8875的控制命令。
void RA8875_DMAReadBlock(uint32_t _usSSAR,uint16_t _usSPWR,
uint16_t _usBHR,uint16_t _usBWR,uint16_t _usCURH,uint16_t
_usCURV)
{
uint8_t ucFB=0;
//區塊數據存儲器直接存取模式.
ucFB = RA8875_ReadReg(0xE0);
RA8875_WriteReg(0x30, 0);
RA8875_WriteReg(0x31, 0);
RA8875_WriteReg(0x32, 0);
RA8875_WriteReg(0x33, 0);
RA8875_WriteReg(0x34,
(uint8_t)800);
RA8875_WriteReg(0x35,
800>>8);
RA8875_WriteReg(0x36,
(uint8_t)480);
RA8875_WriteReg(0x37,
480>>8);
RA8875_WriteReg(0x46,
(uint8_t)_usCURH);
RA8875_WriteReg(0x47,
_usCURH>>8);
RA8875_WriteReg(0x48,
(uint8_t)_usCURV);
RA8875_WriteReg(0x49,
_usCURV>>8);
//SF_CS0:字庫。 SF_CS1:圖庫。
//可以用 RA8875_WriteReg(0x05, (1 << 7) | (0
<< 6) | (1 << 5) | (1 << 3) | (1 << 2) | (0
<< 1) | 0);
RA8875_WriteReg(0x05, (1 << 7) | (0 << 6) | (0 <<
5) | (0 << 3) | (1 << 2) | (0 << 1) |
0);
RA8875_WriteReg(0xB0,
_usSSAR);
RA8875_WriteReg(0xB1,
_usSSAR>>8);
RA8875_WriteReg(0xB2,
_usSSAR>>16);
RA8875_WriteReg(0xB4,
_usBHR);
RA8875_WriteReg(0xB5,
_usBHR>>8);
RA8875_WriteReg(0xB6,
_usBWR);
RA8875_WriteReg(0xB7,
_usBWR>>8);
RA8875_WriteReg(0xB8,
_usSPWR);
RA8875_WriteReg(0xB9,
_usSPWR>>8);
ucFB =
RA8875_ReadReg(0xBF);
RA8875_WriteReg(0xBF,
ucFB|0x03);
//////RA8875_WriteReg(0xBF,
ucFB|0x03);
ucFB =
RA8875_ReadReg(0xBF);
while(ucFB & 0x01==1)
{
ucFB =
RA8875_ReadReg(0xBF);
}
// RA8875_WriteReg(0x46, _usX);
// RA8875_WriteReg(0x47, _usX >> 8);
// RA8875_WriteReg(0x48, _usY);
// RA8875_WriteReg(0x49, _usY >> 8);
} 經過不斷的嘗試,圖像出來的是亂七八糟的,花的,不過總算出來了,說明RA8875讀取到Flash了。
下面要解決花的問題。在排除了種種因素后,我找到RA8875的一個例子,比對里面的圖片文件,發現圖片數據竟然是“高字節在前”,而我的文件是低字節在前。找到原因,決定嘗試,重新下載圖像,圖像再次出現,有了小小的進步,圖像能看出來了,不過是斜的。
下面要解決斜的問題。我發現圖像的最后一行顯示了1/3,是不是和圖像的寬度有關,我再次嘗試把調用命令里圖像寬度由原來的800,改為了799。這次圖像正常出來了,又一個大的進步。仍然不理想,圖像中有許多雜色。這讓人頭疼。
下面開始排除問題。圖像RGB的順序問題嗎?經過反復測試,好像不是,程序問題?也沒找出來。偶然間,我發現上位機下傳圖像很慢,于是監聽了串口通訊,發現竟然有Flash寫入失敗的情況,莫非是flash沒寫進去,造成圖像上的雜色?極有可能,檢查程序也沒找到問題,莫非是flash的寫入速度快?原來spi是2分頻,決定改為4分頻。再次嘗試,下載正常沒有再出現寫入錯誤,下載速度也提高了。運行程序,一副清晰的圖像出來了,心情忽然開朗,一種無形的預約涌上心頭。一副圖像在艱難曲折的道路上出來了。仍然有些美中不足,最下面一行有480個像素沒顯示。留下待解決。
最后的問題已經解決,調用函數的參數如下:
RA8875_DMAReadBlock(0,0,799,479,
SPI1_tu1_ADDR,800, 800,480,0,0);
最后來張完整的照片:
