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. js执行引擎(js解释器)

    看字面理解,js执行引擎讲的就是将js代码转化为机器码并执行的过程. 一款 JavaScript 引擎是由 Brendan Eich 在网景的 Navigator 中开发的,它的名字叫做 Spider ...

  2. Edit Distance 解答

    Question Given two words word1 and word2, find the minimum number of steps required to convert word1 ...

  3. convert app to 64-bit for ios7

    https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Introd ...

  4. D - Network - poj3694(LCA求桥)

    题意:有一个网络有一些边相互连接,现在有Q次操作,求每次操作后的桥的个数 分析:开始竟然不知道还有LCA这么个东西....... *********************************** ...

  5. 【转】在ASP.NET MVC中,使用Bundle来打包压缩js和css

    在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原 ...

  6. Wamp集成环境安装

    一.Wamp下载 点我下载WampServer2.1a-x32 二.Wamp安装步骤 三.修改语言为汉语 四.查看测试页面

  7. MATLAB获取“非免驱的相机或者摄像头”的图像数据

    Image Acquisition Toolbox™ Adaptor Kit 图像採集工具箱 当要使用MATLAB获取"非免驱的相机或者摄像头"的图像数据时,须要开发一个插件,MA ...

  8. WIN32_FIND_DATA 循环获取文件大小BUG

    今天在调试程序时发现一个 WIN32_FIND_DATA 的BUG,在循环读取一个目录下的图片文件时,发现结构体中 nFileSizeLow 和 nFileSizeHigh 值 == 0的情况.即能获 ...

  9. [React Testing] Children with Shallow Rendering

    When testing React components, we often want to make sure the rendered output of the component match ...

  10. SQL Profile 总结(一)

    一.前提概述 在介绍SQL Profile之前,不得不说的一个工具就是SQL Tuning Advisor:这个工具是从Oracle 10g開始引入,它的任务就是分析一个指定的SQL语句,并建议怎样使 ...