当前位置:网站首页>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对加密芯片进行读写。
风险:需要上层调用,可能会有中断会打断导致其他问题。
边栏推荐
猜你喜欢
随机推荐
【NTC 热敏电阻与 Arduino 读取温度】
cmd控制台窗体大小设置
【Arduino 连接GP2Y1014AU0F 灰尘传感器】
无源域适应(SFDA)方向的领域探究和论文复现(第二部分)
[Spark]-LSH局部敏感哈希
【科普贴】I2C通讯协议详解——偏软件分析和逻辑分析仪实例分析
18张图,直观理解神经网络、流形和拓扑
SGDP(1)——猜数字游戏
自定义view实现半圆弧进度条
C#从入门到精通
2022年中高级 Android 大厂面试秘籍,为你保驾护航金九银十,直通大厂
C语言上机题(基础)
深度学习实战(1):花的分类任务
工业边缘网关究竟强大在哪里?
【MQ-3 酒精检测器与 Arduino检测酒精】
张量乘积—实验作业
svg图片实战:自定义view打造中国地图
关于我的项目-微信公众号~
一文理解分布式开发中的服务治理
树莓派入门(1)系统镜像烧录









