缩写 全称 翻译 备注
I2C Inter-Integrated Circuit 集成电路总线 通信协议
SPI Serial Peripheral Interface 串行外设接口 通信协议
QSPI Queued SPI 队列串行外设接口 通信协议
COM Serial Communication 串口通信 通信协议
CAN Controller Area Network 控制器局域网络 通信协议
ETH 通信协议
EIA Electronic Industries Alliance 电子工业协会 组织机构
U(S)ART Universal(Synchronous)Asynchronous
Receiver and Transmitter
通用(同步)异步收发器 设备

一、基本概念

保证收发方数据内容一致性:

  • 同步:使用时钟信号线,收发双方按时钟信号上升沿或下降沿对数据线进行采样(优点:信号的有效载荷多、但对双方时钟允许误差较小)
  • 异步:不用时钟信号线,在数据内容的前后,增加起始bit、校验bit、停止bit等用于同步,可能需要双方约定数据的传输速率(双方时钟允许误差大)

数据传输方式:

  • 串行:逐个bit依次传输,需要几根数据线、控制线、地线等(优点:通信距离远、抗干扰能力强、成本低)
  • 并行:多个bit同时传输,需要8N根数据线等(优点:传输速率更高)

数据传输方向:

  • 全双工:两个设备之间可同时收发数据
  • 半双工:两个设备之间可收发数据,但不能同时进行
  • 单工:两个设备之间,一个固定为发送设备,另一个固定为接收设备

通信协议:复杂问题用分层来简化

  • 物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。
  • 协议层:主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

总线(Bus):多个设备共用的一组信号线

共地(GND):设备之间必须要使用同一根地线连接,以防止影响收发双方的电平信号

比特率(Bitrate):每秒钟传输的二进制位数,单位为bit/s(bps)

波特率(Baudrate):每秒钟传输的码元数,单位为baud/s(Bps),当前提是一个码元=一个bit时,波特率和比特率可以混用

码元:信号调制时候,信号电压大小分别所代表的几种数值,eg.通常为用 0V 表示数字 0,5V 表示数字 1,一个码元代表两种状态1和0,此时一个码元=一个bit

二、I2C

由 Phiilps 公司开发的,同步半双工串行通信,由于它引脚少(硬件实现简单、扩展性强)、支持多主多从通信

1.物理层

I2C总线:由SDA数据线(半双工串行)、SCL时钟线组成,所有设备共用。

  • 数据线:SDA
  • 时钟线:SCL(Serial Clock),传输速率分为标准模式100kbps、快速模式400kbps、高速模式3.4Mbps(大部分I2C设备不支持)

寻址(选择从机):使用广播从机地址(SLAVE_ADDRESS)方式

  • 每个I2C设备都有一个唯一独立的地址,规定地址长度为7bit或10bit

  • 当广播SLAVE_ADDRESS=某个I2C设备地址时,该设备为从机,没被选中的设备将丢掉之后的数据。

  • 所有设备共地。

  • 总线的上拉电阻(1~10K):当 I2C 设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。

  • 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制。

  • 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用

    总线。

2.协议层

2.1 协议约定

通信起始/停止信号:

  • 起始信号(S) :当SCL=1时,SDA=↓下降沿
  • 停止信号(P) :当SCL=1时,SDA=↑上升沿

数据有效性:

  • 当SCL=1时,数据必须保持不变(采样)
  • 当SCL=0时,数据才能发生变化(触发)

时钟同步(SDA为半双工)

  • 每个时钟周期:当SCL=1时,可在SDA发送1bit数据。
  • 读写选择(RW):0-写数据,主机作为发送端;1-读数据,从机作为发送端。
  • 前8个周期:发送端控制SDA,按MSB先行,连续发送8bit数据(DATA)。
  • 第9个周期:接收端控制SDA,发送0-应答信号(ACK)/1-非应答信号(NACK)。

2.2 基本通信过程

建立连接

主机:起始信号、7bit从机地址、1bit读写选择

从机:应答信号

数传开始

发送端:1Byte数据、接收端:应答信号

发送端:1Byte数据、接收端:应答信号

...

发送端:1Byte数据、接收端:应答/非应答信号

数传结束

主机:停止信号

断开连接

