常见通信协议

  • 通信协议介绍
    • 1、串口通信
    • 2、IIC通信
    • 3、SPI通信
  • 总结

通信协议介绍

在做各种课题设计时候,经常会用到的就是使用“**通信”进行传输。最开始一直是处于一脸懵的状态。编写程序时候百思不得其解,怎么编写这个通信协议?
后来花了很长时间去弄清楚了这些概念,结果在做设计时候一问组员都是一脸懵,根本不清楚通信协议是用来干什么的。所以自己整理了一遍思路,也方便自己加深理解。

在硬件上,我们经常需要多个设备之间相互进行通信。这些设备之间的相互通讯,一定都是按照一个统一规定的协议进行传输的。换句话说,也就是规定了两个设备之间的传输是怎么开始的,怎么结束的,哪些是通信的内容,怎么检验通信过程是否出错等等问题。
具体的通信协议都是通过对应的编程语言写入对应的硬件设备中,就像往两个设备中放了两个守门员,对于传输的数据进行把关,从而建立通信进行传输。
这里介绍几个硬件上常用的通信协议:

  • IIC通信
  • 串口通信
  • SPI通信

1、串口通信

串口是计算机设备,多种仪器设备等上常用的协议。

在并行通信中,一个字节(8位)数据是在8条并行传输线上同时由源传到目的地。因此这样的传输方式传输速度更快,传输效率高,但是占用资源也多。
而在串行通信方式中,数据是在单条1位宽的传输线上一位接一位地顺序传送。这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。这样的传输方式虽然成本低但是传输速度慢。

(从其他地方down的图)

在串行通信中,又分为几种不同的传输方式:
单工、半双工、全双工
单工意味着信息只能单向传递,而半双工则是信息可以双向传输但是不能同时双向传输,全双工指的是信息可以同时双向传输。
在时序上,串行通信又分为两种方式:同步通讯、异步通讯

下面介绍具体的通信过程:(以单工为例)
在两个设备进行相互通信时,以一帧数据为单位进行传输。而一帧数据中包含起始位、数据位、校检位、停止位组成。
其中,校检位分为奇校检和偶校检:

  • 奇校验
    将最高位作为数据的奇偶校验位,所谓奇校验,就是保证一个字节的数据中1的个数必须是奇数,若不为奇数,则在最高位添1.,保证1的总是为奇数
  • 偶校验
    若一个字节中的1不为偶数,则在最高位添1,保证1的总数为偶数

校检位不是必须有的,可以根据具体情况进行设定。

开始传输时,传输线拉低作为起始位,拉低一个单位时间后就开始传输数据。一般的数据位为八位,待数据发送完成后,进行校检位传输并进行验证。接着接收高电平停止位(停止位都是1),根据设定的停止位持续时长进行判定,比如设定停止位为保持高电平1.5个时间单位。
每帧数据之间相隔若干个不定时间长度,空闲时间传输线一直保持高电平状态。

2、IIC通信

IIC通信一般用于主从通信,即由主控制器发起,从设备进行响应的通信过程。该通信方式可以通过总线连接多个分立设备,通过唯一的地址与主机进行通信。
IIC通信共用到了两根线,一根是SDA数据线,另一根是SCL时钟线。在SDA数据线上,只负责传输来往的数据信息,至于对传输过程的控制,由SCL时钟线进行控制。


具体的通信过程:
时钟线SCL在空闲时间为高电平,SDA数据线为高电平。
开始通信:
需要开始通信时,在SCL为高电平期间,若SDA从高电平跳变到了低电平,则意味着通信开始,此时时钟线SCL开始进行传输控制,数据线上的数据传输依据SCL时钟进行传输。
结束通信:
结束通信时,将SCL时钟线再次拉高,在SCL保持高电平的状态下,若SDA从低电平跳变为高电平,则通信结束。此时SCL恢复为低电平状态。

