引言:调试i2c从器件的第一步就是尝试去读它的地址,如果无法读取地址或者向其发送读写命令却没有收到ack回馈,都说明与器件通讯失败。常规发生无法读取i2c地址的情况时,第一怀疑点往往是硬件互联出现问题,本节分享一个和软件相关的调试案例。
1.问题背景
一枚视频转换芯片的i2c连接前端mcu上,调试时发现i2c通讯失败,同一总线上的另外两个器件地址均正常。发送读写命令波形也没有ack反馈,检查过硬件互联和reset配置,均没有问题。
2.怀疑点和排除过程
总线器件过多
考虑到一个i2c上挂载了三个从器件,分支和节点过多,并且走线也不短,所以怀疑是从器件过多导致cload过大,无法和远端通讯成功。于是摘掉和另外两个器件的互联电阻,再次尝试,依然无法通讯,并且测量得到的波形质量并不差,如图1-所示,我们向地址0x8a发送命令,却没有ack回馈,说明并不是总线负载电容问题。
图1-1:向设备发送读写命令波形
复位操作
虽然上电后复位reset就为高电平,但是尝试在从器件启动后再复位一次,再尝试读取i2c地址,依然无法读到,侧面说明和时序没有关系。为了验证无法通讯是不是器件本身的问题,将其与mcu断开,直接飞线i2c通过盒子连接到上位机,发现可以读到地址,并且读写寄存器均正常,如下图1-2是逻辑分析仪抓取到的波形图,有明显的ack标志。
图1-2:与上位机通讯抓取的读写波形
排除掉硬件互联和引脚配置以及器件本身的问题,那么只有一个问题就是mcu端的i2c参数配置出现问题。
主器件i2c参数
那么主器件i2c涉及哪些参数呢,总线速度100khz(标准),400khz(快速),1mhz(超快速)、data setup time、data hold time等等这些参数可调,如图1-4抓取上位机和器件通讯成功的波形,测试的data hold time大概为560ns,远远大于图1-5器件手册中的10-250ns,说明手册中的此参数标注和实际不符,而mcu端i2c配置的是100ns,所以才通讯失败。
图1-3:与上位机通讯波形时间参数测量
图1-4:与上位机通讯波形时间参数测量
图1-5:器件手册i2c时间参数
3.如何修正
如表1-5联系原厂核对修改后的参数,修改主机i2c设置的data hold time即可。
图1-6:更正后的时间参数
4.总结
对于支持不同通讯速率的i2c设备,高速率的往往可以兼容低速率的,比如1mhz-i2c的a器件,它可以接收来自100khz、400khz、1mhz的速率信息,但是如果与它互联的b器件只支持400khz,那么b只能接收a发送100khz、400khz的信息。而100khz、400khz、1mhz的时间参数都有差异,在调试时不仅速率要匹配,与速率相关的时间参数也必须修改以保持兼容,因为芯片里面的i2c收发器adc转换速率与频率f息息相关,而adc转换速率就决定着这些时间参数。
图1-7:i2c主从机基本结构
从图1-8可以明显看出,三种速率下的数据保持时间和数据设置时间均有明显的差异,以上述参数为例,data hold time实际为560ns,说明器件仅支持到快速模式,但实际设置为100ns,而器件并不能支持这么快的采样速度,所以无法识别bit位,因此仅仅保持sck一致,通讯也会fail。
图1-8:几种i2c模式的时间参数
另外有的器件支持好几种系统时钟(syetem clock),这时候其i2c时间参数可能就以system clcok为单位,而不是直观的us/ms,如图1-9所示:
图1-9:和系统时间挂钩的i2c参数
Broadcom推出全世界第一款单芯片微波室外单元(ODU)
区块链并非绝对安全 数字货币平台成安全漏洞重灾区
图达通的激光雷达产品工作原理及应用优势
Modern架构之开放互联 打造现代化主机
高通联合联想推出首款支持5G的笔记本电脑 采用高通骁龙8cx5G平台
无法读取I2C地址的调试案例
电流互感器能够打开二次回路吗?电流互感器二次回路开路有什么现象?
数据存储和管理平台SwiftStack被英伟达收购了
PLC网关助力于化工纺织行业智能化
压力开关工作原理
并联机器人市场又情况如何市场活跃度最高的并联机器人企业TOP5
曝国产手机芯片供应目前正常
重庆市领导会见瑞声科技高级副总裁江南一行
2021数字中国创新大赛大数据赛道——城市管理大数据专题正式开赛
东芝WD联盟3D NAND采用三星技术进行量产
正值开工日 国内半导体企业复工情况究竟如何?泰德兰电子2月10日正式复工
人工智能+安防成为各大公司追逐的“香饽饽”是必然
SiC芯片关键装备现状及发展趋势
这是iPhone7包装盒 真的会送AirPods无线耳机
对扫地机器人进行技术升级是市场发展的基本方向