串口UART串行总线协议
串口UART
串行端口是异步的(不传输时钟相关数据),两个设备在使用串口通信时,必须先约定一个数据传输速率,并且这两个设备各自的时钟频率必须与这个速率保持相近,某一方的时钟频率相差很大都会导致数据传输混乱。
###1 硬件连接
UART可以理解为可以用一线总线就可以完成数据的传输,连接图如下
- VCC 用来给设备提供电源的,如果设备有电源,可以省略
- TX 顾名思义 就是CPU发送数据给设备-对应接设备的RX
- RX 顾名思义 就是CPU接收设备的数据-对应接设备的TX
- GND 地线的作用,做嵌入式的应该必须要了解,没有GND怎么有参考信号
###2 软件通信协议
UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
串口通信协议还有很多其他的,详细可以看这个串口通信协议
UART协议定义,如下图
其中各位的意义如下:
- 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
- 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
- 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
- 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
- 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
- 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。
- 波特率计算示例
- 如图:
- 第一个字节的10位(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:10bit / 1.05ms X 1000 ≈ 9600 bit/s
一般UART设置窗口如下图
##3 示波器逻辑分析仪测量UART波形
如果你是一个做嵌入式软件的,但是你不会量波形,会很丢脸,至少我可以知道示波器有一个AutoSet的按钮,当然,你也可以用逻辑分析仪,这个对软件工程师来说更加方便。
下面列举协议分析的图片
连续的数据波形:0xFF,0x00,…,0x80的波形。可以看出,如果要发送0b0000 0001, 按时间顺序则是,低(起始位),高(1),低(0),低(0),低(0),低(0),低(0),低(0),低(0)。但是后面的7个连续的低电平连接在一起,就形成了一个较长低电平。
更具体的可以查看这个网站
http://www.51hei.com/bbs/dpj-39824-1.html
喜欢可以关注微信公众号:嵌入式Linux
串口UART串行总线协议相关推荐
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...
- 三种串行总线协议的区别(SPI、I2C和UART)
SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...
- 树莓派 SPI,I2C,UART串行总线介绍
很多人对总线,串行等概念不熟悉特别是SPI,I2C,UART,GPIO等概念. 因此我收集了一些资料,用于总结.希望对大家有所帮助. 首先看一下树莓派上的接口: GPIO引脚 x 26 UART总线 ...
- 单片微机原理P4:80C51串口与串行总线拓展
0. 串口通讯 0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输) 1. 根据通信方式的不同又分为同步通讯和异步通讯. 同步通讯:所有设备都使用同一 ...
- SPI、I2C、UART三种串行总线的原理、区别及应用
SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn. ...
- uart接口_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装
摘要 UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...
- 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统
本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...
- usb接口驱动_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装
摘要 UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...
- 高速串行总线设计基础(五)揭秘SERDES高速面纱之多相数据提取电路与线路编码方案
文章目录 前言 多相数据提取电路 线路编码方案 8B/10B编解码 运行差异(Running Disparity) 控制字符 Comma 检测 加扰技术 参考文献 前言 SERDES可以工作在多吉比特 ...
最新文章
- 龙蜥降世,神龙升级,阿里云投入 20 亿发力操作系统
- 最短路径的求解方法(Dijkstra、Floyd算法)
- 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
- python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
- NYOJ 103 A+B Problem II
- c# 非顶层截屏_C#中三种截屏方式总结
- DrawTool画笔之图形笔
- decode函数_「实践」云函数 + API,你也可以做个天气信息系统
- PAIP.MYSQL数据库比较VC313.TXT
- 马哥 linux 活动,马哥linux | Linux系统性能和使用活动监控工具 sysstat
- 哪个视频下载器好用呢?
- Roaring Bitmap 更好的位图压缩算法
- 刷票投票的自动运行脚本
- Java实现的一个简易网络画板
- 家居网络营销:定制家具行业如何做好全网营销?
- Ubuntu18.04切换镜像源时出错
- 计算机测试 原理是什么,rtk的测量原理和工作步骤是什么?
- JMeter - 如何测试REST API / 微服务
- 【计算机基础】-2万字总结《计算机速成课》全集笔记
- PHP使用openoffice实现word,ppt,Excel在线转PDF浏览。windows和linux系统不同的解决方案
热门文章
- Linux下ejabberd安装配置
- android 界面布局 很好的一篇总结 【转】
- 虚拟化之四:虚拟化备份策略已成数据安全的焦点!
- 如何在C#里实现端口监视呢?
- 交换机实现虚拟局域网
- java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...
- 盘点key value在各个编程语言中的类型
- 【numpy】20道numpy题目
- C和C++混合编程(__cplusplus使用)
- android MPV架构快速实现,不是所有的MPV都叫GL8,一体化智能座舱体验来袭