[51单片机] 关于I2C总线的问题

[复制链接]
1731|13
 楼主| 1280486281 发表于 2017-12-1 10:31 | 显示全部楼层 |阅读模式
24c02写入一个字节后sda一直低电平咋回事
 楼主| 1280486281 发表于 2017-12-1 10:41 | 显示全部楼层
没人吗
jiangjiayu 发表于 2017-12-1 16:15 | 显示全部楼层
对啊,ACK就是低啊
linqing171 发表于 2017-12-1 21:36 | 显示全部楼层
一个时钟一位,你发了8位了, 他发一位应答, 你发个时钟它就知道你已经读过了, 会释放sda的.
在读的时候, 它发8位后,如果你要继续读,你也要发个应答,   如果你不读了,就发  非应答.
aizaixiyuanqian 发表于 2017-12-1 22:19 | 显示全部楼层
空闲时要记得拉高
h286288986 发表于 2017-12-3 11:57 | 显示全部楼层
看时序写,不要问为什么,多理清下思路!
NE5532 发表于 2017-12-3 22:17 | 显示全部楼层
SDA是你自己控制的,你问人家干吗?从器件要声明在忙,只会拉低SCL。另外你问的是写入1Byte以后ACK为低么?是这个的话,请看协议,仔细看。
ningling_21 发表于 2017-12-4 11:03 | 显示全部楼层
SDA受程序控制,关键看程序怎么写的
 楼主| 1280486281 发表于 2017-12-4 15:12 | 显示全部楼层
linqing171 发表于 2017-12-1 21:36
一个时钟一位,你发了8位了, 他发一位应答, 你发个时钟它就知道你已经读过了, 会释放sda的.
在读的时候, 它 ...

发了8位后, 我程序吧sda拉高释放了等应答,但是8位后,sda一直低电平
linqing171 发表于 2017-12-4 20:25 | 显示全部楼层
1280486281 发表于 2017-12-4 15:12
发了8位后, 我程序吧sda拉高释放了等应答,但是8位后,sda一直低电平

低电平就是应答了啊.
如果被上拉电阻拉高了, 才是芯片没有焊好,没有芯片来应答.

你发个时钟,它就应答释放了, 让你继续发.
 楼主| 1280486281 发表于 2017-12-5 09:32 | 显示全部楼层
linqing171 发表于 2017-12-4 20:25
低电平就是应答了啊.
如果被上拉电阻拉高了, 才是芯片没有焊好,没有芯片来应答.

我的意思是我发8位数据后,先把sda释放了,然后第九个时钟,等应答,可是8位数据后,sda拉不高,释放不了呀。在第九个时钟之前sda一直低电平,这就不对呀
 楼主| 1280486281 发表于 2017-12-5 09:34 | 显示全部楼层
NE5532 发表于 2017-12-3 22:17
SDA是你自己控制的,你问人家干吗?从器件要声明在忙,只会拉低SCL。另外你问的是写入1Byte以后ACK为低么? ...

发完8位后,我把sda拉高了,没起作用呀
linqing171 发表于 2017-12-5 23:19 | 显示全部楼层
1280486281 发表于 2017-12-5 09:32
我的意思是我发8位数据后,先把sda释放了,然后第九个时钟,等应答,可是8位数据后,sda拉不高,释放不了 ...

那是它已经应答了.
在SDA中间用刀子割开, 串连200欧姆电阻, 这样两边输出的低电平就不一样了, 用示波器就知道谁输出的低了.
NE5532 发表于 2017-12-6 08:15 | 显示全部楼层
1280486281 发表于 2017-12-5 09:34
发完8位后,我把sda拉高了,没起作用呀

这个叫应答,请仔细看协议。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部