MSO430F6638异步(UART)通信.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MSO430F6638异步(UART)通信.ppt

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;   UCA1CTL1 = ~UCSWRST; // 初始化复位USCI_A1状态机   UCA1IE |= UCRXIE; // 使能USCI_A1接收中断   __bis_SR_register(LPM3_bits + GIE); // 进入LPM3,使能全局中断 } #pragma vector=USCI_A1_VECTOR __interrupt void USCI_A1_ISR(v

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档