zoukankan      html  css  js  c++  java
  • STM32F103X datasheet学习笔记---USART

    1.前言

    通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。

    USART利用分数波特率发生器提供宽范围的波特率选择。

    它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。

    它还允许多处理器通信。

    使用多缓冲器配置的DMA方式,可以实现高速数据通信。

    2.USART主要特性

    全双工异步通信

    NRZ标准格式??

    分数波特率产生器系统

    可编程数据长度(8或9位)

    可配置停止位数(1或2位)

    LIN主发送同步断开符的能力以及LIN从检测断开符的能力 ???

    发送方为同步输出提供时钟

    IRDA SIR编码器解码器

    智能卡模拟功能??

    单线半双工通信

    使用DMA可配置的多buffer通信

    发送器和接收器的单独使能

    传输检测标志:接收buf满、发送buf空、传输完成标志

    极性控制??

    四种错误检测标志:溢出错误、噪音错误、帧错误、极性错误

    十种中断源:cts改变?、LIN断开符检测、发送数据寄存器空、发送完成、接收数据寄存器满、检测到总线为空闲、溢出错误、帧错误、噪音错误、校验错误

    多处理器通信

    从静默模式中唤醒??

    两种接收唤醒的方式:Address bit(MSB)、Idle线

    3. USART功能描述

    图 USART框图

    • -USART双向通信至少需要两根线,RX和TX

    RX:接收串行数据输入,通过过采样技术可以修复数据

    TX:用于发送数据。当传输被禁用时,保持为IO,当传输使能,无数据传输时,保持高电平。在单线和智能卡模式作为收发数据使用

    • -Normal模式下的数据帧帧需要如下构成:

    收发之前是idel状态

    1个start位

    一个data word(8或9bit) LSB优先

    0.5,1,1.5个停止位指示数据帧传输完成

    一个分数波特率发生器

    状态寄存器

    数据寄存器

    一个波特率寄存器

    一个GuardTime寄存器用于smartcard mode?

    • -同步模式下的pin接口

    3.1 字符帧描述

    3.2 发送

    3.3 接收

    3.4 波特率配置

    3.5 多处理器通信

    3.6 极性控制

    3.7 LIN mode

    3.8 USART同步模式

    3.9 单线半双工通信

    3.10 smartcard

    3.11 IrDA SIR编码模块

    3.12 使用DMA持续通信

    • -利用DMA发送

    图 发送时TC/TXE行为

    可以通过设置USART_CR3寄存器的DMAT来使能DMA传输.当TXE位被置为1’
    时,DMA就从指定的SRAM区传送数据到USART_DR寄存器。为USART的发送分配一个DMA
    通道的步骤如下:

    1. 在DMA控制寄存器上将USART_DR寄存器地址配置成DMA传输的目的地址。在每个TXE
    事件后,数据将被传送到这个地址。
    2.在DMA控制寄存器上将存储器地址配置成DMA传输的源地址。在每个TXE事件后,将从此存储器区读出数据并传送到USART_DR寄存器。
    3.在DMA控制寄存器中配置要传输的总的字节数。
    4.在DMA寄存器上配置通道优先级。
    5.根据应用程序的要求,配置在传输完成一半还是全部完成时产生DMA中断。

    6.在DMA寄存器上激活该通道。
    当传输完成DMA控制器指定的数据量时,DMA控制器在该DMA通道的中断向量上产生一中断。
    在发送模式下,当DMA传输完所有要发送的数据时, DMA控制器设置DMA_ISR寄存器的TCIF标志;监视USART_SR寄存器的TC标志可以确认USART通信是否结束,这样可以在关闭USART或进入停机模式之前避免破坏最后一次传输的数据;软件需要先等待TXE=1,再等待TC=1。

    • -利用DMA接收

    可以通过设置USART_CR3寄存器的DMAR位激活使用DMA进行接收,每次接收到一个字节,DMA控制器就就把数据从USART_DR寄存器传送到指定的SRAM区。为USART的接收分配一个DMA通道的步骤如下:
    1.通过DMA控制寄存器把USART_DR寄存器地址配置成传输的源地址。在每个RXNE事件
    后,将从此地址读出数据并传输到存储器。
    2.通过DMA控制寄存器把存储器地址配置成传输的目的地址。在每个RXNE事件后,数据将从USART_DR传输到此存储器区。
    3.在DMA控制寄存器中配置要传输的总的字节数。
    4.在DMA寄存器上配置通道优先级。。
    5.根据应用程序的要求配置在传输完成一半还是全部完成时产生DMA中断。
    6.在DMA控制寄存器上激活该通道。
    当接收完成DMA控制器指定的传输量时, DMA控制器在该DMA通道的中断矢量上产生一中断

    • -多缓冲器通信中的错误标志和中断产生

    3.12 硬件流控制

    3.13 USART中断请求

     

    图 USART中段请求

    USART中断事件被连接到同一个中断向量

    图 USART中断映射图

    3.14 USART的模式配置

     

    图 USART模式配置

    3.寄存器描述

    USART_SR:设置了USART的一些传输状态及错误标志等

    USART_DR:用于存放发送或接受的数据

    USART_BRR:用于设置波特率

    USART_CR1/USART_CR2/USART_CR3:用于设置帧格式,中断使能、DMA使能、错误检测使能等

    USART_GTPR:

  • 相关阅读:
    自己回答自己的问题
    作业5 四则运算 测试与封装 5.1 5.2
    2015430 加法阶段一的封装测试
    20150423 提问2
    Java 泛型中的<? super T>和<? extends T>
    ssh 查看端口占用
    Java 回调
    SpringMVC4+MyBaits3配置
    Selenium 远程执行和监听类
    Intellij idea主题
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/7296286.html
Copyright © 2011-2022 走看看