前面说了IIC通信主要用于主从通信,即开始通信和结束通信都是由主控制器发起,从设备接收到信息后进行应答。
IIC通信中由于是单个总线进行通信,连接总线的可能有多个从设备,所以通信内容必须包含唯一明确的通信地址才可以保证通信的顺利进行。
因此,在起始信号发起后,接着就是七位的从设备地址,第八位则规定了通信方向。即“1”代表主机接收数据,从设备发送数据,而“0”代表主机发送数据,从设备接收数据。
每次传输数据位完成后,从设备需要产生应答信息,即从设备的SDA线产生一个单位时间的低电平表示应答,而高电平则表示非应答。

3、SPI通信

SPI通信也分为主从模式,不同的是SPI一共有四根线。其中两根数据线MOSI以及MISO,一根时钟线SCK,一根片选CS线。
两个数据线分别为主机接收(MISO)、主机发送(MOSI)两路数据。
SPI通信也存在着一个主机,多个从设备相互通信的情况,所以在主机与指定的从设备进行通信时,需要对从设备进行选定。片选CS即是为了选定某一个从设备,从而让主机单独的与该从设备进行通信。
时钟线SCK依然像其他的时钟一样,做传输控制。

当开始进行通信时,先选定与主机进行通信的从设备,拉低该设备的CS线,表示该设备与主机通信。

有一点需要注意的是,在SPI通信中,没有特定的读写操作。主从设备进行的是数据交换,主机发送出数据就必然会接收到数据,主机想要接受到数据就必须向从机发送数据。

主机与从机中都有一个移位寄存器,主机向它的寄存器写入一个字节来发起一次传输。寄存器通过 MOSI 数据线将信号传送给从机,从机也将自己寄存器中的内容通过 MISO 信号线返回给主机。这样,两个主从设备间就完成了一次信息传输,读写操作是同步完成的。
SPI有四种传输模式,通过CPOL(时钟极性)和CPHA(时钟相位)来控制。
CPOL时钟极性:用来设定SCLK的电平状态为有效
CPHA时钟相位:用来设定数据采样在SCL哪个跳变
则根据两个控制信息产生出四种传输模式:

  • Mode0:CPOL=0,CPHA=0
  • Mode1:CPOL=0,CPHA=1
  • Mode2:CPOL=1,CPHA=0
  • Mode3:CPOL=1,CPHA=1

Mode0:SCK处于低电平为空闲态,数据采样在上升沿,数据发送在下降沿。
Mode1:SCK处于低电平为空闲态,数据采样在下降沿,数据发送在上升沿。
Mode2:SCK处于高电平为空闲态,数据采样在上升沿,数据发送在下降沿。
Mode3:SCK处于高电平为空闲态,数据采样在下降沿,数据发送在上升沿。
在通信过程中,通信双方必须工作在同一种模式下,而且SPI通信没有了IIC通信中从机应答的环节,比IIC通信要简单。

总结

上面写的三种通信协议都是大体介绍了概念,能弄清楚各种通信协议的具体方式和过程就好,至于具体通信时的各种细节,就需要在编写程序时认真的思考每一个变量,每一个时钟的作用,认真分析时序。
本文中引用的图也是从其他帖子上down下来的,这里我分别找了三种通信协议的具体详细说明:
1、SPI通信
2、IIC通信
3、串口通信

【注】个人学习笔记,请不吝赐教!

