假如我们需要从一个MCU发送一段数据到另一个MCU,我们可以选择两种通信方式,串行通信或者并行通信。

假如我们要发送的数据是数字198转化为二进制,就是11000110,如果使用串行通信协议,我们只需要一根数据线按照位顺序发送数据即可,通讯距离可以从几米到几千米,也可以使用并行通信协议,我们需要八根数据线直接并行发送数据即可。

由于并行数据无法携带时钟信息,为确保信号持续一致,需要额外的时钟信号线,并且通信速度快,但是相应的线路成本也更高,抗干扰能力也更差,因此通信距离非常有限。

在我们使用MCU进行通信的时候,串行协议往往因为其外设简单、成本低而通信距离远,所以更受欢迎。

我们常用的串行协议有Sbus,PPM,USB,RS232,Morse Code,JTAG,UART,I2C,CAN,SPI,MIDI等,甚至摩尔斯电码也是串行通讯。根据使用时钟的不同,我们可以把串行通讯方式分为同步通讯和异步通讯。

我们常用的I2C和SPI都是同步通信,同步通信的双方需要使用频率一致的时钟,接收方需要时刻准备好接收数据,只需要辅助bit串作为启停标识,因此传输效率高,也可以一对多的进行通信。

异步通信的典型代表就是串口UART。异步通信的双方使用各自的时钟,接收方式通过识别数据包中的起始位和结束位来实现信息同步,因此数据效率低,只能一对一的通信。

我们先来看一下我们常用的串口通信,需要三根线,发送数据线TX,接收数据线RX和参考的GND即可进行通讯。

在通讯之前双方要知道通讯的波特率、数据长度、开始位和停止位,比如我们要发送198这个数字转换为二进制为11000110,我们可以把要发送的数据加载到数据位中,进行通讯时,我们还需要一个起始位和一个结束位。

我们通常用高信号表示通讯停止,因为这样的话受到干扰信号也不会出现通讯错误。当接收器检测到信号由高变低时,就表示开始通信,就可以开始读取数据。

我们还需要配置一个参数,就是波特率,我们常用的波特率为9600波特每秒,意思就是每秒发送9600个码元,每个码元的长度为一除以9600等于104微秒。

但在实际的应用中,当我们检测到数据起始位开始读取数据时,通常延后52微秒再开始读取数据,因为刚开始的数据可能不稳定,之后接收器要做的就是每104微秒采集一次数据,直到八位数数据读取完毕读取到数据停止位,即使我们使用其他的波特率发送不同的数据,我们也需要使用相同的方式读取起始位和停止位。

喜欢的帮忙收藏点个赞哦,谢谢大家的支持与鼓励!

​​​​​​​

学习单片机,我华维林北是认真的,童鞋们有什么疑问都可以来找我,及时回复林北能得到非常实用的干货,能帮助你们成长我会得到很大的满足感!好了,这期就说到这,我们下期见!

华维林北

