不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我
在电路中,通讯协议起到桥梁的作用,现代电子系统更是离不了。今天,本期Back2School系列课程为大家带来电子专业必备的实战技能第一课,常用的通信电路及通信协议的开发应用。
来,先上几张数据格式图考考大家,你们都知道分别对应的是什么通信方式吗?
如果你分不清这些数据的话,这篇文章一定要仔细看,收藏哦!
以下是视频相关内容整理:
通信,就是指电子设备间一对一或一对多的信息交互,例如,人与人之间可以靠见面、打电话、发短信以及实时视频通话进行信息交互,方式是非常丰富的,其实电子设备间的通信方式要比人与人之间的通信方式更加花样百出。
1
UART
首先,来看UART串口通信,UART中文的名称是通用异步接收器/发送器,是最常用的设备间通信协议之一。
异步的意思就是发送方和接收方可以独立的发送数据,可以工作在全双工和半双工以及单工模式下。
UART串口通信电平比较多种多样, 有3.3V/5V TTL电平、RS232电平、RS485/422电平。
不同的电平,对应不一样的场合,比如当距离在0.5米以内的芯片间通信或板间通信,可以直接使用TTL电平进行通信,当距离在15米以内时可以使用RS232电平,当需要的距离更远时,我们可以使用RS485/422电平进行通信,配合中继,可以达到几百米至上千米。
不同电平之间的转换也是非常方便的,比如使用MAX232或MAX485芯片就可以将TTL电平转换为RS232电平或RS485/422电平。
在工业控制中的使用的PLC中,使用的基本都是RS232和RS485,例如下图这款PLC上,RS485就有3个,还用一个RS232,由此可见串口在电子电路里的重要性。
接下来就是UART串口的核心了,数据帧格式,包括起始位、数据位、校验位以及停止位。
具体通信过程是这样的:
(1)以TTL电平通信为例,将需要通信的两台设备的UART数据线RXD和TXD交叉连接;
(2)配置两台设备的波特率、数据位、停止位、校验位保持一致;
(3)发送数据,从起始位到结束位,整个数据包以串行方式从发送设备送至接收设备。接收设备以预配置的波特率对数据线进行采样。
(4)接收设备丢弃数据帧中的起始位、奇偶校验位和停止位,接收设备拿到数据。
上面我们说的是UART串口通信的一些理论,那在实际电路中该怎样去调试呢?
在上面我们也讲了,UART串口的电平有多种,在调试TTL串口的时候,我们可以使用这种USB转TTL串口。
对于RS232或者RS485,需要USB转RS232或RS485数据线。
不管是USB转TTL,还是转RS232,RS485,这些转换器在得捷上都有,有了这些工具,再配合PC端的串口助手,就可以测试通信。
2
I2C
乔治·萧伯纳说过"沟通最大的问题在于,人们想当然地认为已经沟通了",
电子设备的通信也是如此, UART串口在通信的过程中是不会去管通信是否建立,只要用户说要发送,那发送端就开始传输,我发送完了,就默认你已经收到了,这就容易造成电子设备间的“无效沟通”,虽然可以通过定义软件帧来检测通信,但是这非常依靠用户的协议定义。
为解决电子设备间的无效沟通,同步通信出现了,就是I2C通信,I2C 通信协议由Phiilps 公司开发的,只使用两条线,一条双向串行数据线 (SDA) 用来表示数据,一条串行时钟线 (SCL) 用于数据收发同步,所以硬件实现很简单。
所以在板间芯片与芯片之间用的很多,比如单片机与传感器之间,与屏幕之间,都是用I2C来进行通信的。
I2C通信硬件都是开漏输出,所以在I2C总线上需要使用上拉电阻,上拉电阻的典型值是4.7K。I2C的可扩展性也很强,可以一主多从,比如说单片机作为主机,一条I2C通信可以挂多个芯片,都能与单片机进行分时通信。
但是这里提醒大家,I2C一主多从连接的芯片数量是有限制的。目前I2C的通信速率有标准模式100Kbps、快速模式 400 kbps、高速模式3.4 Mbps以及超快速模式5 Mbps,常用的还是标准模式和快速模式,很少有设备支持高速模式和超快速模式。
I2C在数据传输中,读写协议包含地址帧和数据帧,地址帧是节点的二进制地址,数据帧包含所传输的数据、开始和停止条件、重复起始位、读⁄写位以及每个数据帧之间的应答⁄不应答位。
这就是I2C总线的传输协议,通信过程是这样的:
(1)主机发送起始信号,唤醒总线上的所有节点;
(2)主机开始广播目标从机地址,当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备将会忽略之后的数据信号。
(3)在地址位之后,是传输方向的选择位,该位为 0 时,表示后面的数据传输方向是由主机传输至从机,即主机向从机写数据。该位为 1 时,则相反,即主机由从机读数据。
(4)从机接收到匹配的地址后,主机或从机会返回一个应答 (ACK) 或非应答 (NACK) 信号,只有接收到应答信号后,主机才能继续发送或接收数据。
(5)如果配置的方向传输位为“写数据”方向,广播完地址,接收到应答信号后,主机开始正式向从机传输数据 (DATA),数据包的大小为 8 位,主机每发送完一个字节数据,都要等待从机的应答信号 (ACK),重复这个过程,当数据传输结束时,主机向从机发送一个停止传输信号 (P),表示不再传输数据。
如果配置的方向传输位为“读数据”方向,主机广播完地址,接收到应答信号后,从机开始向主机返回数据 (DATA),数据包大小也为 8 位,从机每发送完一个数据,都会等待主机的应答信号 (ACK),重复这个过程。当主机希望停止接收数据时,就向从机返回一个非应答信号(NACK),则从机自动停止数据传输。
在I2C协议的调试中,没有像UART的USB转接线这种东西,除了使用示波器,还需要使用逻辑分析仪,使用示波器可以观察总线的波形是否发生畸变,数据解析示波器通常是做不了的,就需要使用逻辑分析仪去做数据解析。
这是实时捕捉到的I2C通信的协议帧,这是使用示波器和逻辑分析仪同时捕捉到的波形和数据帧,通常需要互相配合分析通信过程。
3
SPI
I2C的标准速度是100Kbps,通信速度还是较低的,那有没有一种速度快的同步通信呢?有,那就是SPI通信。SPI是一种同步、全双工、主从式接口,来自主机或从机的数据在时钟上升沿或下降沿同步,主机和从机可以同时传输数据,也可以做到一主多从。
SPI接口可以是3线式或4线式,MOSI和MISO数据线,其中MOSI是指数据从主机发送到从机,MISO则是数据从从机发送到主机。SCLK时钟线,用来产生同步时钟,CS片选信号,当SPI连接多个从机的时候,通常拉低哪一个从机的CS信号,就代表这个从机被选中。
这是一个SPI主机的通信时序,CS、 SCLK、 MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过MISO信号线读取从机的数据。MOSI 与 MISO 的信号只在CS为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和MISO 传输一位数据。
在SPI协议的调试中,和I2C一样,除了使用示波器,还需要使用逻辑分析仪,这是我实时捕捉到的SPI通信的协议帧,这也是使用示波器和逻辑分析仪同时捕捉到的波形和数据帧,通常需要互相配合分析通信过程。
4
CAN
不管是I2C还是SPI,是我们最常用的,而且在板间芯片之间应用的最多。还有一种近乎完美的通信方式——CAN通信。CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,是国际上应用最广泛的现场总线之一。
CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN 为底层协议,专为大型货车和重工机械车辆设计的 J1939 协议。近年来,它具有高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。如果你是做工控、汽车或机器人,CAN总线通信是必须要熟练掌握的。
CAN 通信是一种异步通信,只有 CAN_H和 CAN_L两条信号线,共同构成一组差分信号线,它一共有两种电平,隐性电平代表逻辑 1,显性电平代表逻辑 0,在一个时刻只能表示一个信号,所以对通信节点来说, CAN 通信是半双工的,收发数据需要分时进行。在 CAN 的通信网络中,因为共用总线,在整个网络中同一时刻只能有一个通信节点发送信号,其余的节点在该时刻都只能接收。
CAN总线通讯过程是比较复杂的,这里就不做展开了,我们来看看怎样调试CAN总线,因为CAN总线的强大和复杂,调试CAN除了使用示波器和逻辑分析仪,去观察总线的波形畸变以及数据帧监控,还需要用到比较专业的CAN总线分析仪,在调试CAN线常用的就是这台CAN总线分析仪,功能是比较强大的,支持多种CAN标准协议解析,同时,还可以监控总线的负载情况。
这是使用示波器和逻辑分析仪捕捉到的CAN波形和数据帧。这是使用CAN总线分析仪捕捉到的数据,有人可能说使用一种工具也没问题,为啥要用这么多仪器,其实我们使用多种仪器配合调试,是为了快速完成产品的验证和调试,对于一款产品来讲,时间就是销量。
本期视频,讲解了4种工程师必会的通信协议,希望通过我们的讲解,大家可以分得清他们的数据格式了。
Back2School “梦想金”
第六季Back2School:
(https://www.bilibili.com/video/BV1vK48evEF6/)
Back2School往期内容: