Louis

kaly.liu@163.com
串口协议基础

1 串口概述

串口由收发器组成。发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据。

发送器和接收器都利用了一个移位寄存器,这个移位寄存器能够将数据进行“并转串”和“串转并”。尽管一个UART接口通常都包括了发送器和接收器。而实际上一个全双工串口UART控制器须要独立的发送和接收通道。这是由于每一个控制通道仅仅控制了一个pin(一个通道要么配置成发送器,要么配置成接收器,不能同一时候配置成接收器和发送器)。没有严格规定哪个通道能够是发送器、哪个通道能够使接收器。

UART协议(串口协议)同意选择一个校验位来检測简单的通信错误(transmission errors)。

校验位能够通过两种不同的方式进行产生和检測(generated and checked):奇校验和偶校验(odd and even parity)。UART协议功能支持全部的校验方式。

串口协议对每一个字节数据的bit数并非固定不变的。虽然8-bit的字节是经经常使用到的,可是一些应用也用到7-bit、9-bit、或者很多其它bit的字节数据。串口功能能够使用每一个字节长达1~23bit长度的字节数据。另外。串口协议还须要1个開始位(1 start bit)(发送一个从“高到低”动作,低电平须要保持1 bit的时间)和1个停止位(1 stop bit)(发送一个从“底到高”动作。高电平须要保持1 bit的时间)来封装数据。

串口功能是双缓冲的。

不论是发送器还是接收器,它们都包括有一个移位寄存器和一个数据寄存器

Host CPU能够在数据正在发送时。将新数据写入到发送器的数据寄存器;也能够在数据被接收时,从接收器的数据寄存器读取数据。

串口发送器通过对通道的“中断标志位”和数据发送器“需求标志位”置位来指示数据已经从“发送数据寄存器”传送到“发送移位寄存器”了。发送器的CIS标志位和DTRS被置位时,标志着发送数据寄存器已经准备就绪能够接收新数据了。假如中断标志位将被用于轮询环境(polling environment)。CIS标志位就必须在新数据被写入发送器前被清零。

相同的,假设一个DMA通道被用于UART通道服务,那么DTRS标志位就应被DMA通道描写叙述符清零(should be cleared by theDMA channel descriptor)。当数据别写入到数据发送寄存器时,这24-bit的数据发送寄存器MSB必须写为0。这个是iTPU串口的一个握手信号,这个握手信号表明了新的发送数据进行串行移位输出已经写好。

相同的,串口接收器通过对CIS和DTRS标志位进行置位,来表明新数据已经到了。当数据从接收移位寄存器传送到接收数据寄存器后,CIS和DTRS标志位就被置位了。假如中断标志位将被用于轮询环境(polling environment),接收器的CIS标志位就必须在新数据被读取后被清零。假设一个DMA通道被用于UART通道服务,那么DTRS标志位就应被DMA通道描写叙述符清零(should be cleared by theDMA channel descriptor)。为了避免数据丢失或者反复读取相同的数据,所以必须在接收兴许的数据前完毕 检測新接收到的数据、读取数据、和清除接收CIS标志位和DRTS标志位。相同的,在随后数据接收前,与每一个已接收到的数据位相关的“错误条件”(error condition)必须被检測或者保存好,否则errorcondition将会丢失。

串口功能能够进行连续的传输(back-to-back transfer)。

假设数据及时,发送器不会产生空暇信号(idle line signal),而是在一个stop位后,紧跟着下一帧数据的star位。

空暇信号仅仅有在传送数据已经被串行移位输出,发送数据寄存器为空时才会产生。

发送器的空暇信号时间都是1 bit时间的整数倍。接收器能够处理不论什么长度的空暇信号。

每一个数据都是由1个start位開始的。開始位始终是逻辑0。尾随在開始位后面的是特定长度的数据,数据是LSB模式发送的。假设校验位被使能。那么1个校验位也将产生,并被发送。数据的最后一位由1个stop位标志。结束位始终是逻辑1。一个空暇line就是由连续多个的stop位组成的,这也就意味着空暇信号事实上就是信号线一直保持在逻辑1。

样例:一个ASCII字符“A”(8-bit。hex码为0x41)一直都是以例如以下的方式进行传送的。注意:数据是LSB first发送方式。

