移植camera senor时报I2C错误

在移植sensor时,最常遇到的问题是I2C通信失败,下面将就I2C通信失败问题进行相应的debug。

一、DEBUG流程

  1. 确认配置的sensor I2C地址是否正确(sensor datasheet中标注,读地址为0x6d,写地址为0x6c,那么配置sensorI2C地址为0x6c);
  2. 在完成以上操作之后,在senor上电函数中,将掉电操作屏蔽,保持sensor一直上电状态,方便debug;
  3. 确认I2C地址正确之后,测量sensor的各路电源电压是否正确且电压幅值达到datasheet标注的电压要求;
  4. 测量MCLK的电压幅值与频率,是否正常;
  5. 测量sensor的reset、pown引脚电平配置是否正确,I2C引脚SCK、SDA是否已经硬件上拉;
  6. 确认I2C接口使用正确并使能(CCI / TWI);
  7. 如果还是I2C出错,协调硬件同事使用逻辑分析仪等仪器进行debug;

二、经典错误

1、I2C没有硬件上拉
twi_start()450 - [i2c2] START can't sendout!
twi_start()450 - [i2c2] START can't sendout!
twi_start()450 - [i2c2] START can't sendout!
[VFE_DEV_I2C_ERR]cci_write_a16_d16 error! slave = 0x1e, addr = 0xa03e, value = 0x  1

出现上述的问题是因为SDA、SCK没有拉上,导致在进行I2C通信时,发送开始信号失败,SDA、SCK添加上拉即可。

2、没有使能I2C
[VFE]Sub device register "ov2775_mipi" i2c_addr = 0x6c start!
[VFE_ERR]request i2c adapter failed!
[VFE_ERR]vfe sensor register check error at input_num = 0

出现上述的错误,是因为使用twi进行I2C通信但没有使能twi导致的错误。

3、混用 cci 和 twi

        通过查看原理图确认,sensor是通过什么接口与主控进行通信的,在确认硬件连接没有问题的情况下,可查看出错时的log信息得知当前使用的接口。

  • 如果当前配置使用 CCI 进行 I2C 通信,出错将会报“[VFE_DEV_CCI_ERR]”或者“[VIN_DEV_CCI_ERR]”;
  • 如果当前配置使用的是 TWI 进行 I2C 通信,出错将会是“[VFE_DEV_I2C_ERR]”或者“[VIN_DEV_I2C_ERR]”;

在出现问题的时候,可以注意 I2C 的错误打印信息,看看是什么标号开头的,这样可以确定,本身应该使用 TWI 的,但却报”[VFE_DEV_CCI_ERR]“错误,这个时候可以检查,是不是关于 cci 的配置没有弄好,相应的配置没有失能或者屏蔽,或者是定义了 USE_SPECIFIC_CCI 宏。

4、sensor上电时序不对

        在sensor的上电过程,加上一定的延时是必要的。在主控输出MCLK、设置电源等操作之后,立刻sensor detect读取I2C,有可能会导致I2C读写失败的。因为这个时候,senor内部硬件没有准备好,这时候读写I2C将会出错,所以需要在上电之后,加上一定的延时操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风从不入睡、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值