打印
[文档下载]

IIc总线简介

[复制链接]
766|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ideafor|  楼主 | 2016-1-28 09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IIC总线定义与特点I2C总线的工作原理AVR的TWI模块的使用方法AT24C02IIC inter integrated circuit  总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如:电源和系统风扇,可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
TWI:ATMega系列单片机内集成两线制串行接口模块,ATmegl文档称为TWI接口事实上TWI与PHILIOS的I2C总线是同一回事,之所以叫它TWI是因为这样命名可使ATmel避免交术语版税。所以,TWI是兼容I2C的一种说法。
I2C总线最只要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10KPS的最大传输率支持40个组件,I2C总线的另一个优点是,它支持多主控(MULTIMASTERING),其中任何能够进行发送和接受的设备都可以称为主总线,一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

由于AVR 有上拉电阻所以 R1 R2可以不要。其实还的共地应该是3根线。在多主控上有个总线总裁的知识可以参阅相关文档学习。呵呵、初学者不用了解。
I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接受数据。在CPU与被控IC之间、IC与IC之间进行双向传送、最高传送速率100KBPS.各种被控制电路均并联在这条总线上,最高传送速率100KBPS.各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能,CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定调整的类别(如对比度、亮度等)及需要调整的量。这样各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
[size=78%]oI2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
[size=78%]o开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
[size=78%]o结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
[size=78%]o应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
[size=78%]o这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。



发送地址跟上面右边那个两个发送数据 0  1 是一样的由时钟来锁存相应的数据位,地址共七位,第8位是读还是写状态,读的话置1  写 置0。第9位是应答为,切记应答位不是单片机发出的,而是I2C器件发出的。应答位是这样产生的,I2C器件在接收到完整的8位数据之后,I2C器件判定接受成功,它会向总线发送一个应答信号,可以看到就是在一个时钟脉冲期间,数据线SDA保持低电平就是0,当然发送完地址位之后呢?就发送数据,长度可能是可能1个字节或多个字节。数据的个数跟器件是有关系的。比如AT24C02EEPROM芯片对他进行读写操作 如写可以进行1  2 4  8 字节,当地址数据结束后来一个结束信号。表示这一帧结束了。
下面说下ATmega 16 的TWI模块。下图 (由于ATmega 16 的技术文档讲的比较详细了,所以我们也结合atmege 16的数据手册说了)。



这是两线的一些特点:(自己翻一下吧)


一、简单,但是强大而灵活的通讯接口,只需两根线
二、支持主机和从机的操作
三、器件可以工作于发送或接受
四、7位地址空间允许128个从机
五、高达400KHZ的数据传输率
六、斜率受控制的输出驱动器
七、可以抑制总线的尖峰噪声控制器
八、完全可变成的从机地址以及公共地址
九、睡眠时地址匹配可以唤醒AVR
首先看下数据传输和帧格式下图(传输 数据 (位))(TWI总线上数据位的传送与时钟脉冲同步。时钟线为高时,数据线电压必须保持稳定,除非在启动与停止的状态下。官方的解释)
其实这个图说明在SCL为高电平期间 SDA 数据必须稳定0 或1
当然还有起始位与停止位如下图


(翻译如下)
{
主机启动与停止数据传输。主机在总线上发出START信号以启动数据传输;在总线上发出STOP信号以停止数据传输。在START与STOP状态之间,需要假定总线忙,不允许其它主机控制总线。特例是在START与STOP状态之间发出一个新的START状态。这被称为REPEATEDSTART状态,适用于主机在不放弃总线控制的情况下启动新的传送。在REPEATEDSTART之后,直到下一个STOP,需要假定总线处于忙的状态。这与START是完全一样的,因此在本手册中,如果没有特殊说明,START与REPEATEDSTART均用START表述。如下所示,START与STOP状态是在SCL线为高时,通过改变SDA电平来实现的。
}
开始停止时序图





像这个图中间的一些开始停止和从新开始在绝大数都是用不到的。就不细说了。
下图是地址数据包格式(好好看看是 地址数据的讲解)

翻译下:所有在TWI总线上传送的地址包均为9位,包括7位地址位、1位READ/WRITE控制
位与1位应答位。如果READ/WRITE为1,则执行读操作;否则执行写操作。从机被寻
址后,必须在第九个SCL (ACK)周期通过拉低SDA作出应答。若该从机忙或有其它原因
无法响应主机,则应该在ACK周期保持SDA为高。然后主机可以发出STOP状态或
REPEATED START 状态重新开始发送。地址包包括从机地址与分别称为SLA+R或
SLA+W的READ或WRITE位。



沙发
ideafor|  楼主 | 2016-1-28 09:12 | 只看该作者
地址字节的MSB首先被发送。从机地址由设计者自由分配,但需要保留地址0000 000
作为广播地址。
当发送广播呼叫时,所有的从机应在ACK周期通过拉低SDA作出应答。当主机需要发送
相同的信息给多个从机时可以使用广播功能。当Write位在广播呼叫之后发送,所有的从
机通过在ACK周期通过拉低SDA作出响应。所有的从机接收到紧跟的数据包。注意在整
体访问中发送Read位没有意义,因为如果几个从机发送不同的数据会带来总线冲突。
所有形如1111 xxx格式的地址都需要保留,以便将来使用。
地址包格式图下图:

这个图从右边往左边看先发送的最高位 最后发的是低位。 从 1---9 最后一位 ACK 响应。
下面是数据包下图


官方解释



可见数据包是8位数据加一个应当位。
下图是地址和数据包一个完整的传输。组合一起





SLA +RW 就是地址数据 的传送的字节数由应用程序的协议决定。1个字节   2  4 8个字节数据。
下图是多主机总线系统如图(这个大部分场合用不到所以不用看 以后可以了解下)


解释








下面讲解下TWI 模块的使用方法:如图构成

首先看下SCL  SDA有两个引脚   是在22 与23 脚 PC0 PC1 下面是这两脚的说明




还有一个波特率发声单元与USART相似 他控制SCL的时钟周期,当然这个比特率有两个寄存器决定,TWBR  TWPS 有SCL frequency公式的。CPU的单片机晶振频率 除以 16加上2倍的TWBR 乘以4的TWPS它的次数注意:如果工作在主机模式不应该小于10 下面有解释

使用特权

评论回复
板凳
芙蓉洞| | 2016-1-29 15:21 | 只看该作者
新唐的i2c硬件最高是不是也就支持400K呢?

使用特权

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

本版积分规则

30

主题

149

帖子

1

粉丝