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. linux signal 用法和注意事项

    http://blog.chinaunix.net/uid-9354-id-2425031.html 所以希望能用相同方式处理信号的多次出现,最好用sigaction.信号只出现并处理一次,可以用si ...

  2. HDU5196--DZY Loves Inversions 树状数组 逆序数

    题意查询给定[L, R]区间内 逆序对数 ==k的子区间的个数. 我们只需要求出 子区间小于等于k的个数和小于等于k-1的个数,然后相减就得出答案了. 对于i(1≤i≤n),我们计算ri表示[i,ri ...

  3. Ubuntu 14.04 64位安装Android Studio 和 genymotion (上)

    先说下,Ubuntu 上安装Android Studio真是一路坑阿,一路坑阿,加上天  朝 防火墙挡着,折腾了快一天才弄好阿 找了n多教程,md不是抄的就是转的,而且都没说清楚具体咋装阿,一个图一个 ...

  4. 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)

    在第十周新秀杯之后,从第十一周起的训练计划如下: 1.十一周的周一至周五进行ACM校集训队申请.申请方式从2014年11月17日0:00开始,发送申请者的姓名.学号.专业.电话.QQ以及大学(针对大一 ...

  5. 浏览器开发 IE webkit chrome浏览器定制

    FAQ:制作自己的浏览器有何意义?1.浏览器按照您的需求命名,可自定义LOGO,对您的产品或者公司都有推广作用.2.在帮助一栏的主页以及软件安装的网页链接都可以设为您网站的链接. 3.可将首页设置为您 ...

  6. Appnium+python实现手势密码为什么总是报错

    最近一直在尝试Appnium实现Android手机自动化测试,一直一直卡在一个点上,那就是手势密码,因为所测应用的手势密码使用的不是单个的imageview实现的手势密码解锁窗,所以只能靠坐标点来定位 ...

  7. 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?

    原文转自:http://blog.csdn.net/suyu_yuan/article/details/50947007 利用eclipse新建的Java Web项目没有部署描述符web.xml文件, ...

  8. JS-事件处理

    1.一个简单的单击事件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  9. 查看ip地址信息和配置临时ip

    查看ip地址信息:ifconfig –a 配置临时ip: ifconfig eth0 192.168.11.107

  10. 创建Chromium WebUI接口

    转载自:http://www.chromium.org/developers/webui Chrome的WebUI是那种,在Chrome中输入 "chrome://xxxx"就能打 ...