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. 百度贴吧的网络爬虫(v0.4)源码及解析

    更新:感谢评论中朋友的提醒,百度贴吧现在已经改成utf-8编码了吧,需要把代码中的decode('gbk')改成decode('utf-8').   百度贴吧的爬虫制作和糗百的爬虫制作原理基本相同,都 ...

  2. VMware migration to openstack kvm

  3. 基于 canvas 将图片转化成字符画

    字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢? HTML5 让这个可能变成了现实,通过 canvas,可以很轻松实现这个功能. 其实原理很简单:扫描图片相应位置的像素点,再计算出其灰 ...

  4. html(四)

    今天html的内容就讲完了,感觉时间过得好快啊,知识点比较多,需要慢慢消化啊... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  5. css入门之css选择器

    CSS选择器 css的选择器最常用的是class选择器,定义方式如下. <!DOCTYPE html> <html lang="en"> <head& ...

  6. ReactJS 的背景及原理

    原文链接:http://www.infoq.com/cn/articles/subversion-front-end-ui-development-framework-react 在Web开发中,我们 ...

  7. Gson 基础教程 —— 自定义类型适配器(TypeAdapter)

    1,实现一个类型适配器(TypeAdapter) 自定义类型适配器需要实现两个接口: JsonSerializer<T> JsonDeserializer<T> 和两个方法: ...

  8. igmpproxy源码学习——igmpProxyInit()

    igmpproxy源码学习--igmpProxyInit()函数具体解释.igmpproxy初始化 在执行igmpproxy的主程序igmpproxyRun()之前须要对igmpproxy进行一些配置 ...

  9. Loadrunner结果分析Graphs

    Transactions(用户事务分析)----用户事务分析是站在用户角度进行的基础性能分析. Transation Sunmmary(事务综述)----对事务进行综合分析是性能分析的第一步,通过分析 ...

  10. Linux编程环境介绍(2) -- shell(Bash) 介绍

    1. 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe. 2. bash (Bourne Aga ...