主机想结束数据传输:

  • 当主机为发送端,发送停止信号即可
  • 当主机为接收端,需要主机发送非应答信号(令从机不再发送数据),然后主机再发送停止信号。



斜线:主机发送、无斜线:从机发送

当SCL=1时,SDA=0为应答信号、SDA=1为非应答信号

  • 多主机:同时使用总线时,会利用仲裁方式决定哪个主机占用总线(防止数据冲突)

2.3 复合通信过程

建立连接

主机:起始信号、7bit或10bit地址、1bit读写选择RW=0

从机:应答信号

数传开始(发送从机寄存器或存储器地址)

发送端:1Byte数据、接收端:应答信号

...

发送端:1Byte数据、接收端:应答信号

数传结束

主机:重发起始信号、7bit或10bit地址、1bit读写选择RW

数传开始(读写从机寄存器或存储器的数据)

发送端:1Byte数据、接收端:应答信号

...

发送端:1Byte数据、接收端:应答/非应答信号

数传结束

主机:停止信号

断开连接

三、SPI

由摩托罗拉公司提出,高速同步全双工串行通信,支持一主多从

1. 物理层

SPI总线:由SDO、SDI数据线(全双工串行)、SCK时钟线组成,所有设备共用。

  • 发送线(主机→从机):SDO(SerialDataOut)、MOSI(MasterOutSlaveIn)
  • 接收线(主机←从机):SDI(SerialDataIn)、MISO(MasterInSlaveOut)
  • 时钟线:SCK(Serial Clock),由通讯主机产生,传输速率受限于低速设备,传输速率为5Mbps。

寻址(选择从机):使用CS线方式

  • CS(Chip Select,片选)、SS(SlaveSelect、从机选择)、NSS
  • 每个SPI设备都有一个唯一独立的CS线,占用主机的一个IO引脚
  • 主机令某个设备的CS=0,该设备为从设备,其他设备CS=1未被选中

所有设备共地

2.协议层

2.1 协议约定

通信起始/停止信号:

  • 以CS=0为起始信号
  • 以CS=1为停止信号

时钟同步

  • 当CS=0时,SCK为时钟信号,每个时钟周期,主机在SDO发送1bit数据、从机在SDI发送1bit数据,MSB 先行或 LSB 先行没有作硬性规定(一般MSB 先行)
  • 当CS=1时,SCK要么是保持高电平要么是保持低电平 (由CPOL决定)。

通信模式(CPOL,CPHA):

  • 时钟极性CPOL:当CS=1时,SCK=CPOL保持不变
  • 时钟相位 CPHA:0-奇数边沿采样、1-偶数边沿采样
  • 主机一般按照从机的要求来设置通信模式,模式0和模式3比较常用

    总结:若CPOL=CPHA,0-上升沿采样;若CPOL≠CPHA,1-下降沿采样

数据有效性(模式0或模式3):

  • 当SCK=上升沿↑时,SDO、SDI数据保持不变(采样)
  • 当SCK=下降沿↓时,SDO、SDI数据可发生变化(触发)

2.2 基本通信过程

建立连接

主机:令某个从机的CS=0、SCK产生时钟信号

数传开始(模式0或模式3)

当SCK=上升沿↑时,MOSI,MISO作为收发数据

数传结束

主机:令某个从机的CS=1、SCK=CPOL保持不变

断开连接

3.半双工方案:

SPI读写NOR Flash时,很少有需要全双工的情况,所以改为半双工模式

SPI方案 线数 信号线 每个时钟传输
SPI 3-wire SCLK、CS、SIO0 1bit
Dual SPI 4-wire SCLK、CS、SIO0、SIO1 2bit
Quad SPI 6-wire SCLK、CS、SIO0、SIO1、SIO2、SIO3 4bit

原SDO改成SIO0、原SDI改成SIO1或不用

三、串口COM

1 物理层:RS-232

1.1 RS-232的简介

EIA-RS-232-C:《DTE和DCE之间串行二进制数据交换接口技术标准》

  • EIA是牵头制定标准的组织缩写。
  • RS是英文Recommand Standard(推荐标准)的缩写。
  • 232为标识号。
  • C表示修改次数。
  • DTE:数据终端设备,主要为PC端、路由器。
  • DEC:数据通讯设备,主要为调制解调器。
  • 1970 年由EIA、贝尔系统、调制解调器厂家、计算机厂家制定的物理接口标准
  • 最早用于PC端、路由器等和调制解调器之间通信传输
  • 规定数据传输速率(波特率,调制速率):50、75、100、150、300、600、1200、2400、4800、9600、19200

