当前位置:网站首页>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对加密芯片进行读写。
风险:需要上层调用,可能会有中断会打断导致其他问题。
边栏推荐
猜你喜欢
随机推荐
zsh: command not found: xxx 解决方法
【科普贴】UART接口通讯协议
Scala 中的集合(二):集合性能比较
深度学习理论:测试集与验证集的区别及各自用途
兼容C51与STM32的Keil5安装方法
无源域适应(SFDA)方向的领域探究和论文复现(第一部分)
Transformer结构解析及常见问题
移动云物联网预研及阿里云开发对比分析
[Spark]-协同过滤
PCB Design Ideas
synchronized锁原理详解
野火ISO-V2学习
中国大陆开源镜像站汇总
Glide使用及原理分析
保证接口数据安全的10种方案
【科普贴】SD卡接口协议详解
BSN:Boundary-Sensitive Network for Temporal Action Proposal Generation论文阅读笔记
关于我的数学建模~
【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】
Nest 的实现原理?理解了 reflect metadata 就懂了