您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第四章 MSP430通信接口3(内部集成电路(I2C)协议)
4.4通用串行通信接口(USCI)—I2C模式主要内容•I2C总线协议–I2C简介–寻址模式–总线时序•MSP430I2C模块–模块的特性–各类描述符解析–模块的中断源及相关的中断处理函数–应用示例I2CBUS接口•I2C简介及应用I2CBUS(InterICBUS)是Philips推出的芯片间串行传输总线,它以2根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有最简单而灵活的扩展方法。I2C接口的标准传输速率为100Kbit/s,快速传输可达400Kbit/s,目前还增加了高速模式,最高传输速率可达3.4Mbit/s。I2C用于连接集成电路和功能模块,在它们之间交互数据或控制信息。很多设备如:键盘和LED控制器,以及存储设备EEPROM和FLASH都配备了I2C总线接口。I2CBUS接口微控制器ALCD驱动器ADC静态RAMEEPROM门阵列器件微控制器BSDASCLI2CBUS接口特性•两条数据线,SDA(串行数据线)和SCL(串行时钟线);•7位或10位设备寻址模式;•每个连接到总线上的器件地址由芯片内部硬件电路和外部地址同时决定,避免了片选线的线连接方法,并建立简单的主从关系,主器件提供接收和发送所必须的时序;•真正的多主总线,带有竞争监测和仲裁电路,多个主机任意发送而不破坏总线上的数据;•同步时钟允许器件以不同的数据传输率进行通信;I2CBUS接口常用术语发送器:本次传输中发送数据到总线的器件;接收器:本次传输中从总线接收数据的器件;主机:初始化发送、产生时钟信号和终止发送的器件,它可以是发送器或接收器。主机通常是微控制器;从机:被主机寻址的器件,可以是发送器或接收器。多主器件:多个主器件可以同时企图控制总线而不破坏总线信息。I2CBUS接口I2C总线是个多主机总线,所有主器件都可以发出同步时钟,但由于SCL接口的”线与”结构,一旦一个主器件时钟跳变为低电平,将使SCL线支持为低电平直至始终到达高电平,因此SCL线上时钟低电平时间由各器件中时钟最长的低电平时间决定,而时钟高电平时间则由高电平时间最短的器件决定。RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2CBUS总线速率越高,总线上拉电阻就越小,100Kbit/s总线速率,通常使用5.1K欧姆的上拉电阻I2CBUS接口数据形式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改变数据,不然会被误判为起始位或停止位而造成错误,如图:起始信号结束信号SDASCLSPI2C总线数据传送时,每传送一个字节数据后都必须有应答信号(A)。主控器接收数据时,如果要结束通信时,将在停止位之前发送非应答信号()。A=应答(SDA为低)=非应答(SDA为高)__ASDASCL应答信号非应答信号AAI2C总线时序__AI2C总线时序S从器件地址WA数据A数据…A/AP主发送模式:S从器件地址RA数据A数据…AP主接收模式:S从器件地址WA数据A数据…A/AP/RS从接收模式:S从器件地址RA数据A数据…AP从发送模式:一般I2C具有4种操作模式:主发送模式、主接收模式、从发送模式和从接收模式。主机到从机从机到主机A=应答(SDA为低)A=非应答(SDA为高)S=起始信号P=停止信号RS=重复起始信号I2C时钟同步仲裁过程中,实际由于电气特性,已经对各个不同主设备的时钟进行同步处理,所以各个设备使用的时钟都是一样的、同步后的SCL。同步规则就是:SCL线上时钟低电平时间由各器件中时钟最长的低电平时间决定,而时钟高电平时间则由高电平时间最短的器件决定。总的原则是:低电平否决高电平。设备1发出SCL:设备2发出SCL:总线SCL:I2C总线仲裁当两个设备同时发出起始位进行数据传输时,相互竞争的设备使它们的时钟保持同步。没有检测到冲突之前,每个设备都认为只有自己在使用总线。每个设备都有仲裁功能,它们都去检测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、置位UCSWRST2、通过UCSWRST=1初始化所有USCI寄存器3、端口配置4、软件清除UCSWRST5、使能中断(可选)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寄存器名称描述访问复位值寄存器访问UCBxCTLW0USCI_Bx控制字0读/写0101h字UCBxBRWUSCI_Bx波特率控制字读/写0000h字UCBxSTATUSCI_Bx状态寄存器读/写00h字节UCBxRXBUFUSCI_Bx接收缓存读/写00h字节UCBxTXBUFUSCI_Bx发送缓存读/写00h字节UCBxI2COAUSCI_BxI2C本机地址读/写0000h字UCBxI2CSAUSCI_BxI2C从机地址读/写0000h字UCBxICTLUSCI_Bx中断控制读/写0200h字UCBxIEUSCI_Bx中断使能读/写00h字节UCBxIFGUSCI_Bx中断标志读/写02h字节UCBxIVUSCI_Bx中断向量读0000h字USCI_Bx控制寄存器0(UCBxCTL0)•UCA10Bit7本机地址模式选择–07位本机地址模式–10位本机地址模式•UCSLA10Bit6从机地址模式选择–7位从机地址模式–10位从机地址模式•UCMMBit5多主机环境的选择–0单主机环境。该系统内没有别的主机。禁止地址比较单元。–1多主机环境。•UCMSTBit3主机模式选择。当主机在多主机环境下丢失仲裁时(UCMM=1),UCMST自动复位,模块作为从机操作。–0从机模式–1主机模式•UCMODExBits2-1USCI模式。当UCSYNC=1时,UCMODEx位选择同步模式。–003线SPI–01四线SPI(如果UCxSTE=1,使能主/从机)–10四线SPI(如果UCxSTE=0,使能主/从机)–11I2C模式•UCYNCBit0使能同步模式。–0异步模式–1同步模式USCI_Bx控制寄存器1(UCBxCTL1)•UCSSELxBits7-6USCI时钟源选择。这些位选择BRCLK时钟源。–00UCLKI–01ACLK–10SMCLK–11SMCLK•UCTRBit4发送/接收。–0接收–1发送•UCTXNACKBit3发送NACK。当NACK发送完毕后,UCTXNACK自动清零。–0正常应答–1产生NACK信号•UCTXSTPBit2在主模式下发送STOP条件。在从模式下忽略该位。在主接收模式下,NACK信号在STOP条件前。在产生STOP条件后,UCTXSTP自动清零。–0无STOP条件产生–1产生STOP条件•UCTXSTTBit1在主模式下发送START条件。在从模式下忽略该位。在主接收模式下,NACK信号在重复START条件之前。发送START条件和地址信息后,UCTXSTT自动清零。–0不产生START条件–1产生START条件•UCSWRSTBit0使能软件复位。–0禁止。USCI复位释放。–1使能。USCI保持在复位状态。程序流程图TXISR判断是否发送完数组中所有数据初始化I2C模块初始化发送数组TXData[]进入无限循环,设置要发送的数据,发送起始条件指针加1,继续发送发送STOP条件主机ISR初始化I2C模块判断发送缓冲是否为空,为空说明上次发送完毕本次接收到的数据赋值给指针指向的变量从机判断STOP条件是否发送,若否,则等待NY主从机接口电路图主机模式——配置I2C模块设置P8.5(SDA)P8.6(SCL)为外设功能,输出使能软件复位I2C主机,同步模式设置波特率主模式初始化流程voidmain(void){WDTCTL=WDTPW+WDTHOLD;P8SEL|=BIT5+BIT6;P8DIR|=BIT5+BIT
本文标题:第四章 MSP430通信接口3(内部集成电路(I2C)协议)
链接地址:https://www.777doc.com/doc-3861765 .html