搜索
bottom↓
回复: 14

stm32f103上I2C数据叫波形异常问题

[复制链接]

出0入0汤圆

发表于 2020-9-21 14:27:36 | 显示全部楼层 |阅读模式
stm32f103上PB6、PB7(I2C1)挂了测距传感器,发现偶尔有NO ACK错误,示波器测量发现SDA引脚波形异常,图中黄色波形为SDA引脚,蓝色波形为SCL引脚。
1、已检查硬件引脚,I2C1挂设传感器以外没接其他设备,stm32到设备之间的走线不超5cm;
2、I2C1的SDA和SCL上通过4.7K 0603电阻上拉到3.3V;
3、软件上也做了排查,没发现有什么问题。
请问有没遇到相同情况的前辈能指导一下,或者提供一下思路。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2020-9-21 14:35:06 | 显示全部楼层
用的是硬件I2C还是模拟I2C?
设置的速率是多少

出0入0汤圆

 楼主| 发表于 2020-9-21 14:47:08 | 显示全部楼层
bailangcn 发表于 2020-9-21 14:35
用的是硬件I2C还是模拟I2C?
设置的速率是多少

用的是模拟I2C,速率10K。

出0入0汤圆

发表于 2020-9-21 15:19:42 | 显示全部楼层
Chau 发表于 2020-9-21 14:47
用的是模拟I2C,速率10K。

单步看看吧

出0入0汤圆

 楼主| 发表于 2020-9-21 15:26:23 | 显示全部楼层

单步看看是指软件加断点一步一步查看么

出0入0汤圆

发表于 2020-9-21 15:34:03 | 显示全部楼层
Chau 发表于 2020-9-21 15:26
单步看看是指软件加断点一步一步查看么

对 一个波型的看就好了 你应该有个for或者while 在那里看就好了

出0入54汤圆

发表于 2020-9-21 16:28:29 | 显示全部楼层
本帖最后由 lusson 于 2020-9-21 16:29 编辑

不好意思,编辑掉,看到你是用示波器测量的。

是存储深度不够吗?那些个毛刺应该拉开看看到底是怎么样的毛刺

出10入120汤圆

发表于 2020-9-21 16:47:44 | 显示全部楼层
电源不行吧,才10K的速率应该是很干净才对,那么多毛刺即使调试不出问题,以后产品也是存在严重隐患的。

出15入178汤圆

发表于 2020-9-21 16:55:10 | 显示全部楼层
1. 主设备侧怎么有些毛刺,你边界处理可能有问题。
2. 没有看到明显的停止位

出0入0汤圆

发表于 2020-9-21 17:58:11 | 显示全部楼层
我5.1K上拉3.3,模拟IIC到900K左右都没有这个毛刺

出0入475汤圆

发表于 2020-9-21 20:20:58 来自手机 | 显示全部楼层
软件上没有问题那就是软件的问题:)
你看你出现毛刺的地方好像都是clk上升沿前面左右,估计是你那个时候操作了dat脚输入输出啥的,为啥不把8bit移位输出的代码发出来?!

出0入0汤圆

 楼主| 发表于 2020-9-22 08:43:37 | 显示全部楼层
1a2b3c 发表于 2020-9-21 20:20
软件上没有问题那就是软件的问题:)
你看你出现毛刺的地方好像都是clk上升沿前面左右,估计是你那个时候操 ...

SDA IO在收发数据时口输入输出模式切换比较快导致的,切换成输入时被内部上拉,然后应当ACK过来有立刻被拉低,导致出现很多毛刺的图形。

出0入0汤圆

 楼主| 发表于 2020-9-22 08:44:38 | 显示全部楼层
shhludb 发表于 2020-9-21 17:58
我5.1K上拉3.3,模拟IIC到900K左右都没有这个毛刺

查出来了,和I2C速率没关系。SDA IO在收发数据时口输入输出模式切换比较快导致的,切换成输入时被内部上拉,然后应当ACK过来有立刻被拉低,导致出现很多毛刺的图形。

出0入0汤圆

 楼主| 发表于 2020-9-22 08:46:00 | 显示全部楼层
makesoft 发表于 2020-9-21 16:47
电源不行吧,才10K的速率应该是很干净才对,那么多毛刺即使调试不出问题,以后产品也是存在严重隐患的。 ...

已经查出来了,和电源没有关系。SDA IO在收发数据时口输入输出模式切换比较快导致的,切换成输入时被内部上拉,然后应当ACK过来有立刻被拉低,导致出现很多毛刺的图形。

出0入475汤圆

发表于 2020-9-22 11:49:56 来自手机 | 显示全部楼层
看来你还是没有把i2c搞明白,你看你前面几个脉冲都有脉冲,那个怎么可能是ack?代码再重新修改下吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表