新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ATMEL9263 800*600屏驅動問題

        ATMEL9263 800*600屏驅動問題

        作者: 時間:2016-11-22 來源:網絡 收藏
        前段時間跟某院有個合作,應用我們公司的ATMEL at91SAM9263,評估板套件應用我們的800*480屏幕沒有問題,但是稍微一改大屏幕的配置,就驅動不起來了。

        后來查了一下代碼,問題找到了,原因是改成大屏幕以后,LCD的象素時鐘變大,應用官方提供的代碼就出現問題了。

        本文引用地址:http://www.104case.com/article/201611/320035.htm

        //------------------------------------------------------------------------------
        /// Configures the internal clock of the LCD controller given the master clock of
        /// the system and the desired pixel clock in MHz.
        /// param masterClock Master clock frequency.
        /// param pixelClock Pixel clock frequency.
        //------------------------------------------------------------------------------
        void LCD_SetPixelClock(unsigned int masterClock, unsigned int pixelClock)
        {
        AT91C_BASE_LCDC->LCDC_LCDCON1 = ((masterClock / (2 * pixelClock)) - 1) << 12;
        }

        當應用大屏幕的時候,后面的表達式算出來是一個負數,所以時鐘送不出來,LCD也就驅動不起來了

        修改以后:

        void LCD_SetPixelClock(unsigned int masterClock, unsigned int pixelClock)
        {
        unsigned int value;
        value = masterClock / pixelClock;

        if (masterClock % pixelClock)
        {
        value++;
        }

        value = value/2;

        if (!value)
        AT91C_BASE_LCDC->LCDC_LCDCON1 = AT91C_LCDC_BYPASS;
        else
        {
        value -= 1;
        AT91C_BASE_LCDC->LCDC_LCDCON1 = (value << 12);
        }

        }
        參考數據手冊LCD寄存器描述,可以清楚的明白

        BYPASS描述:

        0 LCD象素時鐘 是由LCD控制器時鐘 根據CLKVAL分頻得到

        1 LCD象素時鐘 就是LCD控制器時鐘



        關鍵詞: ATMELat91SAM926

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 柏乡县| 五原县| 介休市| 开原市| 河北区| 通海县| 修武县| 双江| 锡林浩特市| 专栏| 邵武市| 阿坝县| 南宫市| 横峰县| 屏山县| 大姚县| 新竹县| 柞水县| 司法| 富平县| 罗江县| 涪陵区| 南汇区| 宝丰县| 舒城县| 白城市| 元朗区| 凤冈县| 丰城市| 澳门| 嵊州市| 中方县| 庆云县| 哈密市| 湘阴县| 荃湾区| 杭州市| 龙门县| 加查县| 垣曲县| 车险|