通信技术 Communication
缩写 | 全称 | 翻译 | 备注 |
---|---|---|---|
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的更多相关文章
- web端通信技术
1.web端通信技术:长连接.长轮询.websocket; 什么是长连接.长轮询? 就是客户端不停的向服务器发送请求以获取最新的数据信息.这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它 ...
- NFC (Near Filed Communication)
NFC的用途:近场通信(Near Field Communication,NFC),又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据 ...
- 自学华为IoT物联网_02 常见物联网通信技术
点击返回自学华为IoT物流网 自学华为IoT物联网_02 常见物联网通信技术 两类技术: 有线通信技术 无线通信技术 一. 有线通信技术 1.1 物联网有线技术介绍及对比 ETH 主要用于支持以太网标 ...
- Arduino硬件之NCF技术(近场通信技术)
Arduino硬件之NCF技术(近场通信技术) 版权转载:https://blog.csdn.net/import_sadaharu/article/details/52437488 Android硬 ...
- Serial Communication Protocol Design Hints And Reference
前面转载的几篇文章详细介绍了UART.RS-232和RS-485的相关内容,可以知道,串口通信的双方在硬件层面需要约定如波特率.数据位.校验位和停止位等属性,才可以正常收发数据.实际项目中使用串口通信 ...
- RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)
前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...
- RS-232 vs. TTL Serial Communication(转载)
RS-232串口一度像现在的USB接口一样,是PC的标准接口,用来连接打印机.Modem和其他一些外设.后来逐渐被USB接口所取代,现在PC上已经看不到它的身影了.开发调试时如果用到串口,一般都是用U ...
- MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...
- ORA-03113: end-of-file on communication channel
导致的原因,可能是异常断电导致文件状态不一致. SQL> startupORACLE instance started. Total System Global Area 1653518336 ...
- Mac下遇到 'reading initial communication packet’ 问题
今天在开发过程中,一个单位跑的好好的项目,在家中的Mac下运行时,遇到了下面这个错误: "Lost connection to MySQL server at 'reading init ...
随机推荐
- pentaho(keetle)数据同步实践
pentaho(keetle)数据同步实践 1 pentaho简介 pentaho可读作"彭塔湖",在keetle被pentaho公司收购后改名而来. pentaho是一款开源ET ...
- Programming abstractions in C阅读笔记:p91-p106
<Programming Abstractions In C>学习第45天,p91-p102,完成第二章内容学习.总结如下: 一.技术总结 1.垃圾回收 p91,"Some la ...
- 【opencv】传统图像识别:hog+svm行人识别实战
实战工具:python3.7+pycharm+opencv4.6算法知识:HOG特征提取.SVM模型构建实战目的:本次实战的目的是熟悉HOG+SVM工作流算法,初步掌握图像分类的传统算法.实战记录:本 ...
- python列表的增删
list = [1, 2, 3, 4]# 打印后两位print(list[-2:])# 打印前2位print(list[:2])# 修改列表元素list[0] = 5print(list)# 添加元素 ...
- GaussDB技术解读系列:高安全之密态等值
本文分享自华为云社区< DTCC 2023专家解读 | GaussDB技术解读系列:高安全之密态等值>,作者:GaussDB 数据库. 近日,在第14届中国数据库技术大会(DTCC2023 ...
- Java 设计模式实战系列—单例模式
本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式. 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单 ...
- 如何调用API接口获取淘宝商品数据
淘宝商品数据的获取是一项非常重要的技术,它可以为淘宝卖家和买家提供有利的数据分析和扩展市场的机会.调用API接口是一种快速.方便.高效的方式获取淘宝商品数据. 以下是一些步骤来调用API接口来获取淘宝 ...
- c++中的宏#define用途
宏的一些作用,包括但不限于这些 定义一个变量.字符串.类型 定义一个函数.条件表达式 条件编译.调试信息,异常类 定义结构体.命名空间 定义模版.枚举.函数对象 #define宏定义在C++中用于定义 ...
- charts自适应
大屏echarts自适应文字大小 1.在utils中创建 setFontSize.js function setFontSize(val) { const baseSize = 50; let sca ...
- 支持JDK19虚拟线程的web框架,之三:观察运行中的虚拟线程
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<支持JDK19虚拟线程的web ...