当前位置:
文档之家› 4.5 内部集成电路(I2C)协议 芯片资料
4.5 内部集成电路(I2C)协议 芯片资料
设备1发出SCL: 设备2发出SCL:
总线SCL:
I2C总线仲裁
当两个设备同时发出起始位进行数据传输时,相互竞争的设备 使它们的时钟保持同步。没有检测到冲突之前,每个设备都认为只 有自己在使用总线。每个设备都有仲裁功能,它们都去检测SDA线, 检测到自己发送的数据和总线上数据不匹配的设备就失去仲裁能力。 如果两个或更多的设备发送的第一个字节的内容相同,那么仲 裁就发生在随后传输中。失去仲裁的主设备转变成从接收模式。 注意:数据冲突是因为逻辑低电平可以把逻辑高电平否决。在同一 时刻如果两设备一个发高电平一个发低电平,那么 总线上是低 电平。
名称
UCBxCTLW0 UCBxBRW UCBxSTAT UCBxRXBUF UCBxTXBUF UCBxI2COA
描述
USCI_Bx控制字0 USCI_Bx波特率控制字 USCI_Bx状态寄存器 USCI_Bx接收缓存 USCI_Bx发送缓存 USCI_Bx I2C本机地址
访问
读/写 读/写 读/写 读/写 读/写 读/写
I2C模块特点
MSP430的I2C模块有如下特点:
– – – – – – – – – – – 与Philips半导体I2C规范v2.1兼容 7位和10位芯片寻址方式 全呼 开始/重新开始/停止 多主机发送/接收模式 从接收/发送模式 支持100kbps的标准模式和高达400kbps的快速模式 主机模式下UCxCLK频率可编程 为低功耗设计 用于LPMx模式自动唤醒的从接收器开始检测 LPM4模式下的从模式操作
不停止传输而改变传输的属性
• 主机可以在没有停止传输时,通过产生重复的START条 件,改变SDA上数据流的方向,即读或写。这称为 RESTART。START后,按照R/W确定的新数据方向再次 发出从芯片的地址。
I2C总线时序
在数据传送过程中,必须确认数据传送的开始和结束,这通过 起始和结束信号识别。 起始位:SCL=1时,SDA上有下降沿 停止位:SCL=1时,SDA上有上升沿 所以只有当SCL为低时才允许SDA改变数据,不然会被误判为起始 位或停止位而造成错误,如图:
通用串行通信接口(USCI)模块
• 通用串行通信接口(USCI)模块支持多种串行通信模式。不 同的USCI 模块支持不同的模式 • USCI_Ax 模块支持:
– – – – UART 模式 IrDA 通信的脉冲整形 LIN 通信的自动波特率检测 SPI 模式
• USCI_Bx 模块支持:
– I2C 模式 – SPI 模式
I2C BUS 接口
I2C总线是个多主机总线,所有主器件都可以发出同步时钟, 但由于SCL接口的”线与”结构,一旦一个主器件时钟跳变为低电 平,将使SCL线支持为低电平直至始终到达高电平,因此SCL线上 时钟低电平时间由各器件中时钟最长的低电平时间决定,而时钟高 电平时间则由高电平时间最短的器件决定。
I2C 发送中断操作
为了表明UCBxTXBUF已准备好接收另一个字符,发送 器将置位UCTXIFG。如果此时UCTXIE和GIE也已经置位, 则会产生一个中断请求。当有字符写入UCBxTXBUF或接收 到NACK信号时,UCTXIFG会自动复位。当选择I2C模式且 UCSWRST=1时,UCTXIFG置位。PUC后或UCSWRST=1 时,UCTXIE复位。
S 从方地址加读写控制 数据存放地址 数据
起始信号通常由主 机发出,它作为一 次传输的开始。在 起始信号后总线被 认为处于忙的状态
P
停止信号作为一次传 送的结束,在该信号 之后,总线被认为再 次处于空闲状态。
寻址模式
7位寻址模式最多可以寻址128个设备, 10位寻址最多可以寻址1024个设备。 第一个字节是由7位从地址和R/W(读写位)组成,不论总线传 送地址信息还是数据信息,每个字节传送完毕接收设备都会发送一 个反馈响应位(ACK)。后面都是数据信息,直到接收到停止信号。 但目前几乎所有的I2C应用模块都采用这样的格式,即第二字 节是给出从方的存放数据的地址(RAM或FLASH地址)。而后面才 是真正的数据(数量不限),且只需要给出首存放地址,后面的数 据会依次存放在首地址后。当然,如果第二字节作为地址不够,那 么第三字节也可以作为地址部分。
I2C BUS 接口
常用术语 发送器:本次传输中发送数据到总线的器件; 接收器:本次传输中从总线接收数据的器件; 主机:初始化发送、产生时钟信号和终止发送的器件,它 可以是发送器或接收器。主机通常是微控制器; 从机:被主机寻址的器件,可以是发送器或接收器。 多主器件:多个主器件可以同时企图控制总线而不破坏总 线信息。
7位寻址模式
• 7位寻址模式中,第一个字节是7位从地址和R/W读写控制 位。每个字节后,接收机发送ACK位。
如果8位不够,可以继续 往下顺延,不过每个字 节后必须等待一个ACK.
10位寻址模式
• 10位寻址模式中,11110b加上10位从地址的高两位及 R/W位组成第一个字节数据。每个字节结束后,接收器发 送ACK位。下一个为10位从地址的剩余8位,其后是ACK 位和8位数据。
SDA SCL S P
起始信号
结束信号
I2C总线时序
I2C总线数据传送时,每传送一个字节数据后都必须有应答 信号(A)。主控器接收数据时,如果要结束通信时,将在停止 __ 位之前发送非应答信号( )。
A
A=应答(SDA为低)
SDA SCL A 应答信号
A = 非应答(SDA为高)
__
A 非应答信号
A
从发送模式: S 从器件地址 W
从接收模式: S 从器件地RS A P
主机到从机 主机到从机
A = 应答(SDA为低) A = 非应答(SDA为高)
I2C时钟同步
仲裁过程中,实际由于电气特性,已经对各个不同主设备的时 钟进行同步处理,所以各个设备使用的时钟都是一样的、同步后的 SCL。同步规则就是:SCL线上时钟低电平时间由各器件中时钟最 长的低电平时间决定,而时钟高电平时间则由高电平时间最短的器 件决定。总的原则是:低电平否决高电平。
I2C 接收中断操作
当接收到一个字节并将其装载到UCBxRXBUF时, UCRXIFG中断标志置位。如果此时UCRXIE和GIE都置位, 将产生一个中断请求。PUC后或UCSWRST=1时, UCRXIFG和UCTXIE复位。对UCxRXBUF进行读操作之后 ,UCRXIFG会自动复位。
I2C模式下可用的USCI寄存器
读/写
读/写 读/写 读/写 读
0000h
0200h 00h 02h 0000h
字
字 字节 字节 字
USCI_Bx 控制寄存器0(UCBxCTL0)
•
•
•
•
•
•
UCA10 Bit7 本机地址模式选择 – 0 7位本机地址模式 – 10位本机地址模式 UCSLA10 Bit6 从机地址模式选择 – 7位从机地址模式 – 10位从机地址模式 UCMM Bit5 多主机环境的选择 – 0 单主机环境。该系统内没有别的主机。禁止地址比较单元。 – 1 多主机环境。 UCMST Bit3 主机模式选择。当主机在多主机环境下丢失仲裁时(UCMM = 1),UCMST自动复位,模块作为从机操作。 – 0 从机模式 – 1 主机模式 UCMODEx Bits2-1 USCI 模式。当UCSYNC=1时,UCMODEx位选择同步模式。 – 00 3线SPI – 01 四线SPI(如果UCxSTE=1,使能主/从机) – 10 四线SPI(如果UCxSTE=0,使能主/从机) – 11 I2C模式 UCYNC Bit0 使能同步模式。 – 0 异步模式 – 1 同步模式
I2C总线时序
一般I2C具有4种操作模式:主发送模式、主接收模式、从发送模 式和从接收模式。
主发送模式: S 从器件地址 W 主接收模式: S 从器件地址 R A A A A 数据 数据 A A A A 数据… 数据… 数据… 数据… S = 起始信号 P = 停止信号 RS = 重复起始信号 A/A P P
复位值
0101h 0000h 00h 00h 00h 0000h
寄存器访问
字 字 字节 字节 字节 字
UCBxI2CSA
UCBxICTL UCBxIE UCBxIFG UCBxIV
USCI_Bx I2C从机地址
USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量
USCI_Bx控制寄存器1(UCBxCTL1)
• UCSSELx Bits7-6 USCI 时钟源选择。这些位选择BRCLK时钟源。 – 00 UCLKI – 01 ACLK – 10 SMCLK – 11 SMCLK UCTR Bit4 发送/接收。 – 0 接收 – 1 发送 UCTXNACK Bit3 发送NACK。当 NACK发送完毕后,UCTXNACK自动清零。 – 0 正常应答 – 1 产生 NACK信号 UCTXSTP Bit2 在主模式下发送STOP条件。在从模式下忽略该位。在主接收模式下,NACK信号在STOP条件前。在产生 STOP条件后,UCTXSTP自动清零。 – 0 无STOP条件产生 – 1 产生STOP条件 UCTXSTT Bit1 在主模式下发送START条件。在从模式下忽略该位。在主接收模式下,NACK信号在重复START条件之前 。发送START条件和地址信息后,UCTXSTT自动清零。 – 0 不产生START条件 – 1 产生START条件 UCSWRST Bit0 使能软件复位。 – 0 禁止。USCI复位释放。 – 1 使能。USCI保持在复位状态。
VDD Rp Rp
总线速率越高,总线上拉电阻 就越小,100Kbit/s总线速率, 通常使用5.1K欧姆的上拉电阻
I2C BUS
SDA SC L SDA SC L
SCL出