版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.10通用串行通信接口(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接口特性两条数据线,SDA(串行数据线)和SCL(串行时钟线);7位或10位设备寻址模式;每个连接到总线上的器件地址由芯片内部硬件电路和外部地址同时决定,避免了片选线的线连接方法,并建立简单的主从关系,主器件提供接收和发送所必须的时序;真正的多主总线,带有竞争监测和仲裁电路,多个主机任意发送而不破坏总线上的数据;同步时钟允许器件以不同的数据传输率进行通信;I2CBUS接口常用术语发送器:本次传输中发送数据到总线的器件;接收器:本次传输中从总线接收数据的器件;主机:初始化发送、产生时钟信号和终止发送的器件,它可以是发送器或接收器。主机通常是微控制器;从机:被主机寻址的器件,可以是发送器或接收器。多主器件:多个主器件可以同时企图控制总线而不破坏总线信息。I2CBUS接口
I2C总线是个多主机总线,所有主器件都可以发出同步时钟,但由于SCL接口的”线与”结构,一旦一个主器件时钟跳变为低电平,将使SCL线支持为低电平直至始终到达高电平,因此SCL线上时钟低电平时间由各器件中时钟最长的低电平时间决定,而时钟高电平时间则由高电平时间最短的器件决定。总线速率越高,总线上拉电阻就越小,100Kbit/s总线速率,通常使用5.1K欧姆的上拉电阻I2CBUS接口数据形式S从方地址加读写控制数据存放地址数据P I2C因为有两种寻址模式,所以它具体的格式有两种,在下一节介绍,这里主要按分类部分来描述数据格式。总的数据传送为:主方每发送8个BIT,必须等待从方的一个反馈ACK。停止信号作为一次传送的结束,在该信号之后,总线被认为再次处于空闲状态。起始信号通常由主机发出,它作为一次传输的开始。在起始信号后总线被认为处于忙的状态寻址模式 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改变数据,不然会被误判为起始位或停止位而造成错误,如图:起始信号结束信号SDASCLSP
I2C总线数据传送时,每传送一个字节数据后都必须有应答信号(A)。主控器接收数据时,如果要结束通信时,将在停止位之前发送非应答信号()。
A=应答(SDA为低) =非应答(SDA为高)SDASCL应答信号非应答信号AAI2C总线时序I2C总线时序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线SPI01四线SPI(如果UCxSTE=1,使能主/从机)10四线SPI(如果UCxSTE=0,使能主/从机)11I2C模式UCYNCBit0使能同步模式。0异步模式1同步模式USCI_Bx控制寄存器1(UCBxCTL1)UCSSELxBits7-6USCI时钟源选择。这些位选择BRCLK时钟源。00UCLKI01ACLK10SMCLK11SMCLKUCTRBit4发送/接收。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+BIT6; UCB1CTL1|=UCSWRST; UCB1CTL0=UCMST+UCMODE_3+UCSYNC; UCB1CTL1=UCSSEL_2+UCSWRST; UCB1BR0=12; UCB1BR1=0; UCB1I2CSA=0x48; UCB1CTL1&=~UCSWRST; UCB1IE|=UCTXIE;}初始化代码使用SMCLK,保持软件复位设置从机地址清除软件复位,恢复运行使能发送中断主机——循环while(1){//Delayrequiredbetweentransactionfor(i=0;i<10;i++);//TXarraystartaddressPTxData=(unsignedchar*)TxData;TXByteCtr=sizeofTxData;
//I2CTX,startconditionUCB0CTL1|=UCTR+UCTXSTT;//EnterLPM0,enableinterrupts__bis_SR_register(LPM0_bits+GIE);__no_operation();
//Ensurestopconditiongotsentwhile(UCB0CTL1&UCTXSTP);}主机——发送中断#pragmavector=USCI_B0_VECTOR__interruptvoidUSCI_B0_ISR(void){switch(__even_in_range(UCB0IV,12)){…case12://Vector12:TXIFGif(TXByteCtr)//CheckTXbytecounter{UCB0TXBUF=*PTxData++;//LoadTXbufferTXByteCtr--;//DecrementTXbytecounter}else{UCB0CTL1|=UCTXSTP;//I2CstopconditionUCB0IFG&=~UCTXIFG;//ClearUSCI_B0TXintflag__bic_SR_register_on_exit(LPM0_bits);//ExitLPM0}…}}MSP430在该模式下作为主控器,向从机发送数据。数据流向如下图所示:MSP430(主)I2C应用示例——主机模式I2C应用示例——主机模式主模式数据发送的时序格式S从器件地址WA数据A数据…A/AP起始位,用于指示传输的开始。结束位,用于指示传输的结束。第一字节的前七位包含接收器件的从地址,第8位表示为写操作。每发送完一个字节数据,接收数据的器件就发送一个应答位每发送完一个字节数据,接收数据的器件就发送一个应答位每发送完一个字节数据,接收数据的器件就发送一个应答位每发送完一个字节数据,接收数据的器件就发送一个应答位I2C应用示例——主机模式主模式数据发送的时序格式S从器件地址WA数据A数据…A/AP
(1)(2)(3)(3)(4)通过软件置位UCTR和UCTXSTT进入I2C主发送模式,I2C逻辑在总线空闲后立即发送一个起始信号;在起始信号发送结束后,将从机地址和写操作位装入UCB0TXBUF
,UCTXIFG置位,进入中断;当从机地址和W位发送结束并收到应答位(A)后,UCTXIFG位再次置位。此时将要发送的数据装入UCTXIFG,开始发送数据;在数据正确发送后,
UCTXIFG置位。此时如果要结束本次操作,那么置位UCTXSTT位,发送结束信号。从机——配置I2C模块//EnableSWresetUCB0CTL1|=UCSWRST;//I2CSlave,synchronousmodeUCB0CTL0=UCMODE_3+UCSYNC;//OwnAddressis048hUCB0I2COA=0x48;//ClearSWreset,resumeoperationUCB0CTL1&=~UCSWRST;
//EnableSTT,STP&RXinterrupt
UCB0IE|=UCSTPIE+UCSTTIE+UCRXIE;从机循环while(1){//StartofRXbufferPRxData=(unsignedchar*)RxBuffer;//ClearRXbytecountRXByteCtr=0;//EnterLPM0,enableinterrupts,RemaininLPM0untilmasterfinishesTX__bis_SR_register(LPM0_bits+GIE);//Setbreakpoint>>here<<andread
__no_operation();}从机——中断#pragmavector=USCI_B0_VECTOR__interruptvoidUSCI_B0_ISR(void){switch(__even_in_range(UCB0IV,12)){…case6://Vector6:STTIFGUCB0IFG&=~UCSTTIFG;break;case8://Vector8:STPIFGUCB0IFG&=~UCSTPIFG;if(RXByteCtr)//CheckRXbytecounter__bic_SR_register_on_exit(LPM0_bits);break;case10://Vector10:RXIFG*PRxData++=UCB0RXBUF;//GetRX'dbyteintobufferRXByteCtr++;break;…}}主机——模块配置——库//InitializeMasterI2C_masterInit(__MSP430_BASEADDRESS_USCI_B0__,I2C_CLOCKSOURCE_SMCLK,UCS_getSMCLK(__MSP430_BASEADDRESS_UCS__),I2C_SET_DATA_RATE_400KBPS);//SpecifyslaveaddressI2C_setSlaveAddress(__MSP430_BASEADDRESS_USCI_B0__,SLAVE_ADDRESS);//SetTransmitmodeI2C_setMode(__MSP430_BASEADDRESS_USCI_B0__,I2C_TRANSMIT_MODE);//EnableI2CModuletostartoperationsI2C_enable(__MSP430_BASEADDRESS_USCI_B0__);主机主循环——库while(1){//EnabletransmitInterruptI2C_enableInterrupt(__MSP430_BASEADDRESS_USCI_B0__,I2C_TRANSMIT_INTERRUPT);//Delaybetweeneachtransaction__delay_cycles(50);
//LoadTXbytecountertransmitCounter=1;//InitiatestartandsendfirstcharacterI2C_masterMultiByteSendStart(__MSP430_BASEADDRESS_USCI_B0__,transmitData[0]);//EnterLPM0withinterruptsenabled__bis_SR_register(LPM0_bits+GIE);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水库抵押合同范本
- 机器学习在金融领域的应用
- 金融信用风险与金融稳定
- 2024年度美容院员工职业病防治合同
- 中铁物资采购合同
- 二零二四年工程设备维护合同条款
- 《英汉语言对比视角下散文《孩子你慢慢来》的翻译报告》
- 《TLIF单侧与双侧椎弓根钉固定疗效-系统回顾和Meta分析》
- 《胆囊结石合并胆总管结石两种微创治疗方案的回顾性分析》
- 武汉大学非事业编制人员招聘笔试真题2023
- 实用针灸学-经络养生与康复-暨南大学中国大学mooc课后章节答案期末考试题库2023年
- 入团志愿书(2016版本)(可编辑打印标准A4) (1)
- 基于PLC及温度控制系统设计
- 地块颜色标准
- 106kW水冷式管壳冷凝器 设计说明书
- 宝石类采样规范手册
- 航海模型教学设计和计划
- 第三方安全检查报告模板
- 公司内部市场化实施方案
- 浙江省公路山岭隧道机械化装备应用指导手册
- 医师定期考核简易程序练习及答案
评论
0/150
提交评论