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