NCS8801 RGB24 转eDP屏
2016-06-07 10:52
846 查看
目前项目中,需要点eDP屏,但飞思卡尔mx6没有eDP接口,通过神奇的转换芯片,专为中国人设计的,
各种接口之间的转换,只要你能想得的,基本上都能找得到。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");
}
我们采用的eDP屏是N133HSE-EA1
。配置相对来说都比较简单。linux内核中通过RGB24输出也比较简单。
硬件调试记录:
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
各种接口之间的转换,只要你能想得的,基本上都能找得到。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");
}
我们采用的eDP屏是N133HSE-EA1
。配置相对来说都比较简单。linux内核中通过RGB24输出也比较简单。
硬件调试记录:
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
相关文章推荐
- ipad The data couldn’t be read because it isn’t in the correct format
- Android的Scroller介绍
- 教务管理系统数据库E/R图
- JNA
- mysql 多分区,自动化分区脚本
- 关于代码动态修改xib内控件尺寸
- 336. Palindrome Pairs
- 安卓解决从系统安装完成打开和返回桌面打开启动两次应用的问题
- 内核模块编写
- 在WinForm中发送HTTP请求的实现方法
- svn基础
- Scipy Orth
- Spring核心技术(七)——Spring容器的扩展
- Spring核心技术IoC容器(七)
- Android_Intent_note
- js中数组去除重复项目
- 新增WiFi真机同步与实时预览功能 简化真机调试步骤
- UIView
- Ngrok 内网穿透利器
- Android MediaCodec h264硬件编码