调试
1.硬件部分
-
根据原理图确定camera的接口是MIPI还是DVP,确定在哪路IIC上
-
如果是MIPI,确定MIPI的的data lane数,哪路CSI上
-
用万用表确定Camera的供电是否正常,是否需要软件控制
- AVDD:camera模拟电压,给芯片的模拟器件供电---->2.8V,主要给摄像头的感光区和ADC部分供电,一般功耗比较高
- IOVDD:为camera的GPIO口模拟电压,给芯片引脚供电---->1.8V:给I2C或者DVP部分供电,也会给MIPI供电,一般功耗最低。
- DVDD:是camera的数字电压,给芯片中的数字信号供电,camera的工作电压---->1.2-1.5V:主要给摄像头内部的ISP供电,还会给BPC remosaic shading等模块供电,一般功耗最高,由于其对摄像头内部ISP影响,而ISP又是摄像头内部图像处理单元,如果供电不稳定,可能会导致花屏等情况
-
查看Camera的Spec文档,检查PWDN和RESET的管脚触发是否正常,是否需要在程序中进行控制;
2.软件配置
- 先确认I2C地址,确认配置成7位还是8位,配置哪路CSI,配置CSI的data lane数,电源配置,一般在设备树中配置
- 根据芯片规格书配置上电时序,reset和pwdn的状态
- 根据寄存器初始化列表初始化sensor
出现问题
1.I2C通信失败
- 使用I2C工具探测设备,确认是否可以探测到
- 确认I2C地址,是否配置正确,以及配置的I2C通路是否正确
- 结合原理图确认dts中,关于模组的电源,csi id,reset,pwdn,mclk是否配置正确,包括电压引脚等
- 确认驱动中,在上电过程中电源的上电时序,以及reset和pwdn是否拉到对应的电平状态
- 使用示波器或者万用表测量电压和上电时序,以及MCLK是否有输出,I2C信号是否有上拉,如果MCLK过小,检查设备树中以及硬件关于MCLK的配置
- 如果确认以上都是正常的,更换硬件
2.MIPI没有数据
- 检查soc的mipi clk输出是否正常
- 确认sensor的mipi引脚是否有数据输出,如果有,则正常,如果没有则确认是否是存在虚焊,寄存器的配置是否有问题,确认sensor用的是soc的mipi clk还是外部器件的时钟源,确认sensor在复位之后写寄存器的延时时间是否符合要求
- 示波器测量MIPI的信号,看波形是否符合要求
- 由于soc的mipi接收器要检测到各个lane有LP11-LP10-LP00的状态切换后才会切换到高速模式准备接受图像数据,如果图像数据输出在soc的mipi控制器初始化之前,那么soc mipi会一直等待mipi信号切换,如果sensor支持非连续时钟模式,最好设置成非连续时钟模式,避免soc mipi错过第一次LP11-LP10-LP00的状态切换,导致不能切换成高速模式
参考:https://blog.csdn.net/weixin_41944449/article/details/112393312