amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 864|回复: 7

诡异===Arduino 作为I2C Slave通信,SCL被奇怪拉低的现象

[复制链接]
发表于 2017-10-13 16:21:44 | 显示全部楼层 |阅读模式
各位上神好,

我在用Arduino为Slave做I2C通信时,出现了奇怪的SCL被拉低的现象,
请各位大侠帮忙看看。

首先,
上位机Master与I2C的LCD模块通信,以及I2C的IMU通信数据均正常 (I2C频率约300Hz)。
Arduino作为Slave,Nvidia TK1作为Master 通信正常(I2C频率约300Hz)。
而上位机Master与Arduino(Slave)的通信却总是不正确。

上位机Master的与Arduino的电压不同,中间使用I2C电压转换模块,将两设备相连。

程序通信过程
Arduino 的Slave Address为0x08(7 bit)
先由Master向Slave发送数据 0x75,Master再从Slave读回8个Byte。(0,1,2,3,4,5,6,7)

在悬空状态下,I2C波形如下(正常)


而接上Arduino之后,ACK后面的SCL被奇怪的拉低了。


又尝试把I2C频率从300K降到125K,发现丢失的SCL回来了

也就是说Master给Slave发送数据成功,接下来从Slave读回8个Byte

但是读的ACK发送之后,又有SCL被拉低的现象。


再次尝试降低I2C频率,直至降低到83KHz,
8个Byte才正常读到Master端。

而且Arduino的代码要非常简练,如果在RequestEvent里多加一些处理,如串口输出又会导致数据读取错误。

不知道是硬件问题还是Arduino底层中断的问题。
各位上神能给些意见吗?

本帖子中包含更多资源

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

x
发表于 2017-10-13 16:29:06 | 显示全部楼层
从机支持I2C时钟拉伸, 需要主控时钟拉伸支持
 楼主| 发表于 2017-10-13 16:41:37 | 显示全部楼层
lihaimeng@163 发表于 2017-10-13 16:29
从机支持I2C时钟拉伸, 需要主控时钟拉伸支持

谢谢回复。
无论读写操作,从设备都可能会拉低SCL吗?
是说现在我用的Master端没有支持时钟拉伸才会出现现在的问题吗?
发表于 2017-10-13 17:15:26 | 显示全部楼层
当I2C器件工作在主模式的时候,他在转换或运算的时候,会拉低SCL脚,防止I2C工作,从机在这个过程中会释放SCL,方便I2C去进行其他器件的操作!
发表于 2017-10-14 08:32:41 | 显示全部楼层
本帖最后由 Eric_Xue 于 2017-10-14 08:47 编辑

I2C Slave 设备用有Clock stretch功能。I2C Mater也必须支持该功能。否则只能在ACK后加一段延迟。

另外,I2C Master是采用软件模拟的吗,怎么第一张图中,Slave+w接受到NACK,还会继续发送数据?
 楼主| 发表于 2017-10-16 10:07:23 | 显示全部楼层
Eric_Xue 发表于 2017-10-14 08:32
I2C Slave 设备用有Clock stretch功能。I2C Mater也必须支持该功能。否则只能在ACK后加一段延迟。

另外,I ...

谢谢回复。
I2C Master其实是摄像头的SCCB协议,似乎SCCB协议中受到NACK也会照常发送数据。
按照大家的说法,我觉得可能是我现在的Master内不支持Clock Stretch功能,但是master的部分我也改不了里面代码,
能不能用其他方式比如禁止Arduino的Clock Stretch(Arduino只是把loop中实时采集到的数据快速传给Master),或者Arduino代码用更底层的中断方式来写能改善这个问题吗?
 楼主| 发表于 2017-10-16 13:32:55 | 显示全部楼层
gallle 发表于 2017-10-13 17:15
当I2C器件工作在主模式的时候,他在转换或运算的时候,会拉低SCL脚,防止I2C工作,从机在这个过程中会释放S ...

谢谢回复。没太明白您的意思。
意思是从机Arduino端的代码有问题吗?是说clock stretch的问题吗?
 楼主| 发表于 2017-11-13 08:41:27 | 显示全部楼层
确实是Master不支持Clock Stretch的问题。 谢各位大神。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-10-18 18:47

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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