I2C子系统debug的常见问题

常见问题1、同一条 i2c bus 上所有的外设的 i2c addr 要不同
1)相同 address 注册时冲突
[2.059184][xxx]i2c i2c-1:failed to register i2c client 24c02 at 0x51(-16) [2.059189][xxx]i2c i2c-1:can't create device at 0x51对应的错误码是 -16
/kernel-5.10/include/uapi/asm-generic/errno-base.h#define eperm 1 /* operation not permitted */#define enoent 2 /* no such file or directory */#define esrch 3 /* no such process */#define eintr 4 /* interrupted system call */#define eio 5 /* i/o error */#define enxio 6 /* no such device or address */#define e2big 7 /* argument list too long */#define enoexec 8 /* exec format error */#define ebadf 9 /* bad file number */#define echild 10 /* no child processes */#define eagain 11 /* try again */#define enomem 12 /* out of memory */#define eacces 13 /* permission denied */#define efault 14 /* bad address */#define enotblk 15 /* block device required */#define ebusy 16 /* device or resource busy */......可以执行 ls /sys/bus/i2c/devices 查看对应的 i2c-1 下是否已经有注册相同的 address 的外设
若返回 -11,-eagain。代表总线正忙,或无法申请到总线锁。如果总线正忙,请 retry 等待,或查看是哪个 device 一直在发送。如果无法申请到总线锁,请查看是否在中断函数或原子上下文调用了 i2c_transfer。
2)隐藏的 i2c address,即外设存在多个 i2c addr 或外设 hw bug,导致 i2c 通讯异常。
示例:eeprom 在 i2c-1 上注册了 0x50 地址,而 type c 虽然注册到 0x60 地址,但对 0x50 也能产生响应,type c 拉低了 sda ,从而 timeout 。
debug 方法:
软件上确认数据及对应的 driver 是否正确。硬件上逐一去掉外设,确认是哪个外设导致。2、示波器 ack 的地方有毛刺
slave 在第 9 个 clk 产生 ack 应答后,换成 mater 端来控制时产生的毛刺。此毛刺不会影响 i2c 总线读写时序,无需处理。
即 slave 和 master 控制总线切换间隔,没有人控制总线,带来的毛刺。
**3、**半高电平
在外接上拉电阻的情况下,有 enable 内部下拉电阻,导致总线上有半高电平。
4、总线上电平拉不到地。
master 端发送数据时电平拉不到地,可以增大驱动电流或者上拉电阻。slave 端拉不到地,可以咨询供应商看是否能增大 slave 端驱动电流或者上拉电阻。

一款支持MQTT、OPC UA等协议的智能网关
理想中的航空测绘无人机什么样?傲势技术大神为你揭秘
激光雷达成探测海洋深度最高可达卫星遥感测量的3倍
英特尔计划升级现有芯片并为其整合入新的内存技术,以此减少AMD造成的压力
承德科胜220型十三香包装机|孜然粉包装机|河北包装机
I2C子系统debug的常见问题
基于华为大数据存算分离方案,为运营商带来巨大价值
眼动追踪——人机交互的新形式
温度传感器怎么接线图
京东方徐晓光:物联时代面临十大技术挑战
通过GPU内存访问调整提高应用程序性能
这样使用耳机会导致中耳炎,这是真的吗?
骨感耳机品牌排行,2022骨感耳机最好的品牌
AMD弃用XilinxCPLD芯片,也不提供替代品
浅析PLC闪烁电路
17万人震怒 华为供应商欺骗散户
几种超重低音响电路的制作
Intrado Digital Media宣布品牌更名为Notified
云控智行“车路云一体化”方案助力车企提升自动驾驶安全水平
FJ2000型个人剂量仪的及特点分析