I2C

来源:互联网 发布:破解版软件大全 编辑:程序博客网 时间:2024/06/04 20:02

I2C总线上所有外闱器件都有规范的器件地址,器件地址由7位组成,它和1位方向位(R/W)构成了I2C总线器件的寻址字节SLA,格式如下:
这里写图片描述

器件地址(A7,A6,A5,A4)是I2C总线外围接口器件同有的地址编码(4位或5位),器件出厂时已固化好。

地址的规则为:1010+(A0)(A1)(A2)(R/W)
最后一位(R/W)是写保护引脚——接高电平时只能对该器件进行读操作((R/W)=1),低电平时为写操作((R/W)=0).

问:IIC总线上的器件都是只通过SCL和SDA这两条线连接到IIC总线上的吗?
答:是的

问:IIC上的每个器件都要一个地址寄存器来确定自己的地址吗?
答:不一定,很多器件都是通过硬件来确定地址的。
有的在出厂时地址就设置好了,用户不可以更改;
有的确定了几位,剩下几位由硬件确定(比如有三位由用户确定,就留有3个控制地址的引脚),此类较多;
还有的有地址寄存器。

问:”如果主机向从机发送地址,从机怎么知道这个地址就是主机的,这个地址是怎么计算出来的”
答:严格讲,主机不是向从机发送地址,而是主机往总线上发送地址(这个地址是某个从机的,而不是主机的,所以不存在“从机怎么知道这个地址就是主机的”的问题),所有的从机都能接收到主机发出的地址,然后每个从机都将主机发出的地址与自己的地址比较,如果匹配上了,这个从机就会向主机发出一个响应信号。主机收到响应信号后,开始向总线上发送数据,与这个从机的通讯就建立起来了。如果主机没有收到响应信号,则表示寻址失败。

“比如IIC总线上接了两块单片机,一块是主机,另一块是从机,如何定义从机的这个地址”
如果是带IIC的单片机,会有地址寄存器,寄存器里的值即为它作为从机时的地址。
以ATmega48为例,有TWI从机地址寄存器—TWAR,先要确定工作模式(主机模式或从机模式),若工作在从机模式,,TWI将根据这个地址进行响应。
如果是不带IIC的单片机,没有地址寄存器。所以一般不用做从机。以AT89C51为例,用它的普通IO口模拟IIC时序时,一般都是用作主机。特殊情况下51用作从机时,可以通过扫描总线的方式,若发现总线上出现某个地址信号便响应(严格来说,这种方式只是在IIC基础上z用户定义的通信方式)。

最常见的情况,如前面所说,主从器件的角色是确定的,也就是说从机一直工作在从机模式。它的地址确定方法我已经说过了。不同的器件定义地址的方式是不同的,有的是软件定义,有的是硬件定义。你找个数据手册看看就明白了,纸上谈兵很难说清楚

0 0
原创粉丝点击