SOLVED CS-MIPI-IMX307 I2C通信失败
-
你好,我在AXU2CGA开发板上使用你们的 CS-MIPI-IMX307摄像头模组时I2C通信失败。按照imx307 datasheet 上的描述,读取imx307地址0x301E和0x301F,正常会得到返回数据0xb2和0x01。
但是我得到的数据都是0(程序解析为0,如下代码)imx307_read(IicInstance, 0x301E, &sensor_id[0]); imx307_read(IicInstance, 0x301F, &sensor_id[1]); if (sensor_id[0] != 0xb2 || sensor_id[1] != 0x01) { xil_printf("Not imx307 id, %x %x\r\n", sensor_id[0], sensor_id[1]); return 0 ; } else { xil_printf("Got imx307 id, %x %x\r\n", sensor_id[0], sensor_id[1]); }
I2C clk为59kHz,下图是用示波器抓取的I2C clk 信号(黄色)以及data信号(绿色)。从示波器抓取到的clk来看,当进行I2C通信时,clk的点平会拉低一点,低于正常3.3v,不清楚什么原因导致的?
![alt text]( image url)希望您能给我点帮助信息来定位这个问题!谢谢
-
-
@rice
你好,可以看到我们模组上面除了sensor,还有其他的芯片。
这个模组输出是UYVY的,经过了isp处理。
作为上位机来说,是访问不到sensor的。
http://wiki.veye.cc/index.php/CS-MIPI-IMX307_STARVIS_Module/zh
http://wiki.veye.cc/index.php/CS-MIPI-X_i2c/zh -
@veye_xumm
感谢您的回答,我的应用程序时直接发起 I2C通信,也就是和imx307模块的Pin13 Pin14(SCL SDA)通信。
您说“作为上位机来说,是访问不到sensor的”这句话的意思是不是:
imx307模块的Pin13 Pin14(SCL SDA)引脚其实没连接到 IMX307 芯片上,而是连接到其他芯片上?
如果是这样,那我怎么直接配置 imx307 的寄存器? -
@rice said in CS-MIPI-IMX307 I2C通信失败:
)引脚其实没连接到 IMX307 芯片上,而是连接到其他芯片上?
是的,接到了我们的主控芯片。
@rice said in CS-MIPI-IMX307 I2C通信失败:
那我怎么直接配置 imx307 的寄存器?
控制不了
-
@veye_xumm
感谢答复,看了你们的驱动代码:https://github.com/veyeimaging/nxp_i.mx_veye_bsp/blob/main/driver_source/4.19.35/csimx307_mipi_v2.c可以看到 csimx307_check_id函数是通过I2C通信读取地址0x0102和地址0x0103的数据,我的FPGA开发板没有linux系统,我直接发起I2C通信读上面两个地址的数据得到的都是0。
在没有linux系统的支持下,能否实现直接通过I2C通信配置这个IMX307模块,去点亮摄像头?
-
@rice said in CS-MIPI-IMX307 I2C通信失败:
在没有linux系统的支持下,能否实现直接通过I2C通信配置这个IMX307模块,去点亮摄像头?
当然是可以的。摄像头并不知道上位机是什么系统。
你的这个问题,有没有可能是启动时间的问题。 我们的CS系列需要7-10秒钟启动,然后才能访问。
http://wiki.veye.cc/index.php/CS-MIPI-X_i2c/zh
https://github.com/veyeimaging/raspberrypi/tree/master/i2c_cmd/bin具体可以参考这个脚本的代码,来查找哪个寄存器对应什么功能。
-
@veye_xumm
“CS系列需要7-10秒钟启动,然后才能访问”
请问有启动时序相关配置说明文档嘛?I2C通信clk合理范围是多少? -
@rice 不需要配置,上电自己就配好了。
-
This post is deleted! -
@veye_xumm said in CS-MIPI-IMX307 I2C通信失败:
上电自己就配
所以上电后我可以直接通过I2C读写模组上的寄存器,不需要做其他配置是吗?I2C通信的时钟需要多少合适?我这边实验下来总是失败。。
-
@rice 通信时钟100k和400k都可以。
- 一般的fpga的3.3VCCIO, VIHmin<2.88V,电平应该不是识别不了的原因。
- 确认下IO上拉电阻大小。1.5K~4.7K最佳。
- 确认下访问地址的理解是否有出入。