TI中文支持网
TI专业的中文技术问题搜集分享网站

DS90UB941AS-Q1: 连接两个 DS90UB948 ,驱动里写UB941寄存器成功,写UB948寄存器失败

Part Number:DS90UB941AS-Q1

结构如下图:

目前Linux系统启动后,通过脚本命令写UB941/8的寄存器,屏幕已经正常显示。

现在要把脚本命令转换成Linux驱动,执行时发现UB941的寄存器能正常写入,但是UB948的寄存器写是失败的。

测试发现在机器完全启动后,也就是等7~8秒才能去写UB948的寄存器(948的I2C地址才会显现出来)。

下面是我写的寄存器:
#define UB941_ADDR 0x1a
#define UB948_ADDR 0x2c

ds90ub94x_write_reg(UB941_ADDR, 0x01, 0x0F); /* Reset ub941, Disable DSI */
ds90ub94x_write_reg(UB941_ADDR, 0x5B, 0x0C); /* FPD3_TX_MODE=Single or Replicate, Align on DE */
ds90ub94x_write_reg(UB941_ADDR, 0x4F, 0x8C); /* Set DSI_CONTINUOUS_CLOCK, 4 lanes, DSI Port 0 */

ds90ub94x_write_reg(UB941_ADDR, 0x40, 0x04); /* Select DSI Port 0 digital registers */
ds90ub94x_write_reg(UB941_ADDR, 0x41, 0x21); /* Select DSI_CONFIG_1 register */
ds90ub94x_write_reg(UB941_ADDR, 0x42, 0x60); /* Set DSI_CONFIG_1: DSI_VS_POLARITY=DSI_HS_POLARITY=1 */

ds90ub94x_write_reg(UB941_ADDR, 0x40, 0x04); /* Select DSI Port 0 digital registers */
ds90ub94x_write_reg(UB941_ADDR, 0x41, 0x05); /* Select DPHY_SKIP_TIMING register */
ds90ub94x_write_reg(UB941_ADDR, 0x42, 0x16); /* Write DPHY_SKIP_TIMING: TSKIP_CNT value */

ds90ub94x_write_reg(UB941_ADDR, 0x01, 0x00); /* Enable DSI */
ds90ub94x_write_reg(UB941_ADDR, 0x1E, 0x01); /* Select FPD-Link III Port 0 */
ds90ub94x_write_reg(UB941_ADDR, 0x03, 0x9A); /* Enable I2C_PASSTHROUGH, FPD-Link III Port 0 */

ds90ub94x_write_reg(UB948_ADDR, 0x01, 0x03); /* Reset ub948 */
ds90ub94x_write_reg(UB948_ADDR, 0x1E, 0x90); /* lcd_led_pwm, Pull up*/
ds90ub94x_write_reg(UB948_ADDR, 0x1F, 0x09); /* lcd_led_en, Pull up */

请问是否和寄存器值有关系呢?

Kailyn Chen:

您好,我对Linux 驱动不是很熟悉,但是根据您的描述,我认为和寄存器的值没有关系. 上电初始化的过程应该都是一样的,.

脚本命令换成linux驱动之后, 7~8秒才能写948的寄存器,除了有延迟之外,屏幕能正常显示吗?

,

relax:

屏幕是能正常显示的。

目前临时的解决方法:是在驱动要写948的位置加上定时,10S后再去写948的寄存器。

赞(0)
未经允许不得转载:TI中文支持网 » DS90UB941AS-Q1: 连接两个 DS90UB948 ,驱动里写UB941寄存器成功,写UB948寄存器失败
分享到: 更多 (0)