<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        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);
        最后來張完整的照片:

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