当前位置:网站首页>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对加密芯片进行读写。
风险:需要上层调用,可能会有中断会打断导致其他问题。
边栏推荐
- 【科普贴】UART接口通讯协议
- 如何快速搭建属于自己的物联网平台?
- 关于我的大创、论文~
- 兼容C51与STM32的Keil5安装方法
- Out of memory error on GPU 0. Cannot allocate xxxGB memory on GPU 0, available memory is only xxx
- ffmpeg 有声视频合成背景音乐(合成多声音/合成多音轨)
- Gradle源码解析:生命周期的三个阶段
- sacalatest AnyFunSuite:no implicits found for parameter pos
- Glide中图片处理
- 【Arduino连接GPS 模块 (NEO-6M)读取定位数据】
猜你喜欢
随机推荐
C语言上机题(基础)
TimeSformer视频理解框架:视频理解中的Transformer
使用批处理脚本修改hosts文件
出差电子流应用实战
完全背包问题(动态规划)
连接本地MySql时出现2003-Can‘t connect to MySql server on ‘localhost‘(10061)
自定义view实现半圆弧进度条
Acwing:哈夫曼树(详解)
SGDP(2)——声纳寻宝游戏
【科普贴】I2C通讯协议详解——偏软件分析和逻辑分析仪实例分析
[Spark]-协同过滤
C#从入门到精通
synchronized锁原理详解
OneNET Studio与IoT Studio对比分析
View与ViewGroup
ReentrantLock的使用和原理详解
umi3 权限路由PrivateRoute未执行
火焰传感器与 Arduino 连接
Vision Transformer(ViT)论文精读和Pytorch实现代码解析
无源域适应(SFDA)方向的领域探究和论文复现(第二部分)