常见的硬件数据通信协议相关推荐

  1. 数据通信协议的简介(数据通信协议和网络协议有什么区别?)

    数据通信协议 Data communication protocol 亦称数据通信控制协议.是为保证数据通信网中通信双方能有效,可靠通信而规定的一系列约定.这些约定包括数据的格式,顺序和速率,数据传输 ...

  2. 容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件

    容器虚拟化技术Docker(一)简介.安装.常见命令.数据卷.安装常规软件 1.Docker简介 1.简介 Docker的主要目标是"Build,Ship and Run Any App,A ...

  3. 【常见的大数据存储工具】

    为什么需要大数据存储工具 到 2025 年,将需要分析超过 150 ZB 的数据.只有拥有能够大规模扩展以应对大数据挑战的安全存储解决方案,组织才能利用大数据的力量.大数据存储工具收集和管理大数据并实 ...

  4. 服务器数据通信协议,数据通信协议规程.doc

    数据通信协议规程 PAGE PAGE 19 数据通信协议规程 篇一:多机通信协议规范波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲区,所以可以按高达24 ...

  5. 专利:结构化大数据通信协议

    发明专利技术 结构化大数据通信协议 发明人:樊永正 269779216@qqqq.com 技术领域 结构化大数据通信协议是一种通信协议,也是一种让数据成为合格的结构化大数据的技术.结构化大数据通信协议 ...

  6. Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...

    1 #settings.py 2 # --------01CMDB获取服务器基本信息-------- 3 import os 4 5 BASEDIR = os.path.dirname(os.path ...

  7. 常见的大数据误区有哪些

    大数据对所有企业都有合理的承诺,无论其规模如何.通过大数据分析,企业可以获得洞察力,帮助他们不仅可以增加收入,还可以了解他们的服务和产品中的差距. 让我们来看看最常见的大数据误区 作为一项不断发展的技 ...

  8. 目前常见的大数据分析软件有哪些?

    作为一名优秀的数据分析师,既需要不断了解和掌握数据分析方法,同时还需要学习和熟练使用数据分析软件,毕竟借助工具既可以确保数据分析结果的价值,同时也能提升效率,接下来小编带你了解下目前常见的大数据分析软 ...

  9. 常见的五大数据分析模型

    常见的五大数据分析模型 PEST分析模型 政治环境的关键指标: 经济环境:分为宏观与微观. 经济环境的关键指标: 社会环境的关键指标: 技术环境的关键指标: 5W2H分析模型 何为5W? 何为2H? ...

最新文章

  1. Nature:人体菌群研究的25个里程碑
  2. 浅议DAS、NAS、SAN三种存储架构
  3. 实验四:Telnet远程登录服务器的安装、管理及Telnet客户端的应用
  4. 基于经验的SOA成功原则
  5. Spring_Hibernate整合准备
  6. 17、Java Swing Timer:计时器组件
  7. angular html清除元素,使用AngularJS删除DOM元素
  8. mysql 5.6.22编译_saltstack全编译安装mysql5.6.22
  9. 在cygwin下安装CRF++
  10. Swiper – 经典的移动触摸滑块插件【免费】
  11. python爬虫知识点总结(十六)PySpider框架概述和用法详解
  12. 电脑围棋中的人工智能技术
  13. STM32驱动步进电机测试
  14. 路由器硬件升级和软件改造
  15. SQL Server研习录(25)——sql server触发器、instered表和deleted表知识详解及示例分析
  16. 【JS迷你书】Number类型二进制表示法
  17. 郑州市高中计算机考试操作题,郑州市区中招理化生实验操作考试4月8日开考 具体流程请看清楚...
  18. 基于xilinx-IP的FIR滤波器多通道实现
  19. SQL Server 比较日期大小的方法
  20. vue + elementui +sass+axios做卖座网的后台管理系统

热门文章

  1. 去叶剂行业调研报告 - 市场现状分析与发展前景预测
  2. 【课件整理复习】第十一章 图像识别与文字处理
  3. Github配置ssh key【不用密码访问Github上代码】
  4. 基于JSP的犯罪数据可视化系统
  5. 双离合档把上按钮作用_自动挡挂档要按按钮吗 主要为了防止挡误操作
  6. android tools ignore,android tools属性引用
  7. c语言中格式符号错误,C语言中符号格式说明
  8. PostgreSQL高可用集群
  9. 日语翻译器-日语翻译器软件-日语翻译器排行榜
  10. (超简单)ESP8266深度睡眠模式下远程采集温湿度信息