【嵌入式】串行通信总线技术解析:从UART到RS485、IIC和SPI

前言:

在现代电子通信领域,串行通信总线扮演着至关重要的角色,它们是电子设备之间数据交换的桥梁。串行通信以其灵活性和成本效益,在嵌入式系统和各种外设之间建立了高效的通信链路。本文将深入探讨几种常见的串行通信协议:UART、RS232、RS485、IIC和SPI。通过详细的介绍和比较,我们将了解这些协议的工作原理、特点以及它们在实际应用中的适用场景。文章将从基础概念入手,逐步深入到具体的实现和应用,为读者提供全面的技术视角。

1. UART

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

1.1 通信基础

1.1.1 串行和并行

soc与外部设备之间的通信!
并行通信:8位通过8根线一起发送
串行通信:8位1位1位的去传
在同等条件下并行通信的速度要快于串行通信,但是并行通信增加了其布线难度

1.1.2 单工和双工

单工通信:发送器直接发送给接收器
全双工:双方可以同时发
实际应用的时候看数据线的条数就可以判断,比方说iic只有一根线只能是半双工,两根线以上大概率是全双工!

1.1.2 波特率

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

1.1.3 UART帧格式

在这里插入图片描述
串口协议规定:

  • 数据线在空闲的时候必须搞成高电平,
  • 起始位为低电平,
  • 发送位,把要发送的数据往信号线上放,串口协议先发低位再发高位

在这里插入图片描述
在这里插入图片描述

  • 数据位5-8位都是可以的,但是一般都是发8位刚刚好时一个字节!
  • 校验位校验有没有产生错误!(可有可无)
  • 停止位1、1.5、2 位,都是可以的,但是不能没有,停止位必须是高电平

串口通信是异步通信,各自都有各自的时钟,像spi、iic都是属于同步通信的范畴!

硬件连接:
在这里插入图片描述

注意:一方的TXD要连接到另外一方的RXD

UART 控制器
一般情况下处理器中都会UART控制器,我们使用UART进行通信的时候只需要对其内部的相关寄存器进行设置即可
在这里插入图片描述
我们使用串口的时候只需要设置怎样的通信速度(波特率)即可

引脚功能设置
在这里插入图片描述
设置引脚功能的实质是让引脚再芯片内部连接到某一个对应的控制器上

Exynos4412下的UART控制器
串口控制器也会集成一个发送器,和一个接收器,控制窗口发送速率这样一个过程
在这里插入图片描述
UART编程
在这里插入图片描述
在这里插入图片描述
可以想一想,为什么发送顺序和接收顺序会不一样呢?
要想发送数据要看看,发送的寄存器能不能读(上一次的数据有没有发完),能不能写,看看能不能写入新的数据
在这里插入图片描述
在这里插入图片描述
封装一下:
在这里插入图片描述
发送和接收数据!
在这里插入图片描述

RS232、RS485 协议原理及应用

这两种协议都是在UART(串口)的基础上电气层做出的改变,在编程上还是和UART类似;

UART 存在的问题

  1. 电器接口不统一
  • UART 只是对信号的时序进行了定义,而未定义接口的电气特性;

  • UART通信时一般直接使用处理器使用电平,及TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;

  • UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便;

  1. 抗干扰能力差

UART一般直接使用TTL信号来表示0和1,但是TTL信号的抗干扰能力较差,数据在传输过程中很容易出错

  1. 通信距离极短

因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板的两个芯片之间的通信

RS232协议

  • RS232协议

RS232 协议时在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端厂家共同定制的用于串行通讯的标准
该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还会信号的电平加以规定;

  • 接口

该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定;后来 IBM 的 PC 机将 RS232 简化成了 DB-9 连接器,后来成为事实标准;现在工业控制的RS-232接口一般只使用RXD(接收)、TXD(发送)、GND三条线;
在这里插入图片描述

  • 信号

该标准规定逻辑“1”的电平为-5v 到 -15v,逻辑“0” 的电平为+5v 到 +15v,
选用该电气标准的目的在于提高抗干扰能力,增大通讯距离,其传送距离一般可达15m

  • 电平转换

虽然很多处理器中都会集成UART控制器,但是处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要处理器外部去添加电路对信号的电平进行转换;(纯硬件,编程的时候不需要考虑)
在这里插入图片描述

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

RS485协议

  • RS485协议

该标准由电信行业协会和电子工业联盟定义;使用该标准的通讯网络能在远距离(可达1500m)的条件下以及电子噪声大的环境下有效传输信号;该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS485接口方便地建立起一个设备网络(485上总线上可以挂很多总线,都可以通过485总线进行通信)

在这里插入图片描述

  • 信号

