This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90UB933-Q1: FPD-LINK连接失败

Part Number: DS90UB933-Q1

DS90UB933TRTVRQ1与DS90UB934TRGZRQ1来配对使用,MCU的I2C如果直接连接这2个芯片都是可以读到他们的地址的。但是如果和DS90UB934TRGZRQ1的I2C连接,通过FPD-link来读取DS90UB934TRGZRQ1的地址是读不到的,返回值是0xFF。现在把MCU的I2C连接到DS90UB933TRTVRQ1,再去读取0x0c这个寄存器 ,返回值是0x04,也就是说检测不到电缆的连接。查了下,原理图,应该是没问题的,用的都是推荐设计。可能还有什么其他的问题吗?或者DS90UB933TRTVRQ1的某些参数是需要通过I2C设置下的?

  • 但是如果和DS90UB934TRGZRQ1的I2C连接,通过FPD-link来读取DS90UB934TRGZRQ1的地址是读不到的,返回值是0xFF。

    您好,和您确认下,这里的意思是MCU--DS90UB934---DS90UB933----sensor。主控接在934这边是吗?然后读取不到934的地址?

    还是说主控接在933端,读取不到934的地址?

    事实上 ,不论怎么接,如果FPD link连接好,比如MCU--DS90UB934---DS90UB933----sensor这个应用,那么一旦fpd link连接好之后,通过读取934的0x5C SER  Alias寄存器,应该是能读取到933的地址的,或者说933的地址会自动加载0X5C中去,如果读取不到,那可能是cable的原因。

  • 另外,还有一点,934接主控的话,934的0X58 是否已经enable I2C pass through?

    不论是933还是934接主控,我们都是配置和主控接的器件的寄存器,remote SER或者remote DES会映射到local des或者ser中。

  • 是的。是MCU--DS90UB934---DS90UB933----sensor这样的连接方式,我先用MCU通过I2C读取934的ID,可以读到。但是无法读到933的ID。于是我断开了MCU与934的I2C连接,通过飞线的方式把MCU的I2C与933连接,发现可以读到933的ID。到这一步至少可以说明933和934的供电应该没什么问题。断开飞线,MCU连上934,即把连接恢复到MCU--DS90UB934---DS90UB933----sensor。按您说的,我向934的0x58写入参数,enable I2C pass through,然后再去把0x58的数据读出来,数据没问题,应该已经写入。这时候再去读934的0x5C,返回值是0,说明依然有问题。我后面又做了个测试,把同轴电缆的供电功能给去掉了,即同轴电缆的中间抽头与板子上的5V连接断开,2个板子用2个电源去供电,但是依然不行。现在是不是主要考虑,是同轴电缆有问题啊?

  • 您好,首先当电缆将ser和des即933和934连接成功之后,933的ser ID会自动加载到934中,此时读取的934的寄存器应该是0x5B而不是0x5C. 也就是是或您先读取0x5B看是否能读取到933的ID。

    0x5C是SER Alias地址,因为MCU是和934接的,那么MCU和933 通信的话,是通过使用ser Alias地址使得MCU和933 通信的。

    所以您现在先可以不适用Poc,两片板子单独供电,电缆将板子接好之后,读取934的0X5B,看是否能正确读取到933的地址,如果能读取到,说明电缆没有问题,FPD link能正常连接。之后MCU和933 通信的话,使用的是SER Alias即0X5C这个地址。

  • 嗯,通过MCU与934连接可以从0x5B读取到933的ID返回值是0xB0,这样说明是连上了,但是去读取0x5C的时候返回值是0x00,这样看来还是有问题

  • 我还有个问题哈,因为MCU和933通讯的话是使用SER Alias的地址,即存在0x5C里的地址。那问题来了,就是我在933的I2C上还挂了几个其他的从设备,如何用MCU通过FPD link去访问他们?是直接使用这些从设备的地址去访问,还是说和访问933一样,需要先去934上获取这些从设备的地址,在通过获取到的地址去访问这些从设备?

  • 933上挂接了其他I2C设备,也是先在934上获取这些从设备的地址,934有寄存器remote Slave ID,就是指的和933挂接的I2C设备的地址.

  • 连接应该是没问题了,可以从0x5B读到933的地址。但是MCU去读取934的0x5C,返回值是0x00,是什么原因?还缺少一些934参数的设置吗?

  • 通过MCU与934连接可以从0x5B读取到933的ID返回值是0xB0

    是的,这说明FPD link是没问题的,ser和des之间能正常连接。

    MCU去读取934的0x5C,返回值是0x00,

    0x5C的默认值为0x00。但是需要我们自己去配置或者去定义这个寄存器的bit[7:1],即ser alias的地址,.比如0xB2. 也就是说我们通过0xB2这个地址和933 进行通信。 

  • 哦,是这个意思啊,那是不是就是说 我读0x5D其实获取到的是挂在933那边I2C上的设备的物理地址

     ,然后对0x65写入一个字节的地址,MCU通过0x65中的地址来访问该设备。也就是说需要先读取SlaveID里的地址来确定933的I2C上到底挂了哪些设备,并且获得这些设备的I2C物理地址。然后在SlaveAlias中写入一个字节的通讯地址,然后MCU通过通讯地址来访问这些设备。是这样吗?

  • 虽然FPDlink连上了,但是发现有个很奇怪的现象,933上连接了一个图像传感器,并且把933配置为使用传感器的PCLK。图像传感器使用16M的有源晶振。禁能该晶振的时候,934的PASS和LOCK管脚输出高电平。但是使能该晶振,会导致PASS和LOCK管脚拉低

  • 图像传感器使用16Mhz晶振给933作为像素时钟吗?您使用的是下面PCLK 方式对吧?参考时钟直接来自sensor。

    但是要注意933的像素时钟范围如下,10bit 模式范围为50Mhz~100Mhz,12bit mode下37.5Mhz~100Mhz的范围。如果sensor 也输出16Mhz的时钟给933,是不行的。

  • 哦,是这样啊,这点没关注。之前测试的时候只测量到图像传感器PCLK有信号输出具体频率多少没关注。看来得先MCU飞线到传感器,去读取传感器内部的默认倍频和分频参数根据默认的参数来选择合适的晶振才行,不然一上电FPDlink就断开连接,也没法控制传感器了

  • 是的,像素时钟决定了视频的分辨率。比如RGB信号高清1080p需要的像素时钟为148.5MHz,所以在应用时,需要注意像素时钟的频率范围。