嵌入式经典总线协议

通信基础

并行和串行

并行通信:通过总线一次性的通过8根线,将8个二进制位一次性发送。
如下:
在这里插入图片描述
在这里插入图片描述

串行通信: 对于并行通信,这8位数据是在一条线上一位一位的传输
在这里插入图片描述

在这里插入图片描述
并行和串行谁更好:
并行速度更快,但在并行通信中,不同数据线在传输时可能会有干扰,且资源开销会更大。

单工通信和双工通信

单工通信:在通信时,数据只能由发送器发送到接收器,数据传输是单向的。
在这里插入图片描述

双工通信:在通信时,通信双方既可以发送数据,也可以接收数据。双工通信又分为全双工和半双工的通信方式。
在半双工中,A可以给B发送数据,B也可以给A发送数据,但是这两个操作不能同时进行。
在这里插入图片描述
在全双工中,A可以给B发送数据,B也可以给A发送数据,这两个操作能同时进行。

波特率

波特率是用于描述串口通信时的速度,其单位位bps(bit per second)即每秒钟传送的码元的数量。

在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。

异步通信

指数据收发双方时钟不同步,即不是使用的同一个时钟基

UART

Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收(即一根发送数据,一根接收数据)。在嵌入式系统中常用于主机和设备之间的通信。

UART数据帧格式

在这里插入图片描述
串口规定,在空闲时为高电平。为了消除通讯时的不确定,因此,起始信号是低电平。
在串口发送数据时,是先发低位再发高位

串口的校验位是奇偶校验位,如果发送的数据中1的个数为奇数个就位0,偶数个为1(可有可无)

串口只能一个一个字节的发送,是为了消除累积误差。

串口的硬件连接

在这里插入图片描述

RS232、RS485协议(电气层面)

这两个是电气层的协议,是依赖于串口的

UART存在的问题:

  • 电器接口不统一:UART只是对信号时序进行了定义,而未定义接口的电气特征;
  • UART通信时,一般直接使用处理器使用的电平,即 TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;
  • UART没有规定不同器件连接时器的标准,所以不同的器件之间通过UART通信时连接很不方便。
  • 抗干扰能力差:UART一般直接使用TTL信号表示0和1,但TTL信号的抗干扰能力较差。数据在传输过程中很容易出错
  • 通信距离极短:因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不同芯片直接的通信。

RS232协议

是一个串行通讯的表准,该表准规定采用一个标准的连接器。标准中每个引脚都加以规定.
在这里插入图片描述
接口: 现在工业控制的RS232控制一般都是3根线,GND,RXD,TXD.
信号:该标准规定逻辑1“”的电平为-5v到-15v,逻辑“0”的电平为+5v到+15v,该标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m。

电平转换

很多处理器都好集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号进行转换;
在这里插入图片描述

RS232存在的问题

  • 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电器不兼容,所以需要使用电平转换芯片才能与TTL电路连接
  • 通信速度较低
  • 易产生共模干扰,抗噪声干扰性弱
  • 传输距离较短(15m )

RS485协议

该表准由电信行业协会和电子工业联盟定义;使用该标准的通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号(可达1500m);该标准允许连接多个收发器,即多站能力,这样可以利用单一的RS485接口方便地建立一个设备网络。
在这里插入图片描述
信号:RS485采用差分信号进行数据传输,两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6v表示逻辑“0”;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可达1500m;RS485接口信号的电平比RS232降低了,所以不易损坏接口电路芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接。

接口:
RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上,可以同时存在多个节点;因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作,编程时也要加以处理

“电平转换”
类似于RS232,同样需要在处理器外部去添加电路将TTL信号转换成差分信号;
在这里插入图片描述

RS485的优势

  • 接口的信号电平值比较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接
  • 通信速度快
  • 抗噪声干扰性强
  • 传输距离较远(1500m)
  • 可实现多节点组网

IIC总线协议

IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线。主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向信号线,一根数据线SDA用于收发数据,一根时钟SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,应用广泛。
在这里插入图片描述

IIC总线

IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有很多个主机同时启动总线时,IIC也具备冲突检测和仲裁功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机,也可以作为从机(同一个时刻只能有一个主机),总线上的器件增加和删除都不会影响到其他器件正常工作。
在这里插入图片描述

IIC总线通信过程

IIC通信时可以发送任意多个字节

  1. 主机发送起始信号启用总线
  2. 主机发送一个字节数据指明从机地址和后续地址的传送方向
  3. 被寻址的从机发送应答信号回应主机
  4. 发送器发送一个字节数据
  5. 接收器发送应答信号回应发送器
  6. 循环4、5步骤
  7. 通信完成后主机发送停止信号释放总线

IIC总线的寻址方式

IIC总线上传送的数据是广义的,既包括地址又包括真正的数据

主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同。则认为自己被主机寻址,然后再根据第8位将自己定位发送器或接收器。
在这里插入图片描述

IIC总线信号实现

起始信号和停止信号
SCL为高电平时,SDA由高变低表示起始信号
SCL为高电平时,SDA由低变高表示停止信号
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态停止信号产生后总线处于空闲状态。
在这里插入图片描述

字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传低位,发送器发完 一个字节数据后接收器必须发送1位应答位来回应发送器,即一帧共有9位。
在这里插入图片描述
同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。

典型IIC时序

注:阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答,A非表示非应答,S表示起始信号,P表示终止信号。

主机向从机发送数据
在这里插入图片描述
从机向主机发送数据
在这里插入图片描述
主机先向从机发送数据,然后从机再向主机发送数据
在这里插入图片描述
这里之所以不停止的原因是,如果中间加了停止,想换方向后可能会被其他从机抢走总线的使用权。

SPI总线

SPI简介

SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速的全双工同步的 串行通行总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少四根线,分别是MIMO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)、SPI使用引脚较少且布线方便,因此越来越多的芯片集成了这种通信协议.
在这里插入图片描述

寻址方式

当主设备要和某个从设备进行通信时,主设备需要向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。
在这里插入图片描述

通信过程

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传送完成后无需应答即可开始下一个字节的传送,SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。
在这里插入图片描述

CAN总线

简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

优点

  • 高速
  • 抗干扰
  • 传输距离远
  • 灵活

物理层

CAN总线是属于物理层的协议
在这里插入图片描述
在这里插入图片描述
CAN没有时钟信号线来保持信号接收同步,因此是半双工,无法同时做到接收和发送,即在同一时刻,只能有一个节点发送数据,其余节点都只能接收数据。

参考:https://blog.csdn.net/xwwwj/article/details/105372234?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169327005216800225584478%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169327005216800225584478&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-105372234-null-null.142v93chatsearchT3_2&utm_term=can%E6%80%BB%E7%BA%BF&spm=1018.2226.3001.4187


学习视频:
https://www.bilibili.com/video/BV1SK4y1X7jp?p=10&spm_id_from=pageDriver&vd_source=90bcbd53dd425869c61b5f11ca1bcc7a

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asita_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值