This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6748显存问题

Other Parts Discussed in Thread: TMS320C6748

显存安排在DDR2中,大小为800*600PCLK为50MHZ;

寄存器设置:

单帧;

TH_FIFO_READY = 5(256 dwords);

BURST_SIZE = 4(Burst size of 16);

FIFO_DMA_DELAY = 0;

数据通过MDA传输;

经常会产生“FIFO Underflow”事件,特别是在整屏刷新时;但未刷新屏幕时不会产生此事件。

我猜想大概的原因应该是DMA请求未被及时响应(或CPU访问DDR2与DMA请求冲突?)导致FIFO中数据为空,不知道是否正确,应该如何解决?

注:

1.以上刷新频率大概为81帧/秒,因为实际产品屏是1024*768;这个时钟频率在1024*768下再配置其他时间可以达到50帧/秒。

2.如果配置为1024*768,其他不变,则刷新部分即会引起“FIFO Underflow”事件。

3.刷新频率至少得50帧/秒

  • 并且有时候会有“Frame synchronization lost”时间;

    看手册上描述

    This could be caused by an invalid frame buffer address or an invalid BPP value

    可以肯定帧缓冲地址肯定是对的,还有像素值是16-BPP,无论如何都不可能不正确。

    另外统计这两个事件的发生次数,“Frame synchronization lost”事件发生次数比“FIFO Underflow”时间多。如何解释

    关于"FIFO Underflow”:

    This occurs when the DMA engine cannot keep up with the data rate
    consumed by the LCD (which is determined by the LCD_PCLK.) This is likely due to a system memory
    throughput issue or an incorrect LCD_PCLK setting.

    如果原因是因为DDR2的数据吞吐量不足(1024*768@50HZ 数据量是75MB/S),那又该如何解决?


  • C6748的LCD接口时钟最高37.5MHz,不能配成50MHz的。

  • 手册中并未发现不可设置为50M;

    LCD_PCLK =  LCD_CLK / CLKDIV;

    LCD_CLK为150MHZ;

    CLKDIV为2;

    手册中明确说了 TFT 16 BPP模式下最小分频为2。

    难道我理解有错误?

  • 参考手册:pixel cycle最小为26.66ns,即频率最大为~37.5MHz。

  • 我手上的数据手册未看到有此说明?手册为SPRUH79A(2011年10月)。

    难道不一样?能给个链接吗或给个附件?谢谢

  • 是data sheet,你看的是TRM.

    http://www.ti.com/product/TMS320C6748/technicaldocuments

    http://www.ti.com/lit/gpn/tms320c6748

  • 看了你给的文档,看到DS中确实有PLCK时钟最小宽度的描述;

    顺带也看了文档中给出的几个链接:

    http://processors.wiki.ti.com/index.php/OMAP-L1x/C674x/AM1x_LCD_Controller_(LCDC)_Throughput_and_Optimization_Techniques#LCDC_Throughput_Characterization

    在以上中有一处是这样的:

    这里却说在CPU/DDR 时钟为200/132时候PCLK可达到50MHZ,在任何条件下满足LCDC的数据吞吐量,这与DS描述冲突?

    因为我的LCDC接口接的不是实际的屏幕(LVDS/RGB),而是DVI转换芯片,取决于一些显示器的具体实现,1024*768分辨下可能需要达到50HZ的刷新频率;

    如果PCLK只能达到37.5MHZ,按照文档参考算法只能达到1024*768@36HZ,这满足不了要求,因此才“纠结”是否可以将PCLK配置为50MHZ。

    望指教,谢谢!

    PS:

    在不知道37.5MHZ这个限制条件之钱,配置LCDC的优先级(配置为2)之后,PLCK配置至50HZ(示波器看了波形正常),

    只会在某些情况下会出现“LCDC FIFO under runs and LCDC frame synchronization errors”。

    “某些情况”我猜想应该是指令/数据CACHE未命中从而从DDR2中取指令/数据,导致未及时响应LCDC的DMA请求。

    但是看了你给的资料,应该还需要配置“DDR2 memory controller peripheral bus burst priority register (PBBPR)”,防止对DDR控制器的长时间占用,从而使某些访问请求一直被挂起。

  • 也就是说C6748是不能单独驱动一块1680*1050@60HZ的液晶屏咯?我在VGA时序标准上查了1680*1050@60HZ的显示屏的Pixel clock是119MHZ。望回复

  • 应该是的,外设的数据吞吐量还是有限的。这还要看你具体应用了,如果动态刷新要求不高的话,还是可以接的。