am335x LCD lvds VGA驱动调试

  • Post author:
  • Post category:其他


我的板子支持VGA LVDS视频输出,由于AM335X只有LCD RGA接口,因此实现方式上都是使用RGB转换芯片, LVDS使用的是LVDS93A  TI的片子,  VGA使用的是ADV7125KSTZ140驱动芯片,

软件方面:

am335x的驱动,主要也就3个方面,

1.1.PINMUX

2.2, LCD CFG

3.3. da8xx_panel 时序

对应的也就2个文件需要修改, da8xx-fb.c board-am33txevm.c


lcdc_pin_mux

()此函数配置LCD驱动引脚, 这个可以在设计时,最好与am335xevm官方一致,这样就不用修改了,也避开一个潜在的问题点。

其实主要精力都在于下面的2个结构体,

lcd_cfg

结构体需要动的比较少,最多修改下bpp bit per pixel 每一个像素占用多少个bit, 其实就2个选择,16b 32b,色彩如果多于16bit的话,那就设置32就行,比如24位真彩色。

static struct lcd_ctrl_config lcd_cfg = {
    &disp_panel,
    .ac_bias        = 255,
    .ac_bias_intrpt        = 0,
    .dma_burst_sz        = 16,
    .bpp            = 32,
    .fdd            = 0x80,
    .tft_alt_mode        = 0,
    .stn_565_mode        = 0,
    .mono_8bit_mode        = 0,
    .invert_line_clock    = 1,
    .invert_frm_clock    = 1,
    .sync_edge        = 0,
    .sync_ctrl        = 1,
    .raster_order        = 0,
};


known_lcd_panels

这个结构体才是关键中的关键,这里面有很多定义,如果从来没有接触过LCD的人会很不适应,适应客户自己 的LCD主要修改的就是这个时序与时钟频率。下面是VGA常用的时序设置,不过我们自己的LCD大部分都不是这个时序,所以需要我们修改这个时序。

static struct da8xx_panel known_lcd_panels[] = {
    /* Sharp LCD035Q3DG01 */
    [0] = {
        .name = "Sharp_LCD035Q3DG01",
        .width = 320,
        .height = 240,
        .hfp = 8,
        .hbp = 6,
        .hsw = 0,
        .vfp = 2,
        .vbp = 2,
        .vsw = 0,
        .pxl_clk = 4608000,
        .invert_pxl_clk = 1,
    },

硬件:

LVDS信号非常小,0.5~1.2V 振幅也很小, 但是通过示波器是可以观察到的。并不是TTL电平,就是为了适应高速传输,为了让信号可以上升、下降到位。

VGA频率表

VGA Signal Timing [VGA频率表]

2

详细介绍了各种VGA信号的频率,

SVGA Signal 800 x 600 @ 60 Hz timing

General timing

Screen refresh rate 60 Hz
Vertical refresh 37.878787878788 kHz
Pixel freq. 40.0 MHz

Horizontal timing (line)

Polarity of horizontal sync pulse is positive.

Scanline part Pixels Time [µs]
Visible area 800 20
Front porch 40 1
Sync pulse 128 3.2
Back porch 88 2.2
Whole line 1056 26.4

Vertical timing (frame)

Polarity of vertical sync pulse is positive.

Frame part Lines Time [ms]
Visible area 600 15.84
Front porch 1 0.0264
Sync pulse 4 0.1056
Back porch 23 0.6072
Whole frame 628

16.5792

front porch后肩 back porch前肩 sync pluse同步宽度 这里面都是一些标准的或者是推荐的VGA频率, 但各个厂家不一定遵守!(如果LCD文档中没有时序要求,则可以直接按里面推荐的时序配置试试)

时间频率是就是行x宽x刷新率=1056

666

60约= 40Mhz

我在调试过程中,发现上面这些bp fp等时序,要求并不是非常严格,错一点也会显示,但是显示的不完美,需要调整,这样才能把LCD调试的非常居中,

但是VGA就不一样了,我在调试过程中VGA显示器老是显示不支持的显示格式,常用的格式640×480 800×600我都测了,我猜测VGA显示器主要检测刷新频率,刷新频率应该是50~85范围内,可能我的设置超过了这个范围,然后显示器就不显示,揭示“不支持”

VGA控制器不需要 LCD驱动信号中的

DE

线,但是LVDS控制器需要。

还有个知识点,就是LCD的背光,背光接口一般有4个定义,12V GND  PWM  EN, 由于我就是简易调试,根本没有背光使能控制与PWM控制,于是简单粗暴的直接把PWM、EN接到12V上,完美,背光全亮,就可以专注于LCD接口的调试了 (注:


PWM EN不一定是12V电平,切记看PDF文档)



版权声明:本文为wandersky0822原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。