USART笔记 基于STM32F107VCT6

时间:2022-05-19 19:43:57

USART   通用同步异步收发器

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信,也支持LIN( 局部互连网) ,智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS) 操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
 
简单点讲:
USART模式支持:通用的全双工异步通信模式(UART)、智能卡模式(ISO7816-3,单线半双工异步模式,但与UART是有区别的)、同步模式(类SPI)、硬件流控模式(调制解调器)、IrDA 模式、LIN通信模式。
 
USART UART在功能上的区别如下图[摘自用户手册]
USART笔记    基于STM32F107VCT6
 
USART的中断可以查看用户手册,使能中断,需要使能NVIC中的,同时还要使能USART模块中的中断使能位:【如果按照步骤做后,程序运行不正确,可直接通过偏移地址直接查看各硬件寄存器的相关位,来看程序配置的结果是否正确】
   NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQChannel;
   NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
   NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
   NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStruct);
 
   USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART笔记    基于STM32F107VCT6
部分主要特性:
●  全双工的,异步通信 
●  NRZ标准格式 
●  分数波特率发生器系统 
    ─   发送和接收共用的可编程波特率,最高达4.5Mbits/s 
●  可编程数据字长度(8 位或9位) 
●  可配置的停止位-支持1 或2个停止位 
●  LIN主发送同步断开符的能力以及LIN从检测断开符的能力 
    ─   当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符 
●  发送方为同步传输提供时钟 
●  IRDA SIR  编码器解码器 
    ─   在正常模式下支持3/16 位的持续时间 
●  智能卡模拟功能 
    ─   智能卡接口支持ISO7816-3 标准里定义的异步智能卡协议 
    ─   智能卡用到的0.5和1.5个停止位 
●  单线半双工通信 
●  可配置的使用DMA的多缓冲器通信 
    ─   在SRAM 里利用集中式DMA缓冲接收/发送字节
●  单线半双工通信
●  单独的发送器和接收器使能位
●  校验控制 【硬件完成】
    ─   发送校验位 
    ─   对接收数据进行校验 
●  检测标志 
    ─   接收缓冲器满 
    ─   发送缓冲器空 
    ─   传输结束标志 
●  四个错误检测标志 
    ─   溢出错误 
    ─   噪音错误 
    ─   帧错误 
    ─   校验错误
● 10个带标志的中断源 
    ─  CTS改变 
    ─  LIN断开符检测 
    ─   发送数据寄存器空 
    ─   发送完成 
    ─   接收数据寄存器满 
    ─   检测到总线为空闲 
    ─   溢出错误 
    ─   帧错误 
    ─   噪音错误 
    ─   校验错误 
●  多处理器通信 -- 如果地址不匹配,则进入静默模式
●  两种唤醒接收器的方式:地址位(MSB ,第9位),总线空闲 
 
USART功能概述
接口通过三个引脚与其他设备连接在一起( 见图248 ) 。任何USART双向通信至少需要两个脚:接
收数据输入(RX)和发送数据输出(TX) 。 
RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。 
TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O 端口配置当发送器被激活,并且不发送数据时,TX引脚处于高电平在单线和智能卡模式里,此I/O 口被同时用于数据的发送和接收。
 
USART的智能卡模式
简介
   CPU卡:也称智能卡,卡内的集成电路中带有微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM(FLASH)、用户数据存储器EEPROM)以及芯片操作系统COS。装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。CPU卡芯片通俗地讲就是指芯片内含有一个微处理器,它的功能相当于一台微型计算机。人们经常使用的集成电路卡(IC卡)上的金属片就是CPU卡芯片。
USART笔记    基于STM32F107VCT6
智能卡接口
   智能卡时钟发生器为与之相连的智能卡提供时钟信号。智能卡使用这个时钟产生在智能卡与USART模块之间进行串行通信的波特率时钟。如果智能卡上有CPU,该时钟将同时提供给CPU使用。智能卡接口操作要求,在卡上的CPU运行代码时可以调整时钟速率,这样可以改变通讯的波特率,或者可以提升智能卡的性能。在ISO7816-3标准中详细描述了,协商时钟速率和改变时钟速率的协议。这个时钟被用作智能卡内CPU的时钟,因此更新微控制器输出的时钟频率必须和智能卡时钟同步,应注意保证没有比短周期的40%更短的脉冲。
   ISO 7816-3标准为异步协议定义了时间基准单位,称作ETU(elementary time units),它与输入至智能卡的时钟频率有关。一个ETU的长度是一个位时间。USART接收器和发送器在内部通过Rx_SW信号相连接。必须将USART模块设置为智能卡模式,才能实现从STM32F10xxx向智能卡传输数据。
USART笔记    基于STM32F107VCT6
USART笔记    基于STM32F107VCT6
      RST(智能卡复位)、3/5V(3V或5V)、VCC (管理VCC)以及OFF信号(智能卡检测信号)由软件控制GPIO
      的端口实现(USART硬件只提供CLK、IO两个引脚,其他的都是软件模式实现)。为了使数据信号以
      正确的驱动连接到智能卡IO引脚,应当把USART_TX端口的GPIO位编程为复用开漏输出模式,为把
      时钟发生器连接到Smartcard_CLK的引脚,USART_CK端口的GPIO位应配置为复用推挽输出模式。
 
   智能卡接口是异步通信接口,但是是单线半双工异步通信,通信与微处理器通信的过程没有直接的关系,但是该时钟输送至智能卡,智能卡时钟发生器为与之相连的智能卡提供时钟信号。智能卡使用这个时钟产生在智能卡与
USART模块之间进行串行通信的波特率时钟。如果智能卡上有CPU,该时钟将同时提供给CPU使用。

智能卡是一个单线半双工通信协议,当与智能卡相连接时,USART的TX驱动一根智能卡也驱动的双向线【usart端收发都在一个引脚上,在智能卡模式下在芯片内部通过媒介连接,这也是与智能卡的异步模式与UART通用的异步模式的区别,且智能卡的异步模式处理器还要外送时钟给智能卡使用】。为了做到这点,SW_RX必须和TX连接到相同的I/O 口。在发送开始位和数据字节期间,发送器的输出使能位TX_EN被置起,在发送停止位期间被释放( 弱上拉) ,因此在发现校验错误的情况下接收器可以将数据线拉低。如果TX_EN不被使用,在停止位期间TX被拉到高电平:这样的话,只要TX配置成开漏,接收器也可以驱动这根线。