1.2 RS-232的电平标准

常见电平标准 逻辑1 逻辑0 备注
RS-232标准 -15V到-3V 3到15V 远距离传输:增加抗干扰能力
需要电平转换器(MAX3232芯片)
TTL 标准 2.4V到5V 0到0.5V 一般情况

通信设备的控制器TTL标准电平转换芯片RS-232标准

1.3 D型数据接口连接器

  • 形状类似于英文字母D,用于连接电子设备的接口标准。
  • 根据针数分为:A-15针、B-25针、C-37针、D-50针、E-9针
  • 最初RS-232的连接器采用了DB-25:一个主通道和一个辅助通道、
  • 后来RS-232的连接器简化成DE-9:但人们习惯称为DB-9,作为事实标准(IBM在PC 机上广泛使用)

1.4 DB-9接口

  • 公头(插头):以针式引出信号线(DTE端)
  • 母头(插座):以孔式引出信号线(DEC端)
  • 公头和母头镜像对称,RXD和TXD交叉连接
线序 名称 符号 实际使用
3 发送数据 TXD 发送数据
2 接收数据 RXD 接收数据
5 信号地 GND 共地

其余6根线:早期modem和终端通信使用,现已被裁剪

线序 名称 符号 作用
1 载波检测 DCD modem:已检测终端的载波信号
4 数据终端就绪 DTR 终端:终端已上电,可通信
6 数据设备就绪 DSR modem:modem已上电,可通信
7 请求发送 RTS 终端:请modem发送数据
8 清除发送 CTS modem:终端可发送数据
9 振铃指示器 RI modem:有呼叫

2. 协议层

数据包结构:

时钟同步

  • 异步通讯没有时钟线:双方按约定各自产生相同时钟信号(可存在误差),再按各自时钟信号收发数据
  • 按波特率,产生时钟信号,收发数据:常用波特率为9600bps、19200bps、115200bps,需要双方约定

通信起始/停止信号:

  • 起始位:逻辑0(长度为1个)
  • 停止位:逻辑1(长度为0.5、1、1.5、2个),需要双方约定

数据校验位:需要双方约定

校验类型 名称 算法
noparity 无校验 不含校验位
space 0校验 校验位总是0
mark 1校验 校验位总是1
odd 奇校验 有效数据和校验位中“1”的个数为奇数
even 偶校验 有效数据和校验位中“1”的个数为奇数

有效数据:

  • 长度为5bit、6bit、7bit、8bit,需要双方约定

总结:通信前要约定:波特率Band、数据位长度Data-bits、数据校验类型Parity、停止位长度Stop-bits

四、CAN

由德国 BOSCH公司开发的(研发和生产汽车电子产品),并最终成为国际标准(ISO11519),异步半双工通信

1.物理层

1.1 差分信号

使用两个信号线(V+、V-)的电压差值表示逻辑0和逻辑1

  • 抗干扰能力强:外界噪声会同时耦合到两个信号线上、共模噪声被完全抵消
  • 抑制电磁干扰:两根信号的极性相反,对外辐射电磁场抵消
  • 时序定位精准:差分信号的开关变化是位于两个信号的交点,相对于阈值电压,受工艺、温度影响小,降低时序误差,适用于低幅度信号电路

1.2 CAN的信号线

只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

总线网络 标准 速度 距离 电阻
闭环 ISO11898 高速≤1Mbps 短距离≤40m 两端各120Ω电阻构成闭环
开环 ISO11519-2 低速≤125kbps 远距离通信≤1km 每根线串联2.2KΩ电阻开环
  • CAN控制器:实现协议
  • CAN收发器:实现电平转换(TJA1050芯片:TTL电平信号差分信号)



1.3 逻辑0和逻辑1

2.协议层

异步通讯没有时钟线:双方按约定各自产生相同时钟信号(可存在误差),再按各自时钟信号收发数据

位同步:接收端按正确的时钟节拍接收

每个时刻只有一个作为发送端,其他作为接收端

