在rv1126的板子上调通ov13850,但是iq没调好,显示效果没调
于是更换摄像头imx415,sdk本身自带该驱动,本想着,配置好就可以了,但是事情没有那么简单
调试了一天半才弄好。
先看imx415的上电时序
在I2C通信之前我们必须要给主时钟,也就是INCK
我们用自带的驱动,配置好后,发现I2C还是没有通信成功
然后去看驱动代码,在__imx415_power_on函数中reset的gpio没有拉高
于是添加
在数据手册中没有关于reset的时许,所以是参考ov13850的
但是发现I2C还是没有通信成功
XCLR对应的GPIO也拉高了
用示波器测试过上电和时钟,到底是哪里出了问题,
然后我又把__imx415_power_off里面的函数屏蔽掉了,CLK是一直输出的
然后思考I2C的地址有没有配对
问卖家,他们测出的地址是0x34,把驱动自带0x1a改成0x34,发现还是没有成功
EMO,不懂咋弄了,于是在想有没有测试I2C地址的工具
尝试用 i2cdetect,本想着这是通信成功后才能测出来的,但没想到,
使用i2cdetect -y 1y有重大发现
发现能读到I2C1 下的地址,拔掉Camera后,地址就没了,于是在设备树更改地址为0x36
重新编译烧写,竟然成功了,激动!!!
结果很简单,过程曲折!!!
总结:
要把__imx415_power_off里面的函数屏蔽掉才能读出i2c地址,因为上电启动后,i2c通信失败,会执行__imx415_power_off函数,clk和上电之类的会关闭,这样使用i2cdetect -y 1y是读不出地址的。
原作者:Mr.云舒
|