当前位置:网站首页>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对加密芯片进行读写。
风险:需要上层调用,可能会有中断会打断导致其他问题。
边栏推荐
猜你喜欢
随机推荐
功能强大的黑科技网站--10连
哈工大2021机器学习期末考试题
保证接口数据安全的10种方案
Spark数据读取和创建
《scala 编程(第3版)》学习笔记4
electron-builder打包不成功解决方法
View与ViewGroup
Dart-Flutter DateTime日期转换
目标检测(一):R-CNN系列
uniCloud使用
连接本地MySql时出现2003-Can‘t connect to MySql server on ‘localhost‘(10061)
TimeSformer视频理解框架:视频理解中的Transformer
uniapp发布到微信小程序:分包、删减代码全过程
帧动画和补间动画的使用
基于树莓派的智能箱包开发环境搭建
MQ-5 可燃气体传感器与 Arduino 接口
SGDP(2)——声纳寻宝游戏
蓝桥杯:国二选手经验贴 附蓝桥杯历年真题
从Attention到Self-Attention和Multi-Head Attention
【nRF24L01 与 Arduino 连接实现无线通信】