如图2很多其它具体内容:(注意:时序图显示0x41数据串行输出时序,LSB first。

文中用到的“bittime”位时间。指的是传送或接受1bit数据所须要的时间。

位时间是由波特率决定的。例如以下公式:

Bittime = 1/Baud Rate

接收器通过感知start位的下降沿。来检測数据。由于UART功能总是把服务请求初始化后的第一个下降沿作为有效的起始条件,此时若line是空暇的,就必须使能接收器。接收位仅仅採样一次。大约半个bit time。在每次start bit时。接收器都将出现同步。

2 基本时序

如图2展示了TX和RX数据。以及串行数据的时序。不论什么写入到tx数据寄存器的数据,必须将msb位置为0(事实上就是開始位,startbit)。

这表明UART的新数据已经准备好,能够进行移位输出了。

全部接收的数据通过API接收函数fs_etpu_uart_read _receive _data()进行右对齐。传送的数据总是由1開始位(1 bittime low)和1停止位(1 bit time high)封装。数据总是LSB FIRST移位输出。当全部数据被传送出去后,依据校验位是否被使能,校验位也将被选择性的输出。

数据宽度被限制在23bits以内。这就意味着最大的数据大小、加上校验位,以及開始位、结束位,一帧数据最长将达到26bits。接收到的数据MSB总是0。

转载于:https://www.cnblogs.com/blfshiye/p/5157106.html

UART串口协议基础1相关推荐

  1. FPGA实现uart串口协议

    reference:正点原子视频教程 具体代码请参考B站正点原子官方 UART串口通信原理 是一种采用异步串行通信方式的通用异步手法传输器. 因为是异步通信所以,使用的时候要进行同步到系统时钟下,不然 ...

  2. UART串口协议详解

    通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行.异步.全双工的通信协议,在嵌入式领域应用的非常广泛. UART作 ...

  3. RS485,uart串口加瑞芬68协议

    文章目录 一.uart串口协议(数据传输协议) 1.简介 (1).RS485:电器特性 (2).传输格式 2.代码 (1).代码vivado备份文件夹里 (2).模块描述(输入输出变量整理) 二.瑞芬 ...

  4. stm32串口接收不定长数据_基于STM32之UART串口通信协议--接收

    一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...

  5. FPGA学习笔记_UART串口协议_串口接收端设计

    FPGA学习笔记 1. UART串口协议以及串口接收端设计 1 原理图 2 Verilog 代码 3 Modelsim仿真 4. FPGA板级验证 1.1 串口协议接收端设计 目标:FPGA接收其他设 ...

  6. 【FPGA】八、UART串口通信

    文章目录 前言 一.UART简介 1.基本概念 2.UART协议 3.波特率简介 二.UART串口回环实验 1.设计思路 2.程序代码 ① 串口接收模块 ② 串口发送模块 ③ 串口顶层模块 ④ 串口仿 ...

  7. UART串口通信浅谈之(一)--基础概述

    通信按照传统的理解就是信息的传输与交换.UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用 ...

  8. zigbee基础应用(五)uart串口通信

    zigbee基础应用(五)uart串口通信 1.硬件篇 P0.2为RX P0.3为TX 2.芯片篇 用到的芯片的概况 3.计算篇 波特率的计算公式,通过对UxBAUD.BAUD_M和UxGCR.BAU ...

  9. UART串口通讯协议解析

    UART串口通讯协议解析 概述 接口 通信协议 波特率 示例 最后 概述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART ...

最新文章

  1. 两万字详细爬虫知识储备,数据采集与清洗基础习题(一)头歌参考答案
  2. 最近见了几位东半球的顶级技术大拿
  3. asp.net身份认证
  4. 【CentOS 7笔记43】,防火墙和iptables filter表#
  5. 11.PHP核心技术与最佳实践 --- 高性能网站架构方案
  6. 出大问题!苹果硅或许意味着Wintel时代的终结……
  7. kindeditor 加载 html,为kindeditor编辑器添加“引用”(blockquote)标签
  8. 1148 数字字符出现频率
  9. Linux XAMP is currently only availably as 32 bit application.
  10. 二叉树遍历-层序-递归
  11. CSP-J1 CSP-S2第1轮 初赛资料集(2022.09.09)
  12. vue 给某个div设置回到顶部
  13. 关于java中的finalize()方法
  14. 读取linux内核内存,devmem读写物理内存和devkmem读取内核虚拟内存
  15. 诚之和:EDG夺冠,年轻人为何狂欢?
  16. Linux只读文件系统
  17. VSFTPD + NGINX
  18. TDA4862G 经过优化,完全兼容世界标准,能够实现极其紧凑并且极具成本效益的 PFC 解决方案
  19. easyui有没有html编辑器,Easyui 文本编辑器(TextEditor)_Easyui扩展
  20. EMQ 携手 NNG 联合发布新一代超轻量边缘 MQTT 消息引擎 NanoMQ

热门文章

  1. php中false的作用,PHP中false 。==是什么意思
  2. 《应用空间计量经济学》图书配套数据和代码:人民大学出版社
  3. 怎么修改植物大战僵尸{不是修改器修改}
  4. Shell脚本中获取本机ip地址,Linux获取本地ip地址
  5. 七年级上册英语|好看又容易画的思维导图
  6. python分形算法_python 分形 | 学步园
  7. html跳转京东app,h5跳转到京东购买页的脚本
  8. python cad 提取高程点_CAD地形图如何提取出高程点文件?
  9. 计算机和电气工程研究生就业,56所“电气工程专业”实力很强的大学,毕业后就业率和收入都很高...
  10. 太极螺旋曲线与正、反物质