TWI 接口和 TWI 接口器件使用 AVR 单片机的很多型号也具有两线制接口,即 TWI 接口。实际上 TWI 接口时序和常见的CI2总线是兼容的。我们这本书结合讲的单片机 Atmega16 就有这种接口。这种接口的使用也十分广泛。比如本文会结合介绍的 EEPROM AT24C64;MAXIM 公司的温度传感器(查出型号);有的 A/D 转换器;菲利普还有专门的用这种总线的 I/O 扩展芯片。 TWI 电路接线简单,占用 I/O,并且可以很多期间共享一个总线,使用比较方便,系统也很简洁。AVR 单片机用硬件实现了这种总线的时序,省去了很多编程工作。同时支持一条总线多个主设备的通讯。我们只需要控制相关寄存器就能实现通过 TWI 传输数据。很大程度上减少了我们的工作量,从而使代码更简洁,开发更容易。下面我们会介绍CI2的基本知识,AVR 的 TWI 接口的功能和使用,给出一个用 TWI 接口读写CI2接口的 EEPROM 的例子,最后给出适用于AVR-GCC 编译器的示例程序。 一、CI2总线的基本知识 CI2总线的信号线有两条,一条是时钟线 SCL,另一条是数据线 SDA。总线连接起来的时候,需要两个上拉电阻,器件内部这两个信号引脚是集电极开路(或者是漏极开路)的。这样总线上的器件只要有一个输出低电平总线就会被拉低(实际上就是所谓线与的逻辑),这主要用于总线仲裁。 1.在CI2总线上,有几个状态表示特殊的总线信号。 开始和停止信号时序如下图所示: 图上可以看出,在 SCL 位高电平时 SDA 的变化将产生总线开始和停止信号。SDA 从高电平跳变到低电平表示开始,从低电平跳变到高电平表示停止。 数据的建立和有效: 上图表示在传输数据时,SCL 高电平的时候,SDA 上的数据不能变化,因为前面已经说明,这是数据的变化将会认为是开始或者结束的信号。在 SCL 低电平时数据可以改变。 2.主器件和从器件 总线上可以有很多设备但是同时只能有一个主设备进行传输,从设备都有设备地址,当总线上的地址和从设备设置的地址一致时,传输在主设备和被寻址的从设备之间进行,其他设备相当于和总线分离。主设备产生SCL 信号。当总线上有多个主设备试图传输不同的数据的时候,就会产生总线仲裁问题。 3. CI 2的寻址过程 在CI 2总线上的数据传输,除了开始和停止之外,由于可以多个从设备共用总线还会有一个寻址过程。寻址过程通过主设备发送一定格式的寻址命令进行。寻址命令由起个位的从设备地址、一位读写标志和一位响应信号组成。七位的从设备...