常见硬件通信协议总结
本文最后更新于 103 天前,其中的信息可能已经有所发展或是发生改变。
常见通信协议总结

一、协议的分类

常见通信协议通常可以分为并行通信协议和串行通信协议。

  • 并行通信:在同一时刻发送多位数据(可以是多根线)。优点:发送速度快;缺点:传输距离短,资源占用多。
  • 串行通信:用一根线在不同的时刻发送8位数据。优点:传输距离远,占用资源少;缺点:发送速度慢。

二、通信方式的分类

通信的方式可以分为:全双工、半双工、单工。

  • 单工通信:只能接受或者发送。例如:收音机、遥控器等,一般只有一根线;
  • 半双工通信:在同一时刻只能发送或者接收。例如:对讲机,至少有两根线;
  • 全双工通信:在同一时刻既能接收又能发送。例如:电话,至少有两根线。

三、常见硬件通信协议

1. SPI协议

1)协议介绍

SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今主流的微控制器都集成有SPI接口,如Stm32家族。

2)原理

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。

产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机(一般来说可以是微控制器/MCU),但是可以有多个从机(后面详细介绍);

数据的采集时机可能是时钟信号上升沿(从低到高)或下降沿(从高到低)。

SPI总线包括4条逻辑线,定义如下:

  • MISOMaster input slave output 主机输入,从机输出(数据来自从机);
  • MOSIMaster output slave input 主机输出,从机输入(数据来自主机);
  • SCLKSerial Clock 串行时钟信号,由主机产生发送给从机;
  • CSChip Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

img

其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(通常为低电平有效),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。

整体的传输大概可以分为以下几个过程:

  • 主机先将CS信号拉低,这样保证开始接收数据;
  • 接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);
  • 主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;
  • 主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送。

img

图源见水印

3)SPI模式

a. 时钟极性:CKP/Clock PolarityCPOL

除了配置串行时钟速率(频率)外,SPI主设备还需要配置时钟极性

时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

CKP可以配置为1或0。可以根据需要将时钟的默认状态(IDLE)设置为高或低。

  • CKP = 0:时钟空闲IDLE为低电平 0
  • CKP = 1:时钟空闲IDLE为高电平1
b. 时钟相位:CKE /Clock Phase (Edge)CPHA

除配置串行时钟速率和极性外,SPI主设备还应配置时钟相位(或边沿)

顾名思义,时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿;

  • CKE = 0:在时钟信号SCK的第一个跳变沿采样;
  • CKE = 1:在时钟信号SCK的第二个跳变沿采样。

image-20240326162808836

c. 模式编号
SPI ModeCPOLCPHA
0 [00]00
1 [01]01
2 [10]10
3 [11]11

4)多从机模式

a. 多NSS
  1. 通常,每个从机都需要一条单独的SS线。
  2. 如果要和特定的从机进行通讯,可以将相应的NSS信号线拉低,并保持其他NSS信号线的状态为高电平;如果同时将两个NSS信号线拉低,则可能会出现乱码,因为从机可能都试图在同一条MISO线上传输数据,最终导致接收数据乱码。
b. 菊花链

在数字通信世界中,在设备信号(总线信号或中断信号)以串行的方式从一个设备依次传到下一个设备,不断循环直到数据到达目标设备的方式被称为菊花链

  1. 菊花链的最大缺点是因为是信号串行传输,所以一旦数据链路中的某设备发生故障的时候,它下面优先级较低的设备就不可能得到服务了;
  2. 另一方面,距离主机越远的从机,获得服务的优先级越低,所以需要安排好从机的优先级,并且设置总线检测器,如果某个从机超时,则对该从机进行短路,防止单个从机损坏造成整个链路崩溃的情况;

菊花链模式充分使用了SPI其移位寄存器的功能,整个链充当通信移位寄存器,每个从机在下一个时钟周期将输入数据复制到输出。

5)优缺点

a. 优点
  • 全双工串行通信;
  • 高速数据传输速率;
  • 简单的软件配置;
  • 极其灵活的数据传输,不限于8位,可以是任意大小的字;
  • 非常简单的硬件结构。从机不需要唯一地址(与I2C不同);从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同);不需要收发器(与CAN不同)。
b. 缺点
  • 没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
  • 通常仅支持一个主设备;
  • 需要4根引脚(与I2C不同);
  • 没有定义硬件级别的错误检查协议;
  • 与RS-232和CAN总线相比,传输距离非常短;

2. IIC协议

1)协议介绍

I2C(IIC)属于两线式串行总线,由飞利浦公司开发用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线,属于(一主多从一个主设备(Master),多个从设备(Slave))的总线结构总线上的每个设备都有一个特定的设备地址,以区分同一I2C总线上的其他设备

image-20240326114724941

物理I2C接口有两根双向线,串行时钟线(SCL)串行数据线(SDA)组成,可用于发送和接收数据,但是通信都是由主设备发起,从设备被动响应,实现数据的传输。

