51模拟i2c

[复制链接]
16060|33
 楼主| lp1468 发表于 2010-11-5 19:16 | 显示全部楼层 |阅读模式
请问,51模拟i2c连续写入最多可以写入多少个字节。
chen3bing 发表于 2010-11-5 19:19 | 显示全部楼层
那要看I2C器件的容量了。
 楼主| lp1468 发表于 2010-11-5 19:25 | 显示全部楼层
这个还和I2C的容量有关,对与24c02,2k的最大连续写多少个字节。
 楼主| lp1468 发表于 2010-11-5 19:29 | 显示全部楼层
还有就是对于I2C的操作,假如你写入过后直接读取数据,是不是不可以,要有一定的延时。
chen3bing 发表于 2010-11-5 19:45 | 显示全部楼层
是的。
chen3bing 发表于 2010-11-5 19:46 | 显示全部楼层
我感觉是256个字节吧。其实我也没试过。
一级菜鸟 发表于 2010-11-5 19:53 | 显示全部楼层
不同的IIC器件有不同的连续写数量限制,具体要参考数据手册。
写操作完毕后不要死等,正确的方法是写操作完毕后,检查ACK,ACK正常时表示数据已写入。
 楼主| lp1468 发表于 2010-11-5 19:56 | 显示全部楼层
7# 一级菜鸟

楼上说的很多,不同IIC器件连续写数量是有限的。具体看手册。
还有就是完毕之后,当然是检测了应答信号的,但是写完之后直接读取,不行。
  是51单片机程序的原因还是什么原因呢?
一级菜鸟 发表于 2010-11-5 19:58 | 显示全部楼层
7# 一级菜鸟  

楼上说的很多,不同IIC器件连续写数量是有限的。具体看手册。
还有就是完毕之后,当然是检测了应答信号的,但是写完之后直接读取,不行。
  是51单片机程序的原因还是什么原因呢? ...
lp1468 发表于 2010-11-5 19:56


写完之后直接读取当然可以,你说的不行,是马上读就不行,还是根本就没写进去?
 楼主| lp1468 发表于 2010-11-5 20:01 | 显示全部楼层
9# 一级菜鸟
写进去了,应答是对的,但是写完直接就读得话,读就没有应答,应该是读失效了。但是我延时1ms就可以了。小于1ms都不行。
一级菜鸟 发表于 2010-11-5 20:05 | 显示全部楼层
9# 一级菜鸟  写
写进去了,应答是对的,但是写完直接就读得话,读就没有应答,应该是读失效了。但是我延时1ms就可以了。小于1ms都不行。
lp1468 发表于 2010-11-5 20:01


你的应答机制没做好。
一级菜鸟 发表于 2010-11-5 20:06 | 显示全部楼层
10# lp1468

我说的应答,是在发送完所有数据,结束信号也发送完之后检测的,不是每个字节的ACK。
 楼主| lp1468 发表于 2010-11-5 20:10 | 显示全部楼层
12# 一级菜鸟

假如说我要发送8个字节,每个字节都会有个应答,我说的有应答是每有字节都有应答,
在这8个字节发送完并且都有应答的时候,我然后写入结束。
一级菜鸟 发表于 2010-11-5 20:27 | 显示全部楼层
12# 一级菜鸟  

假如说我要发送8个字节,每个字节都会有个应答,我说的有应答是每有字节都有应答,
在这8个字节发送完并且都有应答的时候,我然后写入结束。 ...
lp1468 发表于 2010-11-5 20:10


不是这么回事,见下图

本帖子中包含更多资源

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

×
 楼主| lp1468 发表于 2010-11-6 01:05 | 显示全部楼层
14# 一级菜鸟

哥们没有看懂,你能具体具体说一下要怎么操作吗?谢了
ayb_ice 发表于 2010-11-6 08:30 | 显示全部楼层
这完全取决于目标器件
一级菜鸟 发表于 2010-11-6 09:01 | 显示全部楼层
14# 一级菜鸟  

哥们没有看懂,你能具体具体说一下要怎么操作吗?谢了
lp1468 发表于 2010-11-6 01:05


这样还看不懂,哥帮不了你了
風神 发表于 2010-11-6 09:08 | 显示全部楼层
是一次最多写256byte吧。这个是协议内容。。。
xwj 发表于 2010-11-6 09:20 | 显示全部楼层
就如16楼说的,
这完全取决于目标器件
ayb_ice 发表于 2010-11-6 08:30

IIC器件一次能写入多少字节,完全取决与器件本身一次能够页写多少字节。而且,还与当前开始地址有关,比如从一页中间写,就只能写入后面的,再写也可以,但是又从当前页首开始了(回环),并不会写到下一页(也就出错了)。

反正不管怎么样,一次都只能在一页内写入。写入完后你的等待器件完成这个操作,一般都是x个毫秒,而这个时候只能读取器件状态,读取数据肯定是不理你的,就算理你也是错误的数据。

——这些都是基本的常识,需要知道。
 楼主| lp1468 发表于 2010-11-6 09:25 | 显示全部楼层
17# 一级菜鸟
你意思,在写命令之后,应该加一个停止命令,然后开始命令,然后写?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

276

帖子

1

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