MSP430F5系列中文手册1.1版第17章 IIC通用串行通讯接口

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微控网模式版本:1.1发布日期:2008.9.最后更新日期:2010.8.原文:TIslau208.pdf(5xxfamilyUser'sGuide)翻译:张明慧郑州硬件研发工程师编辑:DC微控网总版主注:以下文章是翻译TIslau208.pdf文件中的部分内容。由于我们翻译水平有限,有整理过程中难免有所不足或错误;所以以下内容只供参考.一切以原文为准。文章更新详情请密切留意微控技术论坛。微控网系列通用串行通信接口(USCI)在同一个硬件模块下支持多种串行通信模式,本章讨论I2C模式的操作。主题如下:17.1USCI概述17.2USCI介绍:I2C模式17.3USCI操作:I2C模式17.4USCI寄存器:I2C模式17.1USCI概述通用串行通信接口(USCI)模块支持多种串行通信模式。不同的USCI模块支持不同的模式。每一个USCI模块以不同的字母命名。例如,USCI_A不同于USCI_B等等。如果不止一个相同的USCI模块被安装在同一个设备上,那么这些模块将以递增的数字命名。例如,当一个设备上有两个USCI_A模块时,它们可以用USCI_A0和USCI_A1来命名。如有需要,可以通过查阅设备明细表来确定哪些USCI模块可以配置在哪些设备上。USCI_Ax模块支持:UART模式脉冲整形的IrDA通信自动波特率检测的LIN通信SPI模式USCI_Bx模块支持:I2C模式SPI模式17.2USCI介绍:I2C模式在I2C模式中,USCI模块利用两线式I2C串行总线给MSP430和I2C兼容设备提供了一个互联接口。挂在I2C总线上的外扩设备通过两线式I2C接口实现与USCI模块之间串行数据的接收与发送。I2C模块的特性包括:1)遵循Philips半导体公司的I2C规范v2.17位和10位的设备寻址方式广播模式开始/重新开始/停止多主设发送/接收模式从设备接收/发送模式支持高达100kbps的标准模式和高达400kbps的高速模式2)主设模式下UCxCLK频率可编程3)低功耗设计4)从设备检测到开始信号将自动唤醒LPMx模式5)LPM4模式下可进行从设备操作图17-1描述了USCI在I2C模式下的配置。微控网操作:I2C模式I2C模式支持任何从模式或主模式下的I2C兼容设备。图17-2给出了一个I2C总线的例子。每个I2C设备都有唯一的地址可供识别,并可以随意作为发送端或接收端对其操作。当进行数据传输时,I2C总线上的设备可以被视为主设备或者是从设备。主设备开始数据发送并产生时钟信号SCL。任一能被主设备寻址到的设备都可视为一个从设备。I2C数据通过串行数据线(SDA)和串行时钟线(SCL)进行传输。SDA和SCL均为双向的,它们必须通过一个上拉电阻连接到供电电源的正极。微控网模式注意:SDA和SCL电平MSP430的SDA和SCL引脚电平不能上拉的超过MSP430的VCC电平。17.3.1USCI的初始化和复位通过PUC信号或者对UCSWRST置位都可以对USCI进行复位。一旦出现PUC信号,UCSWRST位将自动置位,并使USCI复位。为选择I2C操作模式,UCMODEx必须设置成11。当完成模块初始化后,即可进行数据的发送或接收。清除UCSWRST可以释放USCI,使其进入操作状态。为避免不可预测行为的出现,当UCSWRST置位时应该对USCI进行配置或者重新配置。在I2C状态下设置UCSWRST有以下影响:I2C通信停止SDA和SCL处于高阻态UCBxI2CSTAT的第0~6位清零UCTXIE和UCRXIE被清零UCTXIFG和UCRXIFG被清零其他位和寄存器保持不变注意:初始化或者重新配置USCI模块USCI模块初始化或者重新配置推荐步骤:1、设置UCSWRST(BIS.B#UCSWRST,&UCxCTL1)2、在UCSWRST=1时初始化所有USCI寄存器(包括UCxCTL1)3、配置端口4、软件清除UCSWRST位(BIC.B#UCSWRST,&UCxCTL1)5、通过设置UCxTXIE和UCxRXIE或二者之一来使能中断17.3.2I2C的串行数据每传输一个数据位主设备都会产生一个时钟脉冲。I2C模式下进行的是字节操作。数据传输过程中最重要的起始位如图17-3所示。每个起始位发出之后的第一个字节包含有7位从地址和一个R/W位。当R/W=0时,主设备向从设备发送数据;=1时,主设备从从设备接收数据。应答位ACK是接收方对应第九个SCL时钟发出的握手信号。START起始条件和STOP停止条件都是由主设备产生,其时序如图17-3所示。在SCL为高时将SDA由高跳变至低产生一个START起始条件。在SCL为高时将SDA由低跳变至高产生一个STOP停止条件。总线忙位UCBBUSY在START出现后置位,在STOP出现后清零。微控网上的数据必须保持稳定,其时序如图17-4所示。SDA的高低状态只能在SCL为低时可调,否则将会产生起始和停止条件。17.3.3I2C寻址方式I2C模式下支持7位和10位寻址方式。7位寻址7位寻址的格式如图17-5所示,第一个字节包括7位从地址和一个R/W读写控制位。应答位ACK是接收方在每个字节后发出的握手信号。10位寻址10位寻址的格式见图17-6,第一个字节由11110b加上10位从地址的高两位和R/W位构成。每个字节结束后由接收方发送ACK应答信号。下一个字节是10位从地址剩下的8位数据,在这之后是ACK应答信号和8位数据。再次起始条件主设备可以在不停止当前传输状态的情况下,通过再次发送一个起始位来改变SDA上数据流的传输方向。这被称为再次起始。再次起始位产生后,从设备的地址和标示数据流方向的R/W位需要重新微控网模式发送。再次起始条件格式如图17-7所示。17.3.4I2C模式下的操作方式在I2C模式下USCI模块可以工作在主发送模式,主接收模式,从发送模式,或者从接收模式。接下来的几部分将会对这些模式进行讨论,并用时序来对这些模式进行阐明。图17-8给出了在时序说明中会出现的一些图例。主设备发送的数据用灰色的矩形块表示,而从设备发送的数据则用白色的矩形块表示。USCI模块传输的数据,和主模式或从模式一样用相应的图例表示,只不过其使用的矩形块要高一点。USCI模块的行为用带有指示数据流中行为发生地方的箭头的灰色矩形块表示。必须用软件来处理的行为则用带有指向数据流中行为必定发生的地方的箭头的白色矩形块表示。从设备模式选择I2C模式的同时设置UCMODEx=11,USCYNC=1,并清零UCMST位可以使USCI模块工作在I2C从模式。首先,必须清零UCTR位使USCI工作在接收模式下才能接收到I2C的地址。然后,数据的发送和接收操作就可以根据从地址和一起传输的R/W位来自动进行。USCI从地址是对寄存器UCBxI2COA进行编程得到。当UCA10=0,选用7位寻址方式。当UCA10=1,选用10位寻址方式。若要响应广播可以置位UCGCEN位。当在总线上检测到起始信号时,USCI模块将会接收到传送过来的地址,并将之与存储在UCBxI2C0A中存储的本地址相比较。若两者相匹配,则置位UCSTTIFG位。I2C从设备发送模式当主机发送的从地址和其本地地址相匹配并且R/W为1时从设备进入发送模式。从设备根据主设微控网上发送串行数据。从设备不能产生时钟脉冲,但是当一个字节发送完需要CPU的干预时从设备可以拉低SCL。如果主设备向从设备请求数据则USCI模块将会被自动配置为发送模式并置位UCTR和UCTXIFG。SCL直到第一个数据被写入发送缓冲区UCBxTXBUF之前会一直保持被拉低状态。当地址被响应后,清除UCSTTIFG标志,然后开始数据传输。一旦数据被转移到移位寄存器之后UCTXIFG将再次被置位。当一个数据被主设备接收响应之后,之前被写入UCBxTXBUF中的下一个数据开始传输,若此时缓冲区为空,则SCL会一直保持低电平来延迟总线的应答周期来等待新的数据被写进UCBxTXBUF。图17-9给出了I2C从设备发送模式的图解。I2C从设备接收模式当主机发送的从地址和其本地地址相匹配并且R/W为0时从设备进入接收模式。从设备接收模式下,从设备根据主设备产生的时钟脉冲信号在SDA上接收串行数据。从设备不能产生时钟脉冲,但是微控网。如果从设备需要从主机接收数据则USCI模块将会被自动配置为接收模式并清除UCTR位。在接收完第一个数据字节后接收中断标志位UCRXIFG置位。USCI模块会自动应答接收到的数据并开始接收下一个数据字节。如果已经接收到的数据在数据接收结束时还没有从接收缓冲区UCBxRXBUF中读走,SCL会一直处于拉低状态进行总线延时。一旦UCBxRXBUF接收到的新数据被读走,从设备会发送一个应答信号给主设,然后开始下个数据的接收。在下一个应答周期中置位UCTXNACK会产生一个NACK发送给主设备,即使是还没有准备好接收新的数据。如果在SCL为低时置位UCTXNACK将会释放总线,并马上发送一个NACK信号给主设,同时UCBxRXBUF将加载最后一次接收到的数据。由于先前的数据还没有被读出,这将造成数据丢失。所以为避免数据的丢失应在UCTXNACK置位之前读出UCBxRXBUF中的数据。当主设备产生一个STOP停止条件时UCSTPIFG被置位。如果主设备产生一个重复开始条件时,USCI的I2C状态机将返回地址接收状态。微控网从设备接收模式的图解。I2C从接收模式下的10位寻址方式如图17-11所示当UCA10=1时选用10位寻址模式。在10位寻址模式下,整个地址接收完毕后从设备处于接收模式。此时,USCI模块将会在清零UCTR位的同时置位UCSTTIFG来标示当前状态。若需要将从设备转换到发送模式则需要主机在发送一个重复起始条件后紧跟着发送一个字节地址并置位R/W。若标志位UCSTTIFG之前被软件清除那么此时将会被置位,同时通过UCTR=1使USCI模块转换成发送模式。微控网=11,USCYNC=1,并置位UCMST位可以使USCI模块工作在I

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功