- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章-异步(UART)通信
UART特性 UART是用硬件实现异步串行通信的通信接口电路。 全双工 异步模式可编程的7位、8位、9位数据 独立的波特率发生器 最大波特率是时钟频率的1/16 两个缓冲器用于发送和接收 CTS用于发送操作 可编程的奇、偶和无校验 检测帧错误和纠正错误 支持发送和接收中断 UART 工作原理 需选择一波特率作为发送(/接收)数据的时序,交互双方的波特率必须一致。 UART的数据以帧为单位发送,一帧数据由以下几个部分顺序组成:开始位、数据位(可选位数7位或8位)、校验位(可选)、停止位(可选位数1位或2位)。通信双方的可选部分的设置必须完全一致。 数据成功的发送和接收,都有专门的中断和状态位来指出,例如,接收到一帧数据,如果相应的中断开启,那么进入中断处理程序读出数据,如果未开启,则可以通过循环查看接收状态位来确定数否收到数据。 UART帧结构图 8位数据、无校验、一位停止位的工作示例图 起始位 1位 数据区(由低到高) 一般为7位或8位 校验位 1位 停止位 一般可选为1位或2位 使用UART通信 使用UART通信需要两个引脚: 常用UART接口 RS232:是美国电子工业协会(EIA)制定的串行通讯标准,又称RS-232-C 。RS232是一个全双工的通讯标准,它可以同时进行数据接收和发送的工作。 RS485:是美国电子工业协会(EIA)制定的串行通讯标准,又称RS-232-C 。RS232是一个全双工的通讯标准,它可以同时进行数据接收和发送的工作。 USCI介绍:UART模式 UART模块特征包括: 带奇校验、偶校验或非奇偶校验的7或8位数据 独立的发送和接收移位寄存器 独立的发送和接受缓冲寄存器 最低位优先或最高位优先的数据发送和接收 多处理器系统的内置空闲线路和地址位通信协议 用于自动从LPMx模式唤醒的接收机起始边沿检测 波特率可编程控制,支持小数波特率调制 用于错误检测和抑制的状态标志 用于地址检测的状态标志 发送和接收的独立中断能力 USCI_Ax模块框图—— UART模式 在异步模式下,USCI_Ax模块通过两个外部引脚UCAxRXD和UCAxTXD将芯片连接到外部系统。 当UCSYNC = 0时, 选择UART模式。 UART通信字符格式 UART的字符格式,包括一个起始位,7或8位数据位,一个奇/偶/非奇偶校验位,地址位(地址位模式),以及1或2个停止位。UCMSB位控制传送方向,选择低位或高位优先,UART通讯的典型选择是低位优先。 举例: 采用USCI_A1模块的UART在ISR中将接收的字符原样发送出去,工作于超低功耗LPM3模式下,时钟频率选择为ACLK=32768Hz。 #includemsp430f6638.h void main(void) { WDTCTL=WDTPW+WDTHOLD; while(BAKCTLLOCKIO) BAKCTL=~(LOCKIO); UCSCTL6=~(XT1OFF); UCSCTL6|=XCAP_3; Do { UCSCTL7=~(XT2OFFG+XT1LFOFFG+DCOFFG); SFRIFG1=~OFIFG; }while(SFRIFG1OFIFG); UCA1CTL1 |= UCSWRST; // 复位USCI_A1状态机 UCA1CTL1 |= UCSSEL_1; // CLK = ACLK = 32kHz UCA1BR0 = 0x03; // 32kHz/9600=3.41 UCA1BR1 = 0x00; UCA1MCTL = UCBRS_3+UCBRF_0; // UCBRS = round[(N-INT(N))×8] = 3 P8SEL|=BIT2+BIT3; P8DIR|=BIT2+BIT3; UCA1CTL1 = ~UCSWRST; // 初始化复位USCI_A1状态机 UCA1IE |= UCRXIE; // 使能USCI_A1接收中断 __bis_SR_register(LPM3_bits + GIE); // 进入LPM3,使能全局中断 } #pragma vector=USCI_A0_VECTOR __int
文档评论(0)