串口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串行总线协议相关推荐

  1. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  2. 三种串行总线协议的区别(SPI、I2C和UART)

    SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...

  3. 树莓派 SPI,I2C,UART串行总线介绍

    很多人对总线,串行等概念不熟悉特别是SPI,I2C,UART,GPIO等概念. 因此我收集了一些资料,用于总结.希望对大家有所帮助. 首先看一下树莓派上的接口: GPIO引脚 x 26 UART总线 ...

  4. 单片微机原理P4:80C51串口与串行总线拓展

    0. 串口通讯 0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输) 1. 根据通信方式的不同又分为同步通讯和异步通讯. 同步通讯:所有设备都使用同一 ...

  5. SPI、I2C、UART三种串行总线的原理、区别及应用

    SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn. ...

  6. uart接口_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装

    摘要  UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...

  7. 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统

    本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...

  8. usb接口驱动_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装

    摘要  UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...

  9. 高速串行总线设计基础(五)揭秘SERDES高速面纱之多相数据提取电路与线路编码方案

    文章目录 前言 多相数据提取电路 线路编码方案 8B/10B编解码 运行差异(Running Disparity) 控制字符 Comma 检测 加扰技术 参考文献 前言 SERDES可以工作在多吉比特 ...

最新文章

  1. 龙蜥降世,神龙升级,阿里云投入 20 亿发力操作系统
  2. 最短路径的求解方法(Dijkstra、Floyd算法)
  3. 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
  4. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
  5. NYOJ 103 A+B Problem II
  6. c# 非顶层截屏_C#中三种截屏方式总结
  7. DrawTool画笔之图形笔
  8. decode函数_「实践」云函数 + API,你也可以做个天气信息系统
  9. PAIP.MYSQL数据库比较VC313.TXT
  10. 马哥 linux 活动,马哥linux | Linux系统性能和使用活动监控工具 sysstat
  11. 哪个视频下载器好用呢?
  12. Roaring Bitmap 更好的位图压缩算法
  13. 刷票投票的自动运行脚本
  14. Java实现的一个简易网络画板
  15. 家居网络营销:定制家具行业如何做好全网营销?
  16. Ubuntu18.04切换镜像源时出错
  17. 计算机测试 原理是什么,rtk的测量原理和工作步骤是什么?
  18. JMeter - 如何测试REST API / 微服务
  19. 【计算机基础】-2万字总结《计算机速成课》全集笔记
  20. PHP使用openoffice实现word,ppt,Excel在线转PDF浏览。windows和linux系统不同的解决方案

热门文章

  1. Linux下ejabberd安装配置
  2. android 界面布局 很好的一篇总结 【转】
  3. 虚拟化之四:虚拟化备份策略已成数据安全的焦点!
  4. 如何在C#里实现端口监视呢?
  5. 交换机实现虚拟局域网
  6. java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...
  7. 盘点key value在各个编程语言中的类型
  8. 【numpy】20道numpy题目
  9. C和C++混合编程(__cplusplus使用)
  10. android MPV架构快速实现,不是所有的MPV都叫GL8,一体化智能座舱体验来袭