打印
[APM32F0]

F003 硬件I2C从机通讯问题

[复制链接]
7558|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Fordhs168 于 2023-9-18 15:12 编辑

#申请原创# #技术资源#@21小跑堂

【问题描述】
SOC做主机,APM32F003硬件I2C从机时,出现两个小问题;1、
正常通讯时003偶尔会没有ACK应答(003回应NAK)2、接收SOC信号时,SDA电平直接被拉低挂死;


【分析问题】
  • 硬件I2C软件端是不太好排查,因为很多错误发生都会产生总线BUSY错误,排查I2C问题,一般都要从I2C时序波形入手,使用示波器或者逻辑分析仪抓取I2C波形;
  • 使用示波器抓取I2C的SDA和SCL波形,如下图:这是一个SDA被下拉刚挂死之后的前一个时钟信号波形;
  • 可以观察到示波器抓取失效部分的波形分析,发现SCL和SDA同一时间点下拉,SDA下落时间比SCL要快(问题所在);这里涉及到一个数据保持时间Thd的概念--Thd是指:在时钟SCL下降沿来之后,SDA数据保持不变的时间,SCL被判断为低电平前SDA不能被下拉。
  • 再查看了003 NAK应答部分,SDA和SCL的波形也是类似,接收数据时SDA下落时[size=12.0111pt]间比SCL的要快。

    【解决方案】
  • [size=12.0111pt]SOC主机端在写完一个数据&读完一个数据之后,手动加一个Delay作为数据保持时间,根据芯片手册,数据保持时间设计为300ns左右较为合理。
  • 插入300ns数据保持时间挂测没问题;

【其他】
处理过程中有怀疑过其他问题:
  • 比如电源不稳,电容耦合或者干扰等,导致SCL信号变化影响了SDA信号(此前在其他项目上遇到过--SCL下拉或者上拉直接影响SDA电平跳变),后面是关闭所有外设只保留I2C测试并且换了个板子也是会有问题;
  • 可能存在信号延迟不匹配的情况,导致SDA信号的下降时间比SCL更快。这可能与布线长度、线路阻抗等有关。
  • 硬件I2C问题是会比软件I2C问题要多要复杂,很多工程师都选择了软件I2C,但是硬件I2C一旦调通,真的爽的飞起,速度嘎嘎快。



使用特权

评论回复
沙发
21小跑堂| | 2023-9-22 18:34 | 只看该作者
hi 大佬 咱们申请原创文章的活动内容需要达到800字,目前还差点点,**您可以填充下内容,扩充完之后可以再次@21小跑堂,跑堂再帮您审核~

使用特权

评论回复
板凳
yb22771973| | 2023-10-3 17:43 | 只看该作者
硬件I2C问题是会比软件I2C问题要多要复杂,很多工程师都选择了软件I2C,但是硬件I2C一旦调通,真的爽的飞起,速度嘎嘎快。没调通过,一直软

使用特权

评论回复
地板
ysdx| | 2023-10-10 14:30 | 只看该作者
单片机这玩意,除了支持SMBUS的,否则真芯不敢用硬I2C SLAVE。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

26

帖子

0

粉丝