目前项目中,需要点eDP屏,但飞思卡尔mx6没有eDP接口,通过神奇的转换芯片,专为中国人设计的,
各种接口之间的转换,只要你能想得的,基本上都能找得到。NCS8801 就是通RGB24接口转eDP接口。
这里记录一下。
uboot 中初始化代码如下:
硬件调试记录:
1,PWD,RSTB 时序要求达到。
2,test , 晶振有相同的频率。
3,我们这个pin 脚设计不对,没有仔细核对demo原理图。这里要吐槽一下NCS8801管脚命名规则。
硬件工程师想当然的把P设计成了上拉,N设计成了下拉。一般规则确实是这样的,但难免有一些
打左转向灯而右转的人。
软件调试。
1,如上面的程序 写进芯片 配置,可以读出来。uboot 中有 i2c md 70 1c,读出一些位来对比。
2,硬件调试3是可以通过个方法来验证的。将0x20 ,0x21 设置为0xff 。参考 i2c mw 70 20 ff
这样就使得NCS8801 芯片后端直接输出一个红色画面。进入了BIST模式,这样就与前端RGB
输入没有有关系了。如果这样操作后,没有一个红色画面输出,就考虑硬件问题3,或者屏以及屏线的问题。
3,红色画面有输出后,如果屏还是不正常亮。1c,1e 为行场极性操作。80或者00。
各种接口之间的转换,只要你能想得的,基本上都能找得到。NCS8801 就是通RGB24接口转eDP接口。
这里记录一下。
uboot 中初始化代码如下:
- //ispsubb 20160317
int init_eDP(void)
{
unsigned char i ;
// N133HSE-EA1 mx6
unsigned char EDPI2C_addr[48] =
{0x09,0x4B,0x05,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,
0x1C,0x1D,0x1E,0x1F,0x41,0x35,0x31,0x36,0x3C,0x3E,0x0C,0x30,0x30,0x00,0x09,
};
unsigned char EDPI2C_data[48] =
{0x01,0x01,0x00,0x08,0x20,0x00,0x3C,0x07,0x80,0x04,0x58,0x00,0x14,0x04,0x38,
0x80,0x0A,0x80,0x0A,0x03,0xC1,0x00,0x00,0x17,0x16,0x01,0xB0,0xB1,0x0A,0x00,
};
unsigned char value = 0 ;
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
if (!i2c_probe(0x70))
{
for(i=0; i<30;i++)
{
//parm 3 mean reg addr is 8bit
if (i2c_write(0x70, EDPI2C_addr[i], 1, & EDPI2C_data[i], 1))
{
printf("edp chip init error\n");
return -1;
}
}
}
else
printf("can not find the EDP chip\n");
}
硬件调试记录:
1,PWD,RSTB 时序要求达到。
2,test , 晶振有相同的频率。
3,我们这个pin 脚设计不对,没有仔细核对demo原理图。这里要吐槽一下NCS8801管脚命名规则。
硬件工程师想当然的把P设计成了上拉,N设计成了下拉。一般规则确实是这样的,但难免有一些
打左转向灯而右转的人。
软件调试。
1,如上面的程序 写进芯片 配置,可以读出来。uboot 中有 i2c md 70 1c,读出一些位来对比。
2,硬件调试3是可以通过个方法来验证的。将0x20 ,0x21 设置为0xff 。参考 i2c mw 70 20 ff
这样就使得NCS8801 芯片后端直接输出一个红色画面。进入了BIST模式,这样就与前端RGB
输入没有有关系了。如果这样操作后,没有一个红色画面输出,就考虑硬件问题3,或者屏以及屏线的问题。
3,红色画面有输出后,如果屏还是不正常亮。1c,1e 为行场极性操作。80或者00。
4,如果闪屏,可以设置4B的上升沿下降沿,与内核,以及屏相对应。
http://blog.chinaunix.net/uid-20768928-id-5683843.html