由于成本因素,客户需要使用显示效果较差的黑白单色4位的STN型屏幕,为此我在原来标准的TFP屏配置结构上修改参数。
屏幕分辨率为240x120的,根据参数我把arch/arm/mach-omap2/board-am335xevm.c内
static const struct display_panel disp_panel = {
WVGA,
32,
32,
COLOR_ACTIVE,
};改为
static const struct display_panel disp_panel = {
WVGA,
1,
1,
MONOCHROME,
};
结构lcd_cfg改为如下
static struct lcd_ctrl_config lcd_cfg = {
&disp_panel,
.ac_bias = 255,
.ac_bias_intrpt = 0,
.dma_burst_sz = 16,
.bpp = 1,
.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,
};
然后把drivers/video/da8xx-fb.c内的的known_lcd_panels结构添加
static struct da8xx_panel known_lcd_panels[] = {
[4] = {
.name = "TOPWAY_240128_LCD",
.width = 240,
.height = 128,
.hfp = 10,
.hbp = 10,
.hsw = 26,
.vfp = 10,
.vbp = 10,
.vsw = 17,
.pxl_clk = 1307200,
.invert_pxl_clk = 0,
},
}
使用该配置后发现管脚lcd_pclk与lcd_vsync均有波形输出,但管脚lcd_hsync与lcd_data0 ~ lcd_data3均没有任何变化。
后经过多次修改测试发现,只要把 disp_panel结构中的屏幕类型改为非COLOR_ACTIVE即(COLOR_PASSIVE或MONOCHROME)时lcd_hsync与lcd_data0~3就没有时钟或数据输出。比如我在原先tft屏幕配置时测量管脚lcd_hsycn有时钟,一旦我在终端中直接修改LCD控制器的RASTER_CTRL寄存器(0x4830e028)的 lcdtft位(bit7),将其设置成stn模式(清零)时,lcd_hsync时钟马上消失。
从现象来看,难道AM335x的LCD控制器不支持STN ? 求TI专家解答。