《嵌入式应用技术——基于STM32固件库编程》课件 USART.ppt

《嵌入式应用技术——基于STM32固件库编程》课件 USART.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USART USART与UART USART(Universal Synchronous Asynchronous Receiver and Transmitter) UART(Universal Asynchronous Receiver and Transmitter) 两者区别在于,UART在USART基础上裁剪掉了同步通信功能,只有异步通信。从信号通信的角度看,同步和异步最大的区别在于有无时钟信号,有时钟的是同步通信,无时钟的是异步通信。 TX 设备A RX GND TX RX 设备B GND RS232与TTL 协议 高电平 低电平 RS232 逻辑1(MARK)=-3V~-15V 逻辑0(SPACE)=+3~+15 TTL 输入高电平最小2V,输出高电平最小2.4V,典型值3.4V 输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V 使用USB-串口转换芯片 常用的芯片:PL2303与CH340 STM32F4的串口 STM32F407ZGT系列有6个串口,其中2个是UART,4个是USART,USART可设置为UART,在UART模式下无需时钟(CK)。 APB2(最高 84MHz) APB1(最高 42MHz) USART1 USART6 USART2 USART3 UART4 UART5 TX PA9 PC6 PA2 PB10 PA0 PC12 RX PA10 PC7 PA3 PB11 PA1 PD2 SCLK PA8 PG7 PA4 PB12 - - nCTS PA11 PG13 PD3 PB13 - - nRTS PA12 PG8 PD4 PB14 - - UART的主要参数 数据帧 硬件流控制 nRTS:请求以发送(Request To Send),n表示低电平有效。如果使能RTS流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。 nCTS:清除以发送(Clear To Send),n表示低电平有效。如果使能CTS流控制,发送器在发送下一帧数据之前会检测nCTS引脚,如果为低电平,表示可以发送数据,如果为高电平则在送完当前数据帧之后停止发送。 STM32的USART 一般使用UART模式,而且不使用硬件流控制,因此nRTS、nCTS、SCLK、SW_RX引脚不使用。 USART的寄存器 数据寄存器(USART_DR) 只有低9位有效,并且第 9 位数据是否有效要取决于USART控制寄存器1(USART_CR1)的M位设置。一般使用8位数据,9位数据使用于多机通信。 USART_DR实际包含了两个寄存器,一个专门用于发送的可写TDR,一个专门用于接收的可读RDR。 当TDR寄存器有数据时,会将数据送入发送移位寄存器进行移位输出,移位寄存器的输出端连接至TX(GPIO);当接受移位寄存器从RX(GPIO)接受二进制数,收满数据后,会将其送至RDR寄存器。 USART的寄存器 控制寄存器1(USART_CR1) 控制寄存器2(USART_CR2) 控制寄存器3(USART_CR3) USART的寄存器 状态寄存器(USART_SR) 保护时间和预分频器寄存器(USART_GTPR) 波特率寄存器(USART_BRR) 波特率计算方法 fPLCK为USART时钟,可以是APB1或者APB2,OVER8为USART_CR1寄存器的OVER8位对应的值,USARTDIV是一个存放在波特率寄存器(USART_BRR)的无符号浮点数。 其中DIV_Mantissa[11:0]位定义USARTDIV的整数部分,DIV_Fraction[3:0]位定义USARTDIV的小数部分,DIV_Fraction[3]位只有在OVER8位为0时有效,否则必须清零。 比如,USART_BRR值为 0X271,如果OVER8=0,则DIV_Mantissa=39、DIV_Fraction=1,那么整数为39,USARTDIV的小数位1/16=0.0625,最终USARTDIV的值为39.0625。 以USART1为例:时钟为APB2=84MHz,fPLCK=84MHz,OVER8=0,设置波特率为115200,则: 计算得到USARTDIV=45.57 波特率误差表 16 倍过采样时 (OVER8=0) 波特率 fPCLK = 42 MHz fPCLK = 84 MHz 序号 所需值 实际值 USARTDIV 误差% 实际值 USART_BRR 误差% 1 1200bps 1200bps 2187.5 0 1200bps 4375 0 2 2400bps 2400bps 1093.75 0 240

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档