当前位置:网站首页>I2C无法访问ATEC508A加密芯片问题

I2C无法访问ATEC508A加密芯片问题

2022-08-02 03:29:00 湉湉家的小虎子

一、 问题描述
客户反馈我司SOC的I2C8(GPIO47、GPIO48)无法访问ATEC508A(加密IC)的ID。但是HISI方案的SOC可以正常访问ATEC508A加密芯片。
二、 问题定位
1、测量加密芯片I2C波形,根据下图波形可以看出第九个CLK,SDA为高电平,没有ACK信号,说明加密芯片没有应答。
在这里插入图片描述
2、根据上述波形怀疑是加密芯片的地址不正确相关。通过查询加密芯片手册确认,加密芯片手册的I2C地址为0XC0,与上述SOC发出的波形一致,此点排除。
在这里插入图片描述
3、通过仔细阅读加密芯片手册发现,设备不回复ACK有两种情况,第一种是设备处于sleep模式,另外一种是设备处于busy模式。因为在不同的场景下都去读过设备都没有成功,所以认为设备处于busy的可能性比较小。认为设备处于sleep模式情况下导致没有ACK信号的可能性比较大。
在这里插入图片描述
三、 问题解决
1、 根据上述分析,认为加密芯片需要唤醒之后才可以正常通讯。手册中描述加密芯片的唤醒时序及delay如下。
在这里插入图片描述
在这里插入图片描述
2、 通过串口命令模拟唤醒时序,这时候发现有时有ACK命令返回,有时无命令返回,使用逻辑分析仪分析两个波形,发现唤醒波形到读ID命令之间间隔在100ms左右,阅读手册发现,当在唤醒45ms后无通讯芯片会再次进行sleep模式。
在这里插入图片描述
四、 问题拓展
根据客户反馈,HISI方案的SOC在访问加密芯片时是没有问题的,而且HISI方案的产品并没有发唤醒信号。
1、 使用逻辑分析仪分析客户HISI方案产品,发现该产品第一个读加密芯片ID的命令也没有返回ACK信号,而是第二个读ID命令正常反馈了ACK信号。
2、 根据上述现象,认为第一个读ID的命令被当作唤醒信号,将加密芯片唤醒。从而后面通讯命令正常。实际仔细观察波形会发现0XC0的波形,只是低电平时长,满足条件,高电平时长,并不满足唤醒波形,具体可能要找芯片原厂沟通。
3、 但是相同的场景下,SoC不能通过发送读ID的命令去唤醒加密芯片,可能是我司产品通讯波形存在问题。在低电平的时候有毛刺被误判为高电平,加密芯片没有正常被唤醒。(低电平的毛刺peak约有1.8V左右)
在这里插入图片描述
4、 测试客户提供的HISI平台的产品,SDA信号无毛刺。
5、在SDA上增加100pF对地电容,将SDA上的毛刺,压到700mV以下,经测试发现可以满足条件。
在这里插入图片描述
在这里插入图片描述
6、 测试I2C8上添加不同下拉电容时,对I2C时序影响:
1)400KHz时上升沿时间均超标(要求不大于300ns),下拉电容选择220pf或150pf时Setup time超标(要求大于100ns)。
在这里插入图片描述
2)在100KHz时,100pF~220 pF时序均满足协议
在这里插入图片描述

3)在以上电容组合下实测未发现I2C8读写功能失效。

五、 问题结论
1、 加密芯片需要唤醒才可以使用。
2、 SoC I2C波形存在毛刺问题
3、 HISI方案产品是通过送上读加密芯片ID的方案去唤醒IC
六、 解决方案
1、 在SDA上增加150pF电容,将I2C上毛刺压到0.5V以下
风险:导致SDA上升沿变缓,建立时间不够
2、 建议客户先配置成GPIO口唤醒加密IC,然后在使用物理I2C对加密芯片进行读写。
风险:需要上层调用,可能会有中断会打断导致其他问题。

原网站

版权声明
本文为[湉湉家的小虎子]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zangqihu/article/details/118573921