MCU串行通讯和并行通讯的区别以及UART的理解相关推荐

  1. 典型的计算机串行和并行总线,串行总线和并行总线的区别

    描述 并行通信传输中有多个数据位,同时在两个设备之间传输.发送设备将这些数据位通过 对应的数据线传送给接收设备,还可附加一位数据校验位.接收设备可同时接收到这些数据,不需要做任何变换就可直接使用.并行 ...

  2. promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)

    1.印象 古人云:"君子一诺千金",这种"承诺将来会执行"的对象在JavaScript中称为Promise对象. Promise就是解决多个异步请求的问题 Pr ...

  3. 串行内存消耗 并行内存_如何估算内存消耗?

    串行内存消耗 并行内存 这个故事可以追溯到至少十年之前,当时我第一次接触PHB时遇到一个问题:"在生产部署中,我们需要购买多大服务器". 我们正在构建的新的,闪亮的系统距离生产开始 ...

  4. iOS GCD, 同步,异步,串行队列,并行队列,dispatch_group

    同步,指代码在同一个线程运行 异步,代码在另一个线程运行 串行队列,提交到该队列的block会顺序执行 并行队列,提交到该队列的block会并发执行 如果想等某一队列中所有block都执行完了在执行一 ...

  5. android 组合属性动画,Android属性动画组合(sequence串行、together并行)

    在android中用原生api实现一系列复杂动画会很麻烦,所以对属性动画进行了一定封装,让使用起来更简单,能够按照人的思维依次编写动画. 简单效果: 使用方法: 添加依赖:dependencies { ...

  6. 数据传输方式串行快于并行

    在实际时钟频率比较低的情况下,并行因为可以同时传输若干比特,速率确实比串行快. 但是,随着技术的发展,时钟频率越来越高,并行导线之间的相互干扰越来越严重,速度反而不如串行传的快.

  7. BCH编码(15,5)1bit串行,5bit并行

    1)什么是BCH码 ①BCH码是一种纠错码.线性分组码.循环码. ②需要传输信息位数:k ③纠错能力:t ④总码长(信息位+监督位):n ⑤n的长度满足n=2^m –1时生成的为本原BCH码:n的长度 ...

  8. 单片机的串行口和并行口有什么不同,它们各执行什么功能

    串口和并口都是用来做数据传递的 ,串口是用连续的高低位表示数据,如0x55就是连续的01010101,高低电平间隔时间相等.具体间隔由总线速度和你配置的串口波特率有关.并口是用同一时刻几个端口的状态组 ...

  9. 基于51的串行通讯原理及协议详解(uart)

    串行与并行通讯方式 并行:控制简单,传输速度快.线多,长距离成本较高且同时接受困难. 串行:将数据字节分成一位一位的行驶在一条传输线上进行传输.如图: 同步与异步串行通讯方式 同步串行通讯方式:同步通 ...

  10. 结合实际代码谈常见串行通讯方式—USART、SPI以及IIC

    按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式,而并行通讯一般是指使用8.16 ...

最新文章

  1. Flash Builder 4.7 安装
  2. mysql 书籍推荐 简书_Mysql复习必备----50条经典Sql语句
  3. warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
  4. Python dataframe绘制饼图_【python可视化】:matplotlib:常见图表绘制——面积图、填图、饼图...
  5. Sdk Manager.exe 闪退问题的解决
  6. OpenCV基于LeNet-5和连接组件分析的数字识别的实例(附完整代码)
  7. Flutter: 显示/关闭系统叠加层ui
  8. blender怎么移动骨骼_宝宝偏头怎么办?千万别错过这个矫正“黄金期”!
  9. Android Wi-Fi 2.4G及5G信道一览表
  10. asp.net mysql 论坛源码_最新asp.net微信商城快速开发框架Magicodes.Shop微商城开发框架源码企业商业版源代码...
  11. 正确理解文件与目录的可读、可写、可执行权限
  12. 腾讯云游戏多媒体解决方案
  13. Dubbo整合Nacos
  14. 智力题解题报告No.12 倒油 倒酒 倒水问题
  15. 解决DedeCMS搜索结果每页显示10条无法修改方法
  16. 一个软件网络连接异常_拥有苹果电脑后,最应该预装的7款Mac应用软件
  17. 基于android的旅游app毕设,安卓157旅游记忆(app+server)
  18. PHP云招聘系统H5(源码+数据库脚本)
  19. 计算机考研840考纲,2020年北航考研840网络空间安全专业综合考试大纲
  20. 21点游戏双人对战(javaweb形式)

热门文章

  1. 求连续数组子序咧的最大和
  2. .netcore signalR 实时消息推送
  3. 05 基本数据类型+五大数据类型
  4. 2018-12-13丛晓强作业
  5. 树莓派进阶之路 (023) - Windows下用串行连接控制树莓派(转)
  6. 利用 TypeConverter,转换字符串和各种类型只需写一个函数
  7. centos虚拟机复制后网络重启出错解决
  8. 初学 JAVA ,编程实例【人会说话,中国人说中国话,美国人说英语】
  9. 比特币 的 正统 ——BCH
  10. CentOS下安装两个或多个Tomcat7