<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
IIC总线之原理及应用
IIC总线是Philips公司推出的串行总线标准,它只需要数据线(SDA)和时钟线(SCL)就能实现完善的全双工数据传输,即CPU与各个外围器件仅靠这两条线来进行信息交换。总线上扩展的外围器件以及外设接口通过总线来寻址,是一种具备总线仲裁和高低速设备同步等功能的高性能多主机总线。所有挂接在IIC总线上的器件和接口电路都应该具有IIC总线接口,而且要依靠SDA发送的地址信号来寻址,不需要片选线。这样一来,系统的组成就非常简单了,芯片管脚的数量少,成本也低,因此IIC总线得到了非常广泛的应用。
下图是TI公司的IIC解决方案中一个典型的IIC总线系统结构,可知IIC总线上可以挂接多个器件,但是其中每个器件都必须支持IIC总线通讯协议。
而且所有的外围器件都需要有唯一的7位地址,它由器件地址(4位)和引脚地址(3位)两部分组成。
(1)器件地址:IIC器件在出厂时就已经确定下来了,例如AT24C系列的串行EEPROM的器件地址为1010,用户是不能更改的;
(2)引脚地址:由外围器件的地址引脚(A2、A1、A0)来确定,由用户根据需要来设置。
D7~D1位组成从机的地址,D0位是数据的传送位,“0”表示写操作,“1”表示读操作。
我这次调试的IIC器件是AT24系列的串行EEPROM,它的型号比较多,我手里用的是AT24C08这个芯片,它使用起来占用单片机的I/O端口很少,硬件连接也比较简洁,但是为了调通这个芯片,本人也是费了不少的心思!
IIC总线在数据传输过程中共有三种信号,即起始信号、终止信号和应答信号。分别如下图所示:
(1)Start and Stop Definition:
析:起始信号是在时钟线SCL为高电平期间,数据线SDA上的下降沿信号表示,只有起始信号出现后,才可以进行后续的IIC总线寻址或数据传输等。在起始信号产生后,总线就处于被占用的状态。而且随后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W非),用“0”表示主机发送数据,“1”表示主机接收数据。
终止信号是在时钟线SCL为高电平期间,数据线SDA上的上升沿信号表示,只要终止信号一出现,则所有的IIC总线操作都立即结束,且释放总线控制权。在终止信号产生后,总线就处于空闲状态。
(2)Output Acknowledge:
析:应答信号用于表明IIC总线数据传输的结束。IIC总线传输数据时,一个字节数据传送完毕后都必须由主器件产生应答信号。主器件在第9个时钟位上释放数据总线SDA,使其处于高电平状态,此时从器件输出低电平拉低数据总线SDA作为应答信号。
注:我这个代码利用了AT24C08可以掉电保持数据的功能,设置了一个标准的电子时钟,在掉电重启之后(即使重新烧入程序),系统仍然会按照掉电之前的时间继续Moving。
附录:
(2)几个很好的参考资料
AT24C系列EEPROM数据手册: https://static.assets-stash.eet-china.com/album/old-resources/2010/5/14/021e4034-5b28-4f47-b134-54f4bcdfcfdf.rar
IIC总线规范说明: https://static.assets-stash.eet-china.com/album/old-resources/2010/5/14/0fe6fe7d-f377-47c2-938f-1c34588ffa12.rar
TI公司的IIC Guide: https://static.assets-stash.eet-china.com/album/old-resources/2010/5/14/d56423f5-3fc0-47a3-9281-9895b44e4ed9.rarhttps://static.assets-stash.eet-china.com/album/old-resources/2010/5/14/35f0c27d-fd67-403c-b688-a430fd065851.rarhttps://static.assets-stash.eet-china.com/album/old-resources/2010/5/14/ef671f34-cc6f-4caa-b204-e6cda46aa1db.rar
用户267345 2011-7-24 14:09
用户315600 2010-12-17 10:04