RS485标准规定采用差分信号(用电压的差值计算0和1)进行数据传输,两线间地电压差为+2v到+6v表示逻辑“1”,两线间地电压差为-2v到-6v表示逻辑“0”;使用差分信号能够有效地减少噪声信号地干扰(而且还使用的是双绞线),延长通信距离,RS485的通信距离可达1500m;RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接。

在这里插入图片描述

  • 接口

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

  • 电平转换

虽然很多处理器中都会集成UART控制器,但是处理器产生的信号一般都是TTL信号并不是符合RS485标准信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;

在这里插入图片描述

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

iic总线

什么是iic总线?

iic总线是Philips公司在八十年代初推出的一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;iic总线有两根双向的信号线一根数据SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;iic总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用;
在这里插入图片描述
iic总线是一种多主机总线,连接在iic总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,iic也具备冲突检测和仲裁的功能来防止错误的产生;每个连接到iic总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其它器件的正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;
在这里插入图片描述

iic总线通信过程

  1. 主机发送其起始信号启用总线
  2. 主机发送一个字节数据指明从机地址(高7位)和后续字节的传送方向(最后1位)(第一个字节一定是主机发给从机,但后续字节就不一定了)
  3. 被寻址的从机发送应答信号回应主机
  4. 发送器发送一个字节数据
  5. 接收器发送应答信号回应发送器
  6. … … (循环步骤4、5)
  7. n. 通信完成后主机发送停止信号释放总线(表示一次通信信号的结束)

iic 总线的寻址方式

  • iic 总线上传送的数据是广义的,即包括地址,又包括真正的数据
  • 主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,'0’表示主机发送数据,'1’表示主机接收的数据;总线上所有的从机接收到字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定义位发送器或接收器;

在这里插入图片描述

iic总线信号实现

  • 起始信号和停止信号
  • SCL为高电平时,SDA由高变低表示起始信号
  • 起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态

在这里插入图片描述

  • 字节传送与应答
  • iic总线通信时每个字节长度为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位

在这里插入图片描述

  • 同步信号
  • iic总线在进行数据传输时,时钟线SCL(告诉发送方和接收方什么时候收,什么时候发)为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间上的信号不允许发生变化,必须保持稳定。
    在这里插入图片描述
    在这里插入图片描述

- iic可以发送任意多个字节,原因就是收发双方用的是同一个时钟基准

  • 字节传送与应答

iic总线通信时每个字节为8位长度,传输数据时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来发送器即一帧共有9位(发送一个数据需要9个发送和应答)
在这里插入图片描述

典型iic时序

  • 主机向从机发送数据
    在这里插入图片描述

  • 从机向主机发送数据
    在这里插入图片描述

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

  • 主机先向从机发送数据,然后从机再向主机发送数据
    在这里插入图片描述

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

SPI总线

SPI介绍

  • SPI总线
    SPI(Serial Peripheral Interface)时串行外设接口的缩写,SPI是一种高速的、全双工、同步串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或者多个从设备(主机有管理权和释放权);SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议;

在这里插入图片描述

寻址方式

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

通信过程

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

同步通信是通过掐时间来确定发送的是0还是1,异步通信是同过时钟信号线来实现!

  • 极性和相位

SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)者两个因素

  • CPOL表示SCLK空闲时的状态
    CPOL=0,空闲时SCLK为低电平
    CPOL=1,空闲时SCLK为高电平
  • CPHA表示采样时刻
    CPHA=0,每一个周期的第一个时钟采样
    CPHA=1,每个周期的第二个时钟沿采样

需要说明的是,对于一个特定的从设备来说,一般出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和该设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置;

IIC 和 SPI 的异同

  • 相同点
  1. 均采用串行、同步的方式
  2. 均采用TTL电平,传输距离和应用场景类似
  3. 均采用主从方式工作
  • 不同点
  1. IIC为半双工,SPI为全双工
  2. IIC有应答机制,SPI无应答机制
  3. IIC通过总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址
  4. IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调

总结:

本文全面介绍了UART、RS232、RS485、IIC和SPI这几种串行通信协议。UART作为一种通用异步通信总线,以其简单性和灵活性广泛应用于嵌入式系统中。RS232和RS485协议则分别在电气特性上对UART进行了增强,提供了更远的通信距离和更强的抗干扰能力。IIC总线以其多主机能力和简单的硬件结构,在近距离低速通信中得到了广泛应用。而SPI总线则以其高速全双工通信能力,在需要快速数据传输的应用中显示出其优势。每种协议都有其特定的应用场景和优势,选择合适的通信协议对于确保系统性能和可靠性至关重要。通过本文的介绍,读者应该能够对这些串行通信协议有一个清晰的理解,并能够在实际应用中做出合理的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Q_hd

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

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

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

打赏作者

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

抵扣说明:

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

余额充值