IIC极低的工作电流,降低了系统的功耗,完善的应答机制大大增强通讯的可靠性。

a. IIC的5种传输速率

I2C协议可以工作在以下5种速率模式下,不同的器件可能支持不同的速率。

  • 标准模式(Standard):100kbps
  • 快速模式(Fast):400kbps
  • 快速模式+(Fast-Plus):1Mbps
  • 高速模式(High-speed):3.4Mbps
  • 超快模式(Ultra-Fast):5Mbps(单向传输)

image-20240326155754559

其中超快模式是单向数据传输,通常用于LED、LCD等不需要应答的器件,和正常的I2C操作时序类似,但是只进行写数据,不需要考虑ACK应答信号。

b. 4种信号

I2C协议最基础的几种信号:起始、停止、应答和非应答信号

(a)起始信号

A HIGH to LOW transition on the SDA line while SCL is HIGH defines a START condition.

image-20240326160700180

(b)停止信号

A LOW to HIGH transition on the SDA line while SCL is HIGH defines a STOP condition.

image-20240326160819467

过程如下:

image-20240326161009187

I2C协议对数据的采样发生在SCL高电平期间,除了起始和停止信号,在数据传输期间,SCL为高电平时,SDA必须保持稳定,不允许改变,在SCL低电平时才可以进行变化。

(c)应答信号

I2C最大的一个特点就是有完善的应答机制,从机接收到主机的数据时,会回复一个应答信号来通知主机表示“我收到了”。

应答信号出现在1个字节传输完成之后,即第9个SCL时钟周期内,此时主机需要释放SDA总线,把总线控制权交给从机,由于上拉电阻的作用,此时总线为高电平,如果从机正确的收到了主机发来的数据,会把SDA拉低,表示应答响应。

image-20240326162033077

使用MCU、FPGA等控制器实现时,需要在第9个SCL时钟周期把SDA设置为高阻输入状态,如果读取到SDA为低电平,则表示数据被成功接收到,可以进行下一步操作。

(d)非应答信号

当第9个SCL时钟周期时,SDA保持高电平,表示非应答信号。

(e)数据有效性

I2C协议对数据的采样发生在SCL高电平期间,除了起始和停止信号,在数据传输期间,SCL为高电平时,SDA必须保持稳定,不允许改变,在SCL低电平时才可以进行变化。

image-20240326162509973

c. 读写时序

向指定寄存器地址写入指定数据操作时序:

image-20240326163819396

从指定寄存器地址读取数据操作时序:

image-20240326164041052

读数据时有两次起始信号:S和Sr。

d. 为什么IIC要加上拉电阻?

I2C协议中规定I2C的SCL和SDA都是开漏(OD)输出,开漏输出只能输出低电平不能输出高电平。根据I2C总线规范,总线空闲时两根线都必须为高,故需要上拉电阻来使其能够稳定地输出高电平。

总结:

  1. 给I/O确定的电平,不易受外界干扰;
  2. 接上拉的开漏输出结构可以作为外部的输入I/O。
e. IIC上拉电阻该如何选择?

(这部分先偷个懒,后面再写

3. CAN协议

1)协议介绍

控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用途延伸到其他自动化和工业应用。CAN协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1Mb/s、同时具有11位的寻址以及检错能力。

2)通信原理

CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。

当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

4. UART协议

1)协议介绍

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

具体实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备。一般是RS-232C规格的,与类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配,作为连接外部设备的接口。在UART上追加同步方式的序列信号变换电路的产品,被称为USART(Universal Synchronous Asynchronous Receiver Transmitter)。

2)通信原理

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

img

其中各位的意义如下:

  • 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
  • 数据位:紧接着起始位之后,通常采用ASCII码。从最低位开始传送,靠时钟定位。
  • 奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
  • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
  • 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
  • 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是

5. USB协议

1)协议简介

通用串行总线(Universal Serial Bus,USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。

image-20240326173749130

a. 通信接口

USB 通讯接口

b. 编码方式

USB 编码方式

这种编码方式也称为反向不归零编码(NRZI)

位填充:在数据进行NRZI编码前,每6个连续的1信号之后都会插入1个0信号,以避免长时间电平保持不变带来的同步漂移。

2)标准USB接口

下图为标准USB A型连接器(左)及B型连接器(右)。

USB

标准USB接口的信号使用分别标记为的双绞线传输,它们各自使用半双工差分信号并协同工作,以抵消长导线的电磁干扰。

触点功能(主机)功能(设备)
1
2
3
4接地接地

3)USB Type-C接口

USB Type-C,又称USB-C,是一种通用串行总线(USB)的硬件接口形式,外观上最大特点在于其上下端完全一致,与USB Type-A相比不再区分USB正反面。

a)引脚说明

image-20240326175114286

母头,内凸:

公头,内凹避免线路外露:

USB_Type-C_plug_pinout

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