通信技术 Communication的更多相关文章

  1. web端通信技术

    1.web端通信技术:长连接.长轮询.websocket; 什么是长连接.长轮询? 就是客户端不停的向服务器发送请求以获取最新的数据信息.这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它 ...

  2. NFC (Near Filed Communication)

    NFC的用途:近场通信(Near Field Communication,NFC),又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据 ...

  3. 自学华为IoT物联网_02 常见物联网通信技术

    点击返回自学华为IoT物流网 自学华为IoT物联网_02 常见物联网通信技术 两类技术: 有线通信技术 无线通信技术 一. 有线通信技术 1.1 物联网有线技术介绍及对比 ETH 主要用于支持以太网标 ...

  4. Arduino硬件之NCF技术(近场通信技术)

    Arduino硬件之NCF技术(近场通信技术) 版权转载:https://blog.csdn.net/import_sadaharu/article/details/52437488 Android硬 ...

  5. Serial Communication Protocol Design Hints And Reference

    前面转载的几篇文章详细介绍了UART.RS-232和RS-485的相关内容,可以知道,串口通信的双方在硬件层面需要约定如波特率.数据位.校验位和停止位等属性,才可以正常收发数据.实际项目中使用串口通信 ...

  6. RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

    前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...

  7. RS-232 vs. TTL Serial Communication(转载)

    RS-232串口一度像现在的USB接口一样,是PC的标准接口,用来连接打印机.Modem和其他一些外设.后来逐渐被USB接口所取代,现在PC上已经看不到它的身影了.开发调试时如果用到串口,一般都是用U ...

  8. MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0

    最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...

  9. ORA-03113: end-of-file on communication channel

    导致的原因,可能是异常断电导致文件状态不一致. SQL> startupORACLE instance started. Total System Global Area 1653518336 ...

  10. Mac下遇到 'reading initial communication packet’ 问题

    今天在开发过程中,一个单位跑的好好的项目,在家中的Mac下运行时,遇到了下面这个错误:   "Lost connection to MySQL server at 'reading init ...

随机推荐

  1. pentaho(keetle)数据同步实践

    pentaho(keetle)数据同步实践 1 pentaho简介 pentaho可读作"彭塔湖",在keetle被pentaho公司收购后改名而来. pentaho是一款开源ET ...

  2. Programming abstractions in C阅读笔记:p91-p106

    <Programming Abstractions In C>学习第45天,p91-p102,完成第二章内容学习.总结如下: 一.技术总结 1.垃圾回收 p91,"Some la ...

  3. 【opencv】传统图像识别:hog+svm行人识别实战

    实战工具:python3.7+pycharm+opencv4.6算法知识:HOG特征提取.SVM模型构建实战目的:本次实战的目的是熟悉HOG+SVM工作流算法,初步掌握图像分类的传统算法.实战记录:本 ...

  4. python列表的增删

    list = [1, 2, 3, 4]# 打印后两位print(list[-2:])# 打印前2位print(list[:2])# 修改列表元素list[0] = 5print(list)# 添加元素 ...

  5. GaussDB技术解读系列:高安全之密态等值

    本文分享自华为云社区< DTCC 2023专家解读 | GaussDB技术解读系列:高安全之密态等值>,作者:GaussDB 数据库. 近日,在第14届中国数据库技术大会(DTCC2023 ...

  6. Java 设计模式实战系列—单例模式

    本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式. 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单 ...

  7. 如何调用API接口获取淘宝商品数据

    淘宝商品数据的获取是一项非常重要的技术,它可以为淘宝卖家和买家提供有利的数据分析和扩展市场的机会.调用API接口是一种快速.方便.高效的方式获取淘宝商品数据. 以下是一些步骤来调用API接口来获取淘宝 ...

  8. c++中的宏#define用途

    宏的一些作用,包括但不限于这些 定义一个变量.字符串.类型 定义一个函数.条件表达式 条件编译.调试信息,异常类 定义结构体.命名空间 定义模版.枚举.函数对象 #define宏定义在C++中用于定义 ...

  9. charts自适应

    大屏echarts自适应文字大小 1.在utils中创建 setFontSize.js function setFontSize(val) { const baseSize = 50; let sca ...

  10. 支持JDK19虚拟线程的web框架,之三:观察运行中的虚拟线程

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<支持JDK19虚拟线程的web ...