您好:
ub941连接两个ub948 采用split Mode模式,dsi0输入3840*1080*50fps图像,分成两个1920*1080图像,分别从port0和port1输出。两个通道都能连接上,并在ub941的DES_ID寄存器上都能读到每个通道的ub948的I2c地址,,但是只有FPD port0通道的ub948的地址在I2c总线上映射出来,port1的ub948的地址没有在I2c总线上映射,两个通道I2c都配置的I2c_PASSTHROUGH模式,也尝试配置了passthrough_all但还是不能通信,请问port1的ub948的I2c地址映射在总线上需要什么特殊的配置么?
Kailyn Chen:
您好,您是下面这个应用是吗?能否把相关的寄存器配置附上看下。
,
semiyd:
您好,是上面的应用。
寄存器配置如下:
WriteI2C (0x01,0x0f);//reset
WriteI2C (0x01,0x08);//disable DSIWriteI2C (0x1e,0x01);//select port0
WriteI2C (0x4f,0x8c);//Set DSI_CONTINUOUS_CLOCK, 4 lanes
WriteI2C (0x5b,0x07);// DUAL_CTL1 split mode
WriteI2C (0x56,0x81);// external reference clock
WriteI2C (0x32,0x80);//line size
WriteI2C (0x33,0x07);//line size
WriteI2C (0x17,0x1e);//i2c control register, paththrough_all
WriteI2C (0x20,0x8b);//DES_CAP1 register primary channel
WriteI2C (0x03,0xba);//general_cfg i2c port0 paththroughWriteI2C (0x1e,0x02);//select port1
WriteI2C (0x17,0x1e);//i2c control register, paththrough_all
WriteI2C (0x20,0x8f);//DES_CAP1 register secondary channel
WriteI2C (0x03,0xba);//general_cfg i2c port1 paththroughWriteI2C (0x40,0x04);//Select DSI Port 0 digital registers
WriteI2C (0x41,0x21);//Select DSI_CONFIG_1 register
WriteI2C (0x42,0x60);//set DSI vs hs plolarity
WriteI2C (0x41,0x05);//Select DPHY_SKIP_TIMING register
WriteI2C (0x42,0x34);//Write TSKIP_CNT value for 447 MHz DSI clock frequency
WriteI2C (0x01,0x00);//enable DSI我在941手册里看到这样TX_PORT_SEL(0x1e)这个寄存器,看描述是切换port0和port1的,但手册里又有这样的描述:
Setting the PORT1_I2C_EN bit will enable a second I 2C slave address, allowing access to the second port
registers through the second I2C address. If this bit is set, the TX_PORT0_SEL and TX_PORT1_SEL bits will be
ignored.
PORT1_I2C_EN 和端口的选择不能同时使用?这里的设置很难去理解。按道理我要使能port1的I2C,那么PORT1_I2C_EN和PORT1_SEL应该都置位,但看上面的描述又不是这样,请问这个怎么理解?
,
semiyd:
补充一下,请问如何在DOUT0/1的I2C通路之间进行切换?是通过哪个操作?通过0x1e寄存器切换不了
,
Kailyn Chen:
您好, 0x1E的寄存器这里的意思是说,如果PORT1_I2C_EN使能的话, 就无需再对TX_PORT0_SEL 和TX_PORT1_SEL 这两位进行置位了.也就是说忽略这两位的配置.PORT1_I2C_EN 使能,port 1的I2C使能,这时候port1的I2C地址就可以访问port1的寄存器, 以及可以访问port0和port1的共享寄存器.
如果置位TX_PORT0_SEL或者TX_PORT1_SEL,那么 寄存器的读只能读取port 0或者port1, 但是如果这两位都置位了,那么读取的寄存器的值是port1的寄存器, 但是写操作不一样, 如果同时对这两位置位的话, 则可以同时对这两个port 进行写操作.
,
semiyd:
您好,多谢耐心的回复。还有一个疑问请教下,port0和port1连接的解串器的I2C地址是一样的(硬件上都配成0x2C了),这样会有问题吗?还能通过TX_PORT_SEL来切换两路的写操作吗?
,
zhaohui chen:
Hi Semiyd:
你的问题解决了吗,谢谢