主要参考的是AM335x的TRM的第8章PRCM模块和13章LCD Controller。 这里在LCD Controller里面的配置描述的比较详细了,分频和像素、消影值的设置等等。不在赘述,很多人都会抱怨说,LCD_PCLK配置只能通过LCD_CLK经过一个分频而来,这样对于频率70~90MHz时配置很困难。但事实上,我们对LCD_CLK的设置,是比较灵活的,参考如下: 8.1.6.10节中:Display PLL Description
左边的部分我会慢慢解释,先看右边。右边的LCD_CLK就是最终给到LCD模块的LCD_CLK,就是对接到下面的框图中。 但下面的框图中有个地方描述的容易让人混淆,就是被黄色部分框住的地方,这个时钟源的选取不是唯一的,如上图所示,LCD_CLK并不一定要使用Display PLL 的CLKOUT,还可以使用CORE_CLKOUTM5或者PER_CLKOUTM2作为时钟。 13章:LCD Controller部分:
重点来了,在StarterKit EVM板上,基于Starterware的LCD显示例程,就是使用的PER_CLKOUTM2作为时钟源,该时钟为192MHz(其实PER_CLKOUTM2时钟也是可以灵活配置的,但是不推荐,因为他是属于时钟数比较核心的时钟,如果这个一改变,其他的外设也要跟着变,影响比较大,所以对于该路时钟老老实实用192MHz就好,这方面TRM的描述可以参考TRM的Table 8-24. Per PLL Typical Frequencies(MHz) ),所以这给很多人的直观印象就是我们的LCD_CLK只能从192MHz分频,事实上还是可以有更多选择的。
比如使用CORE_CLKOUTM5,这路时钟是250MHz的(类似于PER_CLKOUTM2,也可更改配置但不推荐,参考TRM的Table 8-22. Core PLL Typical Frequencies (MHz))。 再者还可以使用更为灵活的Display PLL CLKOUT(后续再对这部分详解)。 所以Clock的配置选择还是很灵活的吧:). 那么如何设置选取不同的时钟源呢?很简单,在CM_DPLL寄存器(0x44E0_0500)偏移量为34h的CLKSEL_LCDC_PIXEL_CLK寄存器中,1-0位就是对这个时钟的选择配置。 OK,到这里是不是就觉得选择宽了?如果想要更加灵活的配置,剩下来的就是看你怎么去玩Display PLL的clock了,这部分参考TRM的8.1.6.10 Display PLL Description就可以了,里面也包括了怎么样配置。主要配置的地方就是CM_WKUP中(0x44E0_0400)的几个寄存器,在TRM的8.1.6.10.1 Configuring the Display PLL节中,有非常详细的描述,每一步怎么做都描述的很清楚了.