打印

51模拟i2c

[复制链接]
14966|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lp1468|  楼主 | 2010-11-5 19:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
chen3bing| | 2010-11-5 19:19 | 只看该作者
那要看I2C器件的容量了。

使用特权

评论回复
板凳
lp1468|  楼主 | 2010-11-5 19:25 | 只看该作者
这个还和I2C的容量有关,对与24c02,2k的最大连续写多少个字节。

使用特权

评论回复
地板
lp1468|  楼主 | 2010-11-5 19:29 | 只看该作者
还有就是对于I2C的操作,假如你写入过后直接读取数据,是不是不可以,要有一定的延时。

使用特权

评论回复
5
chen3bing| | 2010-11-5 19:45 | 只看该作者
是的。

使用特权

评论回复
6
chen3bing| | 2010-11-5 19:46 | 只看该作者
我感觉是256个字节吧。其实我也没试过。

使用特权

评论回复
7
一级菜鸟| | 2010-11-5 19:53 | 只看该作者
不同的IIC器件有不同的连续写数量限制,具体要参考数据手册。
写操作完毕后不要死等,正确的方法是写操作完毕后,检查ACK,ACK正常时表示数据已写入。

使用特权

评论回复
8
lp1468|  楼主 | 2010-11-5 19:56 | 只看该作者
7# 一级菜鸟

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

使用特权

评论回复
9
一级菜鸟| | 2010-11-5 19:58 | 只看该作者
7# 一级菜鸟  

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


写完之后直接读取当然可以,你说的不行,是马上读就不行,还是根本就没写进去?

使用特权

评论回复
10
lp1468|  楼主 | 2010-11-5 20:01 | 只看该作者
9# 一级菜鸟
写进去了,应答是对的,但是写完直接就读得话,读就没有应答,应该是读失效了。但是我延时1ms就可以了。小于1ms都不行。

使用特权

评论回复
11
一级菜鸟| | 2010-11-5 20:05 | 只看该作者
9# 一级菜鸟  写
写进去了,应答是对的,但是写完直接就读得话,读就没有应答,应该是读失效了。但是我延时1ms就可以了。小于1ms都不行。
lp1468 发表于 2010-11-5 20:01


你的应答机制没做好。

使用特权

评论回复
12
一级菜鸟| | 2010-11-5 20:06 | 只看该作者
10# lp1468

我说的应答,是在发送完所有数据,结束信号也发送完之后检测的,不是每个字节的ACK。

使用特权

评论回复
13
lp1468|  楼主 | 2010-11-5 20:10 | 只看该作者
12# 一级菜鸟

假如说我要发送8个字节,每个字节都会有个应答,我说的有应答是每有字节都有应答,
在这8个字节发送完并且都有应答的时候,我然后写入结束。

使用特权

评论回复
14
一级菜鸟| | 2010-11-5 20:27 | 只看该作者
12# 一级菜鸟  

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


不是这么回事,见下图

使用特权

评论回复
15
lp1468|  楼主 | 2010-11-6 01:05 | 只看该作者
14# 一级菜鸟

哥们没有看懂,你能具体具体说一下要怎么操作吗?谢了

使用特权

评论回复
16
ayb_ice| | 2010-11-6 08:30 | 只看该作者
这完全取决于目标器件

使用特权

评论回复
17
一级菜鸟| | 2010-11-6 09:01 | 只看该作者
14# 一级菜鸟  

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


这样还看不懂,哥帮不了你了

使用特权

评论回复
18
風神| | 2010-11-6 09:08 | 只看该作者
是一次最多写256byte吧。这个是协议内容。。。

使用特权

评论回复
19
xwj| | 2010-11-6 09:20 | 只看该作者
就如16楼说的,
这完全取决于目标器件
ayb_ice 发表于 2010-11-6 08:30

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

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

——这些都是基本的常识,需要知道。

使用特权

评论回复
20
lp1468|  楼主 | 2010-11-6 09:25 | 只看该作者
17# 一级菜鸟
你意思,在写命令之后,应该加一个停止命令,然后开始命令,然后写?

使用特权

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

本版积分规则

0

主题

276

帖子

1

粉丝