协议类接口 - 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 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试 ...
随机推荐
- [转]Using NLog for ASP.NET Core to write custom information to the database
本文转自:https://github.com/NLog/NLog/issues/1366 In the previous versions of NLog it was easily possibl ...
- ASP .NET SVN && emmet 插件
学习 ASP .NET 时间的第三周: 来讲讲如何在 visual studio 2013...上搭载 SVN吧: 废话不多说: One Step: 电脑上已安装 visual studio 201 ...
- 每隔5s执行一次动作
TimeSpan timespan; //第一次获取系统时间 DateTime d1 = DateTime.Now; while (true) { //第二次获取系统时间 DateTime d2 = ...
- ASP.NET生命周期详解(转)
看到好文章需要分享. 最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多 ...
- 当Activity出现Exception时是如何处理的?
1.ActivityThread 2.PerformStop 在这里会调用mWindow.closeAllPanels(),从而关闭OptionMenu, ContextMenu.如果自己通过Wind ...
- Android4.4 在Framework新增内部资源编译不过的问题
如果在Frameworks新增内部资源,并在Java代码中使用类似形式来引用资源:com.android.internal.R.layout.xxx,需要在frameworks/base/core/r ...
- js之闭包
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的函数是这样定义的: function sum(arr) { ret ...
- 【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动
1.0 可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目. 新建活动FirstActivity,勾选“Generate Layout File”和“Launche ...
- angular2-生命周期钩子函数
生命周期的顺序 当Angular使用构造函数新建一个组件或指令后,就会按下面的顺序在特定时刻调用这些生命周期钩子方法: 钩子 目的和时机 ngOnChanges() 当Angular(重新)设置数据绑 ...
- Zepto结合Swiper的选项卡
我们昨天说了关于Angular的选项卡,那今天就说一下Swiper的选项卡吧! 今天的选项卡是Zepto结合Swiper的选项卡,咱么明天再说纯纯的Swiper的吧! 既然是关于Zepto和Swipe ...