打印
[Cortex-M0技术交流]

昨天问了大叔的I2C问题

[复制链接]
2140|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子write_cai|  楼主 | 2011-7-23 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天重新审阅下,收获大大的。



IIC总线
一般串行数据通讯都有时钟和数据之分,有异步和同步之别.
有单线,双线和三线等.

I2C肯定是2线的(不算地线).

I2C协议确实很科学,比3/4线的SPI要好,当然线多通讯速率相对就快了.

I2C的原则是:

在SCL=1(高电平)时,SDA千万别忽悠!!!

否则,SDA下跳则"判罚"为"起始信号S",SDA上跳则"判罚"为"停止信号P".

在SCL=0(低电平)时,SDA随便忽悠!!!(可别忽悠过火到SCL跳高)

每个字节后应该由对方回送一个应答信号ACK做为对方在线的标志.

非应答信号一般在所有字节的最后一个字节后.一般要由双方协议签定.

SCL必须由主机发送,否则天下大乱.

首字节是"片选信号",即7位从机地址加1位方向(读写)控制.

从机收到(听到)自己的地址才能发送应答信号(必须应答!!!)表示自己在线.

其他地址的从机不允许忽悠!!!(当然群呼可以忽悠但只能听不许说话)

读写是站在主机的立场上定义的.

"读"是主机接收从机数据,"写"是主机发送数据给从机.

重复位主要用于主机从发送模式到接收模式的转换"信号",由于只有2线,

所以收发转换肯定要比SPI复杂,因为SPI可用不同的边沿来收发数据,而I2C不行.

在硬件I2C模块,特别是MCU/ARM/DSP等每个阶段都会得到一个准确的状态码,

根据这个状态码可以很容易知道现在在什么状态和什么出错信息.

7位I2C总线可以挂接127个不同地址的I2C设备,0号"设备"作为群呼地址.

10位I2C总线可以挂接更多的10位I2C设备.

总之,只要掌握I2C的忽悠记,一般很容易掌控... 第一个字节(为slave address)由7位地址和一位R/W读写位组成的,这字节是个器件地址。
首先,你要知道:常用IIC接口通用器件的器件地址是由种类型号,及寻址码组成的,共7位。
如格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
1-器件类型由:D7-D4 共4位决定的。这是由半导公司生产时就已固定此类型的了,也就是说这4位已是固定的。

2-用户自定义地址码:D3-D1共3位。这是由用户自己设置的,通常的作法如EEPROM这些器件是由外部IC的3个引脚所组合电平决定的(用常用的名字如A0,A1,A2)。这也就是寻址码。
所以为什么同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片的原因了。

3-最低一位就是R/W位。这位不用我多说了。
在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS开发了一种用于内部IC控制的简单的双向两线串行总线I2C。I2C总线支持任何一种IC制造工艺,并且PHILIPS和其他厂商提供了种类非常丰富的I2C兼容芯片。作为一个专利的控制总线,I2C已经成为世界性的工业标准。

每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。I2C是一个多主总线,即它可以由多个连接的器件控制。
基本的I2C总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。
I2C总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得I2C总线能够支持现有以及将来的高速串行传输应用,例如EEPROM和Flash存储器。 在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS开发了一种用于内部IC控制的简单的双向两线串行总线I2C。I2C总线支持任何一种IC制造工艺,并且PHILIPS和其他厂商提供了种类非常丰富的I2C兼容芯片。作为一个专利的控制总线,I2C已经成为世界性的工业标准。

每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。I2C是一个多主总线,即它可以由多个连接的器件控制。
基本的I2C总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。
I2C总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得I2C总线能够支持现有以及将来的高速串行传输应用,例如EEPROM和Flash存储器。

相关帖子

沙发
hotpower| | 2011-7-23 15:02 | 只看该作者
看着好像俺以前写的“I2C忽悠记”???
http://www.baigoogledu.com/s.php ... C%BA%F6%D3%C6%BC%C7

使用特权

评论回复
板凳
电子write_cai|  楼主 | 2011-7-23 16:32 | 只看该作者
不知道呢,我在网上看到的

使用特权

评论回复
地板
hotpower| | 2011-7-23 17:21 | 只看该作者
不知道呢,我在网上看到的
电子write_cai 发表于 2011-7-23 16:32


晕!!!!!!!!!!!!!!

作为《I2C忽悠记》作者的本人,在网上竟然看不见作者本人,大都是直接
写的,看着像是博主本人写的,有些是转帖但不注明是菜农!

晕!!!可悲的技术人!!!

实际原贴在https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2015996
早已被被二姨丢失,那是俺回答IC921网友的帖子,也是在开玩笑写的。

俺的水潭有一个帖子的备份:http://blog.21ic.com/more.asp?id=10807

http://www.baigoogledu.com/s.php?hl=zh-CN&q=I2C%BA%F6%D3%C6%BC%C7+

使用特权

评论回复
5
电子write_cai|  楼主 | 2011-7-23 23:30 | 只看该作者
晕!!!!!!!!!!!!!!

作为《I2C忽悠记》作者的本人,在网上竟然看不见作者本人,大都是直接
写的,看着像是博主本人写的,有些是转帖但不注明是菜农!

晕!!!可悲的技术人!!!

实际原贴在http:/ ...
hotpower 发表于 2011-7-23 17:21
**深刻啊。

使用特权

评论回复
6
hotpower| | 2011-7-24 07:27 | 只看该作者
晕,谁能写出这种不雅的标题???

使用特权

评论回复
7
相信哥咯| | 2011-7-24 11:49 | 只看该作者
这些不是文档里面就写了的吗?有什么好问的:sleepy:,实际用一次就差不多可以了吧

使用特权

评论回复
8
hotpower| | 2011-7-25 11:32 | 只看该作者
俺认为中断加状态机是比较简单和合理的。

使用特权

评论回复
9
可木| | 2011-10-7 12:25 | 只看该作者
哈哈。。。。把幕后大牛给勾引出来了!;P

使用特权

评论回复
10
athud| | 2011-10-7 21:04 | 只看该作者
不错

使用特权

评论回复
11
hotpower| | 2011-10-21 07:15 | 只看该作者
俺I2C从来未失手过~~~

可谓“从无败绩”

使用特权

评论回复
12
kyzb001| | 2011-10-21 10:49 | 只看该作者
我 有种想去西安把大叔电脑硬盘偷过来的冲动!

使用特权

评论回复
13
kyzb001| | 2011-10-21 10:50 | 只看该作者
这些不是文档里面就写了的吗?有什么好问的:sleepy:,实际用一次就差不多可以了吧
相信哥咯 发表于 2011-7-24 11:49

文档写的是固定模式化的,看文档大部分就得死照搬勒。要真像大叔这样 弄明白了,  可谓是想怎么玩,就怎么玩。!

使用特权

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

本版积分规则

个人签名:只要你是拼多多新用户就可以加我微信,微信号772880135验证您是新用户后立刻微信转你20元。欢迎朋友加我微信,多年21ic用户,诚信为本!

157

主题

1534

帖子

3

粉丝