一、何为协议类接口?

双方约定信号的协议和满足时序要求。

二、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的更多相关文章

  1. 协议类接口 - SPI

     一.SPI概述 SPI(Serial Peripheral Interface,串行外设接口)总线系统是一种同步串行外设接口,它可以使CPU与各种外围设备以串行方式进行通信以交换信息.一般主控SoC ...

  2. 协议类接口 - I2C

    一.12c总线概述 I2C( Inter-Integrated Circuit,又称IIC)总线是一种串行总线,用 于连接微控制器及其外围设备,硬件图非常简单:一条串行数据线(SDA),一条串行时钟线 ...

  3. 协议类接口 - NAND

    一.引脚的含义 先看下nand flash是怎么接的,如下所示便为某一款nand存储芯片的引脚图.发现其连地址信号都没有.那么是如何访问地址数据的呢? 查阅该nand flash的数据手册可得其各个引 ...

  4. 协议类接口 - LCD

    一.引脚含义 下图为某LCD相关引脚: 从引脚可以大概看出其SoC的连接情况: 1)VCLK为时钟,每一次像素就移动一次 2)HSYNC/VLINE 3)VSYNC/VFRAME 4)VD0 - VD ...

  5. 业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份

    业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份 WinForm酒店管理软件--框架这篇随笔可以说是我写的最被大家争议的随笔,一度是支持和反对是一样的多.大家对我做的这个行业 ...

  6. Python 基于urllib.request封装http协议类

    基于urllib.request封装http协议类 by:授客QQ:1033553122 测试环境: Python版本:Python 3.3   代码实践 #!/usr/bin/env python ...

  7. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

  8. 组件接口(API)设计指南[2]-类接口(class interface)

    *返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 类接口(class interface) 你能够參考MGTi ...

  9. Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)

    本篇介绍Entity Framework 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试 ...

随机推荐

  1. 【Ubuntu】ubuntu 16.04 设置root用户初始密码

    安装ubuntu成功后,都是普通用户权限,并没有最高root权限,如果需要使用root权限的时候,通常都会在命令前面加上 sudo . 我们一般使用su命令来直接切换到root用户的,但是如果没有给r ...

  2. win10的xbox下载应用或者游戏时,出现0x80070422和0x80073D0A的解决办法

    这个错误:0x80070422是因为关闭了windows update这个服务导致的 这个错误:0x80073D0A是因为关闭了windows firewall这个服务导致的 具体操作: cmd下se ...

  3. Java开发团队管理细则

    软件开发是团队协作,多人开发很容易造成协调问题,因此,做一些必要的开发规范,有助于帮助新员工成长,也有助于提高开发效率,防止各种问题影响开发进度. 1. 代码规范 建议每位java开发人员都读一下&l ...

  4. 从零开始的全栈工程师——html篇1.2

    起名方式与CSS 一.起名方式(起名方式也叫选择器) 起名的目的是为了给标签添加属性 常见的3种选择器有 标签选择器   id选择器(使用的时候加#)    class选择器(使用的时候加.) 样式的 ...

  5. SENNA

    SENNA is a software distributed under a non-commercial license, which outputs a host of Natural Lang ...

  6. toMapFromStage layerDefinitions ClassBreakRenderer

    class Map 方法 toMapFromStage 用于把屏幕坐标转换为地理坐标 public function toMapFromStage(stageX:Number, stageY:Numb ...

  7. CSS3中的变形与动画(二)

    CSS3动画 过渡属性transiton-property 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成.但在CSS3中新增加了一个新的模块transition,它可 ...

  8. matlab练习程序(Bresenham画线)

    Bresenham画线算图形学中最基础的知识了,可惜我并没有选修过图形学,所有还是有必要熟悉一下. 上一篇用到的画线函数应该算是数值微分法,也是我最常用的一种方法,不过这种方法似乎并不是很好. 这里的 ...

  9. Browser进程和浏览器内核(Renderer进程)的通信过程

    看到这里,首先,应该对浏览器内的进程和线程都有一定理解了,那么接下来,再谈谈浏览器的Browser进程(控制进程)是如何和内核通信的, 这点也理解后,就可以将这部分的知识串联起来,从头到尾有一个完整的 ...

  10. 深入JDK源码,这里总有你不知道的知识点!

    Java的基础知识有很多,但是我认为最基础的知识应该要属jdk的基础代码,jdk的基础代码里面,有分了很多基础模块,其中又属jdk包下面的lang包最为基础. 我们下面将总结和分析一下lang包下面最 ...