![19b0d58bbe35c2787fa4d86363f73900.png](https://i-blog.csdnimg.cn/blog_migrate/6f9f65d66568d28482c2aa4a2233d7b1.png)
1、I²C概述
I²C总线是一种用于内部IC控制的具有多端控制能力的双线双向串行数据总线系统。能够用于替代标准的并行总线,连接各种集成电路和功能模块。I²C器件的应用能够减少电路间连线,减少电路板尺寸,降低硬件成本,并提高了系统可靠性。
虽然I²C总线始终与先进技术保持同步,但仍具有向下兼容性,高速模式下速度可达3.4Mbps,例如EEPROM和FLASH存储器。
I²C传输模块存在于MSP430F15/16X中,能够为MSP430和I²C兼容的设备互连提供接口。
I²C中关于设备的基本概念如下:
- 发送设备:发送数据到总线上的设备。
- 接收设备:从总线上接收数据的设备。
- 主设备:启动数据传送并产生时钟信号的设备。
- 从设备:被主器件寻址的设备。
I²C是一个多主总线,即它可以由多个互连的器件控制。所以任何一个设备都能像主控器一样工作,并控制总线。支持I²C的设备有微控制器,,A/D、D/A转换器,储存器,LCD控制器,LED驱动器,I/O端口扩展器以及实时时钟。在互连的系统中,每个设备都有自己的唯一地址,可以作为发送设备(LCD驱动器)、接收设备,或同时具有发送和接收功能(存储器)。根据设备是否必须启动数据传输还是仅仅被寻址的情况,发送设备或接收设备可以工作于主模式或从模式。
MSP430和有关设备互连如图1所示。
通常的I²C总线包括:
- SCL:双向串行时钟线。
- SDA:双向传输的串行数据线。
![0a43f6272965a0f00ddc124557e8240c.png](https://i-blog.csdnimg.cn/blog_migrate/9820b66664e5ff5bd6d7ebefa887a333.png)
由于SDA与SCL为双向 I/O 线,都是开漏极端(输出1时,为高阻状态),因此I²C总线上的所有设备的SDA和SCL引脚都要外接上拉电阻。
MSP430-I²C模块结构如图2所示。
![2fca0f03ff7d09a30b8a3889f069fc94.png](https://i-blog.csdnimg.cn/blog_migrate/d76208d3d0c7449120c3ea51f4302b85.jpeg)
当SYNC和I²C都置位的情况下,串行通信模块USART0工作于I²C模式。由图2可见,MSP430-I²C模块包括时钟产生、数据发送和数据接收部件,它们通过大量的控制寄存器来实现灵活的I²C操作。
MSP430系列I²C模块的主要特征如下:
1)符合I²C规范。
- 字/字节格式传输;
- 7位或者10位设备寻址模式;
- 群呼;
- 开始/重新开始/停止;
- 多主传送/从接收模式;
- 多主接收/从发送模式;
- 主发送,从发送,主接收,从接收;
- 标准模式速度为100Kbps,快速模式速度可以达到400Kbps。
2)读写采用先进先出缓冲结构。
3)可编程时钟发生器。
4)16位数据访问可达到总线的最大吞吐率。
5)自动数据字节计算。
6)支持低功耗模式。
7)从接收根据检测到开始信号自动将MSP430从LPMx模式唤醒。
8)两个DMA触发源。
9)中断功能丰富。
10)只能用USART0实现I²C操作。
2、I²C模式
2.1 I²C的寻址模式
早期的I²C总线数据传输速率最高为I00Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,I²C总线也增强为快速模式(400Kb1ts/s)和10位寻址以满足更高速度和更大寻址空间的需求。
MSP430-I²C模块支持7位和10位两种寻址模式,7位寻址模式最多寻址128个设备,10位寻址格式最多寻址1024个设备。12C总线理论上可以允许的最大设备数,是以总线上所有器件的电容总和不超过400pF为限(其中包括连线本身的电容和其连接端的引出电容),总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选信号。
(1)7位寻址模式
图3所示为7位地址方式下I²C数据传输格式。第一个字节由7位从地址和R/W区(读/写位)组成,不论总线上传送地址信息还是数据信息,每个字节传输完毕接收设备都会发送响应位(ACK)。地址类信息传输之后是数据信息,直到接收到停止信号。
![335b74f7d8228aa1606f7ab8951dad29.png](https://i-blog.csdnimg.cn/blog_migrate/a373d569be8d5cda643cd9b208d7f254.png)
(2)10位寻址模式
图4所示为10位地址方式下I²C数据传输格式。第一个字节由二进制位11110和从地址的最高两位以及读写控制位R/W组成,第一个字节传输完毕依然还是响应位,第二个字节就是10位从地址的低8位,后面是响应位和数据。
![1a143a8db06da5e25718a974651e6bea.png](https://i-blog.csdnimg.cn/blog_migrate/cc63525d9eb16540c2e4017bf7984f0e.png)
(3)二次发送从地址模式(重复产生起始信号)
主设备可以在不停止传输的情况下改变SDA上传输的数据流方向,方法就是主设备再次发送开始信号,并重新发送从地址和读写控制位R/W。图5所示为重新产生起始信号数据传输格式。
![a43aa500b8521024bd669b05f117cfca.png](https://i-blog.csdnimg.cn/blog_migrate/d7820199373131445594d60c572c2477.png)
2.2 I²C模块传输特性
I²C模块能在两个设备之间传输信息,采用的方法是总线的电气特征、总线仲裁和时钟同步。
(1)电气特性
- 口起始位:SCL=1时,SDA上有下降沿。
- 口停止位:SCL=1时,SDA上有上升沿。
起始位之后总线被认为忙:有数据在传输。SCL为高电平的时候,SDA的数据必须保持稳定,否则由于起始位和停止位的电气边沿特性,SDA上数据发生改变