4.5 内部集成电路(I2C)协议 芯片资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2C总线时序
一般I2C具有4种操作模式:主发送模式、主接收模式、从发送模 式和从接收模式。
主发送模式: S 从器件地址 W 主接收模式: S 从器件地址 R A A A A 数据 数据 A A A A 数据… 数据… 数据… 数据… S = 起始信号 P = 停止信号 RS = 重复起始信号 A/A P P
不停止传输而改变传输的属性
• 主机可以在没有停止传输时,通过产生重复的START条 件,改变SDA上数据流的方向,即读或写。这称为 RESTART。START后,按照R/W确定的新数据方向再次 发出从芯片的地址。
I2C总线时序
在数据传送过程中,必须确认数据传送的开始和结束,这通过 起始和结束信号识别。 起始位:SCL=1时,SDA上有下降沿 停止位:SCL=1时,SDA上有上升沿 所以只有当SCL为低时才允许SDA改变数据,不然会被误判为起始 位或停止位而造成错误,如图:
SDA SCL S P
起始信号
结束信号
I2C总线时序
I2C总线数据传送时,每传送一个字节数据后都必须有应答 信号(A)。主控器接收数据时,如果要结束通信时,将在停止 __ 位之前发送非应答信号( )。
A
A=应答(SDA为低)
SDA SCL A 应答信号
A = 非应答(SDA为高)
__
A 非应答信号
VDD Rp Rp
总线速率越高,总线上拉电阻 就越小,100Kbit/s总线速率, 通常使用5.1K欧姆的上拉电阻
I2C BUS
SDA SC L SDA SC L
SCL出
SDA出
器件1
器件2
SCL入
SDA入
I2C BUS 接口
数据形式
I2C因为有两种寻址模式,所以它具体的格式有两种,在 下一节介绍,这里主要按分类部分来描述数据格式。总的数据 传送为:主方每发送8个BIT,必须等待从方的一个反馈ACK。
I2C BUS 接口
特性 • 两条数据线,SDA(串行数据线)和SCL(串行时钟 线); • 7位或10位设备寻址模式; • 每个连接到总线上的器件地址由芯片内部硬件电路和外 部地址同时决定,避免了片选线的线连接方法,并建立 简单的主从关系,主器件提供接收和发送所必须的时序; • 真正的多主总线,带有竞争监测和仲裁电路,多个主机 任意发送而不破坏总线上的数据; • 同步时钟允许器件以不同的数据传输率进行通信;
复位值
0101h 0000h 00h 00h 00h 0000h
寄存器访问
字 字 字节 字节 字节 字
UCBxI2CSA
UCBxICTL UCBxIE UCBxIFG UCBxIV
USCI_Bx I2C从机地址
USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量
通用串行通信接口(USCI)模块
• 通用串行通信接口(USCI)模块支持多种串行通信模式。不 同的USCI 模块支持不同的模式 • USCI_Ax 模块支持:
– – – – UART 模式 IrDA 通信的脉冲整形 LIN 通信的自动波特率检测 SPI 模式
• USCI_Bx 模块支持:
– I2C 模式 – SPI 模式
A
从发送模式: S 从器件地址 W
从接收模式: S 从器件地址 R
数据 数据
A/A P/RS Awk.baidu.comP
主机到从机 主机到从机
A = 应答(SDA为低) A = 非应答(SDA为高)
I2C时钟同步
仲裁过程中,实际由于电气特性,已经对各个不同主设备的时 钟进行同步处理,所以各个设备使用的时钟都是一样的、同步后的 SCL。同步规则就是:SCL线上时钟低电平时间由各器件中时钟最 长的低电平时间决定,而时钟高电平时间则由高电平时间最短的器 件决定。总的原则是:低电平否决高电平。
S 从方地址加读写控制 数据存放地址 数据
起始信号通常由主 机发出,它作为一 次传输的开始。在 起始信号后总线被 认为处于忙的状态
P
停止信号作为一次传 送的结束,在该信号 之后,总线被认为再 次处于空闲状态。
寻址模式
7位寻址模式最多可以寻址128个设备, 10位寻址最多可以寻址1024个设备。 第一个字节是由7位从地址和R/W(读写位)组成,不论总线传 送地址信息还是数据信息,每个字节传送完毕接收设备都会发送一 个反馈响应位(ACK)。后面都是数据信息,直到接收到停止信号。 但目前几乎所有的I2C应用模块都采用这样的格式,即第二字 节是给出从方的存放数据的地址(RAM或FLASH地址)。而后面才 是真正的数据(数量不限),且只需要给出首存放地址,后面的数 据会依次存放在首地址后。当然,如果第二字节作为地址不够,那 么第三字节也可以作为地址部分。
读/写
读/写 读/写 读/写 读
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模块特点
MSP430的I2C模块有如下特点:
– – – – – – – – – – – 与Philips半导体I2C规范v2.1兼容 7位和10位芯片寻址方式 全呼 开始/重新开始/停止 多主机发送/接收模式 从接收/发送模式 支持100kbps的标准模式和高达400kbps的快速模式 主机模式下UCxCLK频率可编程 为低功耗设计 用于LPMx模式自动唤醒的从接收器开始检测 LPM4模式下的从模式操作
I2C 发送中断操作
为了表明UCBxTXBUF已准备好接收另一个字符,发送 器将置位UCTXIFG。如果此时UCTXIE和GIE也已经置位, 则会产生一个中断请求。当有字符写入UCBxTXBUF或接收 到NACK信号时,UCTXIFG会自动复位。当选择I2C模式且 UCSWRST=1时,UCTXIFG置位。PUC后或UCSWRST=1 时,UCTXIE复位。
I2C BUS 接口
I2C总线是个多主机总线,所有主器件都可以发出同步时钟, 但由于SCL接口的”线与”结构,一旦一个主器件时钟跳变为低电 平,将使SCL线支持为低电平直至始终到达高电平,因此SCL线上 时钟低电平时间由各器件中时钟最长的低电平时间决定,而时钟高 电平时间则由高电平时间最短的器件决定。
初始化或重新配置 USCI模块
推荐使用的USCI模块初始化或重新配置步骤: 1、置位 UCSWRST 2、通过UCSWRST=1初始化所有USCI寄存器 3、端口配置 4、软件清除 UCSWRST 5、使能中断(可选)
I2C 模式下的 USCI 中断
• USCI模块只有一个中断向量,该中断向量由发送、接收 以及状态改变复用。USCI_Ax 和USCI_Bx不使用同一个 中断向量。 • 每个中断标志都有自己的中断允许位。GIE位置位时,如 果使能一个中断,将会产生中断请求。在集成有DMA控制 器的芯片上,UCTXIFG和UCRXIFG标志将控制DMA传输 。
设备1发出SCL: 设备2发出SCL:
总线SCL:
I2C总线仲裁
当两个设备同时发出起始位进行数据传输时,相互竞争的设备 使它们的时钟保持同步。没有检测到冲突之前,每个设备都认为只 有自己在使用总线。每个设备都有仲裁功能,它们都去检测SDA线, 检测到自己发送的数据和总线上数据不匹配的设备就失去仲裁能力。 如果两个或更多的设备发送的第一个字节的内容相同,那么仲 裁就发生在随后传输中。失去仲裁的主设备转变成从接收模式。 注意:数据冲突是因为逻辑低电平可以把逻辑高电平否决。在同一 时刻如果两设备一个发高电平一个发低电平,那么 总线上是低 电平。
7位寻址模式
• 7位寻址模式中,第一个字节是7位从地址和R/W读写控制 位。每个字节后,接收机发送ACK位。
如果8位不够,可以继续 往下顺延,不过每个字 节后必须等待一个ACK.
10位寻址模式
• 10位寻址模式中,11110b加上10位从地址的高两位及 R/W位组成第一个字节数据。每个字节结束后,接收器发 送ACK位。下一个为10位从地址的剩余8位,其后是ACK 位和8位数据。
名称
UCBxCTLW0 UCBxBRW UCBxSTAT UCBxRXBUF UCBxTXBUF UCBxI2COA
描述
USCI_Bx控制字0 USCI_Bx波特率控制字 USCI_Bx状态寄存器 USCI_Bx接收缓存 USCI_Bx发送缓存 USCI_Bx I2C本机地址
访问
读/写 读/写 读/写 读/写 读/写 读/写
I2C BUS 接口
常用术语 发送器:本次传输中发送数据到总线的器件; 接收器:本次传输中从总线接收数据的器件; 主机:初始化发送、产生时钟信号和终止发送的器件,它 可以是发送器或接收器。主机通常是微控制器; 从机:被主机寻址的器件,可以是发送器或接收器。 多主器件:多个主器件可以同时企图控制总线而不破坏总 线信息。
I2C 接收中断操作
当接收到一个字节并将其装载到UCBxRXBUF时, UCRXIFG中断标志置位。如果此时UCRXIE和GIE都置位, 将产生一个中断请求。PUC后或UCSWRST=1时, UCRXIFG和UCTXIE复位。对UCxRXBUF进行读操作之后 ,UCRXIFG会自动复位。
I2C模式下可用的USCI寄存器
4.10 通用串行通信接口(USCI)
— I2C模式
主要内容
• I2C总线协议
– I2C简介 – 寻址模式 – 总线时序
• MSP430 I2C模块
– – – – 模块的特性 各类描述符解析 模块的中断源及相关的中断处理函数 应用示例
I2C BUS 接口
• I2C 简介及应用
I2C BUS(Inter IC BUS)是Philips推出的芯片间串 行传输总线,它以2根连线实现了完善的全双工同步数据 微控制器A LCD驱动器 静态RAM EEPROM 传送,可以极方便地构成多机系统和外围器件扩展系统。 I2C总线采用了器件地址的硬件设置方法,通过软件寻址 SDA 完全避免了器件的片选线寻址方法,从而使硬件系统具有 最简单而灵活的扩展方法。 I2C接口的标准传输速率为 SCL 100Kbit/s,快速传输可达400Kbit/s,目前还增加了高速模 式,最高传输速率可达3.4Mbit/s。 门阵列器件 ADC 微控制器B I2C用于连接集成电路和功能模块,在它们之间交互 数据或控制信息。很多设备如:键盘和LED控制器,以及存 储设备EEPROM和FLASH都配备了I2C 总线接口。
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保持在复位状态。