|
发表于 2021-10-5 14:56:07
4998 浏览 0 回复
i2c 调试过程中不能通信问题排查
本帖最后由 星空 于 2021-10-5 15:10 编辑
1 排除一些简单的错误
1软件是否访问了这条i2c总线
e.g.: 我设备挂在i2c1,然后软件在i2c2上寻址怎么也不会寻址到
代码里,log可以查看
用逻辑分析仪,可以读到是否访问了这个地址
2地址是否是正确的
实在不行,地址扫描的方法也可以. 直接吧clinet吧地址改了,用for循环,看哪个地址有反应
3设备上是否挂有多个地址一样设备
去掉别的设备,以防干扰
4物料有问题
2 硬件问题排除
1硬件的上电是否正确 重点
有些设备只要上电,比如开发板上的一些sensor
有些设备是要有上电时序的,比如摄像头
这里比如有些引脚是gpio口控制的,一定要吧引脚加到摄像头的上电时序中去,不要让时序混乱
上电的电压是否一样,比如摄像头的电压有1.8的,2.8的1.2的1.1的很多这些不能有差错
2 示波器量波形
看i2c的时钟线和数据线的高低电平是否正确,电平不对会导致读取的数据不对,
去掉总线上别的i2c设备
有些设备会干扰i2c时序
加上下拉电阻
i2c内部有一个4.7k的上拉电阻,可以dws里配置.
如果外部加电阻,要吧 内部的电阻上拉去掉,然后选配不同的电阻,但要注意,不能加强了上拉,下拉 能力不行了也不行
e.g.: 本来高电平是1v,低电平0v, 加10k电阻之后变成了1.1v和0v 加4.7k电阻之后变成了1.2V和200MV这个时候就要注意了.那我们就不能加4.7k这么大的电阻,他上拉太强了,下拉能力不行了
配置i2c上下拉能力
这个mtk有faq,我们常用的平台的方法在论坛有
降低i2c的频率
可以降到100k试下,当然这个要根据设备的规格书来
3 逻辑分析仪分析
电平如果正确的可以用逻辑分析仪.这里注意,一定是电平正确,因为逻辑分析仪会把电平优化,可能0.8v以上就会算高电平
逻辑分析仪抓取的波形是可以反应这条总线上的所有数据通信,可以查出是否在访问这个地址的时候,有什么信号拉了电平或者电平的时间不对,等等的问题
|
|
|
|
|
|
|
登录或注册
|