您的位置 首页 发布

ATMEL9263 800*600屏驱动问题

前段时间跟某院有个合作,应用我们公司的ATMELat91SAM9263,评估板套件应用我们的800*480屏幕没有问题,但是稍微一改大屏幕的配置,就驱

前段时间跟某院有个协作,使用咱们公司的ATMEL at91SAM9263,评价板套件使用咱们的800*480屏幕没有问题,可是略微一改大屏幕的装备,就驱动不起来了。

后来查了一下代码,问题找到了,原因是改成大屏幕今后,LCD的象素时钟变大,使用官方供给的代码就出现问题了。

//——————————————————————————
/// 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控制器时钟

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/262489.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部