协议类接口 - UART
一、何为协议类接口?
双方约定信号的协议和满足时序要求。
二、UART如何传数据
通用异步收发器简称 UART,即“Universal Asynchronous Receiver Transmitter ”,它用来传输串行数据。
发送数据时, CPU 将并行数据写入 UART, UART 按照一定的格式在一根电线上串行发出;
接收数据时, UART 检测另 一根电线上的信号, 将串行收集放在缓冲区中, CPU 即可读取 UART 获得这些数据。

UART 之间以全双工方式传输数据, 最精简的连线方法只有要3 根电线就够了(串口中还有一些功能高级的线): TxD 用于发送数据, RxD 用于接收数据, Gnd 一般为地线,用于给双方提供参考电平。实际上SoC还要经过电平转换(有的开发板上还有串口座),才能和串口线相连。这是由于UART 使用标准的 TTL/CMOS 逻辑电平 (0~5v、 0~3.3V、 0~2.SV或0~ 1.8V)来表 示数据, 高电平表示l, 低电平表示0。 为了增强数据的抗干扰能力、提高传输长度, 通常将 TTL/CMOS 逻辑电平转换为 RS-232 逻辑电平, 3~ 12V表示 0, -3~-12V 表示1 。

TxD、 RxD 数据线以 “位” 为最小单位传输数据。 帧(frame )由具有完整意义的、 不可分割的若干位组成, 它包含开始位、 数据位、 校验位(需要的话〉和停止位。 发送数据之前, UART 之间要约定好数据的传输速率(即每位所占据的时间, 其倒数称为波特率)、数据的传 输格式(即有多少个数据位、 是否使用校验位、 是奇校验还是偶校验、 有多少个停止位)。
数据传输流程如下。
(1)平时数据线处于 “ 空闭 ” 状态( 1状态)。
(2)当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持时间T,这样接收方检测到开始位后就会知道对方再过时间T后即将发送数据,T时间后就开始一位 一位地检测数据线的状态得到所传输的数据 。注意这个时间T是双方约定好的。
(3) UART一帧中可以有5、 6、 7或8位的数据, 发送方一位一位地改变数据线的 状态 将它们发送出去, 首先发送最低位。
(4)如果使用校验功能, UART在发送完数据位后, 还要发送1个校验位。 有两种校验方法: 奇校验 、 偶校验一一数据位连同校验位中,“1”的数目等于奇数或偶数。
(5)最后, 发送停止位, 数据线恢复到 “ 空闲 ” 状态(1状态〉。 停止位的长度有3种: 1位、 1.5位、 2位。
下图演示了UART使用7个数据位、 偶校验、2个停止位的格式传输字符 ‘ A'(二进制值为0b01000001)时, TTL/CMOS逻辑电平 、 RS-232逻辑电平对应的波形。


三、平常工作中如何设置这些协议?
开发板侧:设置SoC中的UART(也叫串口控制器)。这样想发送数据时,只要把想传输的数据写到里面的具体寄存器就可以了,它就会自动产生起始位,自动地根据数据位让数据线产生状态变化,传输完后再插一个停止位等将数据一位一位地传过去。这里在设置波特率地时候还需要根据给定地波特率,所选择始终源地频率,来根据芯片手册给的的公式进行计算。
PC机侧:在工具xshell、secureCRT中就可以设置,如停止位、波特率等。
上述双方设置一定要一致。
协议类接口 - UART的更多相关文章
- 协议类接口 - SPI
一.SPI概述 SPI(Serial Peripheral Interface,串行外设接口)总线系统是一种同步串行外设接口,它可以使CPU与各种外围设备以串行方式进行通信以交换信息.一般主控SoC ...
- 协议类接口 - I2C
一.12c总线概述 I2C( Inter-Integrated Circuit,又称IIC)总线是一种串行总线,用 于连接微控制器及其外围设备,硬件图非常简单:一条串行数据线(SDA),一条串行时钟线 ...
- 协议类接口 - NAND
一.引脚的含义 先看下nand flash是怎么接的,如下所示便为某一款nand存储芯片的引脚图.发现其连地址信号都没有.那么是如何访问地址数据的呢? 查阅该nand flash的数据手册可得其各个引 ...
- 协议类接口 - LCD
一.引脚含义 下图为某LCD相关引脚: 从引脚可以大概看出其SoC的连接情况: 1)VCLK为时钟,每一次像素就移动一次 2)HSYNC/VLINE 3)VSYNC/VFRAME 4)VD0 - VD ...
- 业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份
业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份 WinForm酒店管理软件--框架这篇随笔可以说是我写的最被大家争议的随笔,一度是支持和反对是一样的多.大家对我做的这个行业 ...
- Python 基于urllib.request封装http协议类
基于urllib.request封装http协议类 by:授客QQ:1033553122 测试环境: Python版本:Python 3.3 代码实践 #!/usr/bin/env python ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
- 组件接口(API)设计指南[2]-类接口(class interface)
*返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 类接口(class interface) 你能够參考MGTi ...
- Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)
本篇介绍Entity Framework 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试 ...
随机推荐
- c#-IO和序列化操作
IO 用到的命名空间:using System.IO; 文件和目录的管理! File类 FileInfo类 Directory类 DirectoryInfo类 操作文件的类! FileStream{ ...
- hibernate注解JPA
1.JPA与hibernate 什么是JPA ? java persistence api :java持久化api,同一的ORM规范,是由sun公司指定的规范接口,hibernate实现了JPA规范. ...
- sql时间区间查询性能测试
这个测试针对"一个月"的区间来查询数据.分datetime类型和nvachar类型. 先比较datetime类型: 一.datediff函数 declare @beginTime ...
- 用于模式匹配的String方法和RegExp方法
上一节总结了创建正则表达式的语法,这一篇笔者总结了用于模式匹配的String四个方法:search().replace().match().split()以及用于模式匹配的RegExp两个方法exec ...
- Spring入门案例 idea创建Spring项目
spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其 ...
- 2018.10.23NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 50 + (10 \sim 50)\) 实际得分:\(100 + 10 + 50\) 这可能是我打的最懵逼的一场考试没有之一.. T1两个小时才做出来也是醉了. T ...
- Linux下的环境部署和项目发布
1.查看系统版本 sudo uname --m i686 //表示是32位 x86_64 // 表示是64位 2.下载对应版本软件,jdk和Tomcat(切记注意版本) jdk: 下载地址:http: ...
- solidity语言4
引用类型(Reference Types) memory 不支持持久保存 storage 保留为变量 复杂类型如arrays和structs,有附加信息,'data location',提示存储在'm ...
- github 专案介绍 – Python 范例:透过互动式的 Jupyter 和数学解释流行的机器学习演算法
对于机器学习有兴趣,不少人应该会先从 Andrew Ng ( 吴恩达 ) 的机器学习课程开始,但是吴恩达的课程是使用 octave 这个工具当作练习.这个 github 项目包含使用 Python 实 ...
- Linux--DHCP搭建
服务功能:为局域网中的主机自动分配IP地址.子网掩码.广播地址.默认网关地址.DNS服务器地址 1.安装DHCP服务器软件 [root@localhost Packages]# rpm -ivh dh ...