USART   通用同步异步收发器

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信,也支持LIN( 局部互连网) ,智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS) 操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
 
简单点讲:
USART模式支持:通用的全双工异步通信模式(UART)、智能卡模式(ISO7816-3,单线半双工异步模式,但与UART是有区别的)、同步模式(类SPI)、硬件流控模式(调制解调器)、IrDA 模式、LIN通信模式。
 
USART UART在功能上的区别如下图[摘自用户手册]
 
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);

部分主要特性:
●  全双工的,异步通信 
●  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模块之间进行串行通信的波特率时钟。如果智能卡上有CPU,该时钟将同时提供给CPU使用。智能卡接口操作要求,在卡上的CPU运行代码时可以调整时钟速率,这样可以改变通讯的波特率,或者可以提升智能卡的性能。在ISO7816-3标准中详细描述了,协商时钟速率和改变时钟速率的协议。这个时钟被用作智能卡内CPU的时钟,因此更新微控制器输出的时钟频率必须和智能卡时钟同步,应注意保证没有比短周期的40%更短的脉冲。
   ISO 7816-3标准为异步协议定义了时间基准单位,称作ETU(elementary time units),它与输入至智能卡的时钟频率有关。一个ETU的长度是一个位时间。USART接收器和发送器在内部通过Rx_SW信号相连接。必须将USART模块设置为智能卡模式,才能实现从STM32F10xxx向智能卡传输数据。

      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配置成开漏,接收器也可以驱动这根线。

USART笔记 基于STM32F107VCT6的更多相关文章

  1. Linux学习笔记——基于鸟哥的Linux私房菜

    Linux学习笔记--基于鸟哥的Linux私房菜 ***** ARM与嵌入式linux的入门建议 (1) 学习基本的裸机编程:ARM7或ARM9,理解硬件架构和控制原理 (这一步是绝对的根基) (2) ...

  2. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2

    之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...

  3. Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)

    一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...

  4. Linux常用命令学习笔记——基于CentOS 7

    前言:最近在linux培训时复习了一下linux系统中一些常用的命令和用法,整理成了笔记,虽然些许零散,但希望对大家有所帮助. 目录 0.帮助指令 1.关机.重启.注销命令 2.文件和目录操作命令 3 ...

  5. ArrayList源码阅读笔记(基于JDk1.8)

    关键常量: private static final int DEFAULT_CAPACITY = 10; 当没有其他参数影响数组大小时的默认数组大小 private static final Obj ...

  6. hibernate笔记--基于主键的单(双)向的一对一映射关系

    上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...

  7. hibernate笔记--基于外键的单(双)向的一对一映射关系

    假设我们有两张表,人员信息表Person,和身份信息表IdCard,我们知道每个人只有一个身份证号,所以这里的Person和IdCard表是一一对应的,也就是一对一的映射关系,基于外键的单向一对一映射 ...

  8. WCF学习笔记(基于REST规则方式)

    一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...

  9. iOS开发笔记 基于wsdl2objc调用asp.net WebService

    1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...

随机推荐

  1. 《SDN核心技术剖析和实战指南》2.1交换机核心技术小结

    对于SDN交换机的技术,其实也适用于传统的交换机,只不过控制部分被分离出来而已.传统交换机的控制面主要是转发表的管理以及网络状态之类的各种表,现在这些都由控制器来担心.转发面主要由转发决策.背板和输出 ...

  2. libvirtVirsh

    virsh基于不同协议远程连接libvirt drivers(Hypervisors) 基于OS系统账号ssh登陆

  3. 简单的HDFS思维导图

  4. Spring容器的工具类

    代码实现: package com.ht.util; import java.util.Map; import org.springframework.beans.BeansException; im ...

  5. Qt的内存管理

    在QT的程序中经常会看到只有new而不delete的情况,其实是因为QT有一套回收内存的机制,主要的规则如下: 1.所有继承自QOBJECT类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被 ...

  6. DS18B20

    DS18B20驱动 [ 2012-5-14 12:01:00 | By: 吴师傅 ]   14 推荐 一.概述 DS18B20是一种单总线数字温度传感器.測试温度范围-55℃-125℃,温度数据位可配 ...

  7. Wi-Fi漫游的工作原理

    Wi-Fi网络的一个极其重要的特点就是移动性.例如,一个人可以在使用Wi-Fi电话进行通话或是从服务器上下载大数据量的文件时穿过一幢建筑物.用户设备内部的Wi-Fi无线电可以从一个接入点漫游至另一个接 ...

  8. 经常使用的自己定义UI组件- 一:TimeView

     近期做蛋疼的机顶盒项目,以后遇到哪些经常使用的组件,记录于此. 反编译 youku视频TV偷来的..也希望各位童鞋多学习别人的代码,为己所用. 当然还有其它的办法,比方监听系统发出的广播等等.等 ...

  9. 二、Solr安装(Tomcat)

    安装环境 Windows 7 64bit Apache-tomcat-8.0.9-windows-x64 Solr-4.9.0 JDK 1.8.0_05 64bit 安装步骤 Tomcat和JDk的安 ...

  10. 如何使用easyUI

    一.简介 以下内容来自百度: jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的 目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不 ...