主要介绍一下常见的通信方式以及一些概念:
首先总的介绍一下目前常用的通信协议列表接下来会跟着这张表介绍:
名称 | 引脚 | 双工 | 时钟 | 电平 | 设备 |
USART | TX、RX(GND) | 全双工 | 异步 | 单端 | 点对点 |
I2C | SCL、SDA(GND) | 半双工 | 同步 | 单端 | 多设备 |
SPI | SCLK、MOSI、MISO、CS(GND) | 全双工 | 同步 | 单端 | 多设备 |
CAN | CAN_H、CAN_L | 半双工 | 异步 | 差分 | 多设备 |
USB | DP、DM | 半双工 | 异步 | 差分 | 点对点 |
one_wire | DQ | 半双工 | 无时钟 | 单端 | 多设备 |
介绍之前先了解一些概念:
通信:我们把将一个设备的数据传送到另一个设备,扩展硬件系统。(就像我们人与人之间的交流也就是一种信息数据的传递,也就是一种通信)。单片机通过通信大大提高了使用价值,使得设备走向智能化。
通信协议:根据制定通信的规则,通信双方按照协议规则进行数据收发。
以下是常见概念需要理解记忆:
一 什么叫双工?就是指通信双方在同一时刻是否可以同时接收和发送数据。
两个通信设备,可以同时向对方发送和接收数据,并且不受影响。举例来说;人与人之间说话,同一时刻一般就是一个人说一个人听。但是如果两个人都在说互相听,没有影响。这就是全双工。
当然两个设备都可以同一时刻互相作为发送端,可以作为接收端,不受干扰,这主要是因为他们是两根线的原因。像UART但是发送的数据是要用接收端来接收所以这两根线是交叉的,这个应该很好理解,而SPI有MOSI(Master output slave input:主机输出从机输入),和MISO(Master input slave output:主机输入从机输出)两根线,所以可以同一时刻互相传输数据,不受影响。也是就全双工。(通信双方在同一时刻可以发送和接收数据)。
半双工(Half Duplex)是一种通信模式,它的意思就是通信双方允许数据在两个方向上进行传输,但同一时刻只允许一个方向的传输存在,必须同时复用一根数据线(就是规定这时间内一根接收一根发送),像I2C只有一根数据线SDA,通信双方需要分时复用。
这也就是主机和从机的由来。
而单工就是指数据只能单向传输,由A到B,例如:我们把串口通信去掉一根就是单工通信了。
常见的单工通信就是遥控器。
二 什么叫同步异步?
当通信双方共用一根时钟线就是同步,需要根据时钟线来约定通信时刻。
通信双方需要根据时钟线确定起始位和结束位(什么时候开始发送数据,什么时候停止发送数据),以及加一些校验位,应答位等等。像I2C和SPI就是都用一根时钟线SCL和SCLK根据时钟线确定数据的接收,所以他们都是同步通信。
而像串口通信,就是数据之间的传输,他们有各自的时钟,双方没有共用一根时钟线。但是需要约定采样频率,也就是波特率,他们就是异步通信(没有同步的时钟线)。
三 什么叫电平(信号)?简单来说就是通信双方约定什么是高电平1?什么是低电平0?
本质上来说其实都是数字信号,只不过他们的高低电平定义有所不同。
主要分为两种,单端信号和差分信号。
单端的意思就是,通信双方根据,自身VCC和GND确定什么是高电平什么是低电平?
(在通信当中,我们把高低电平确认为数据0 1当不断地拉高,拉低,就可以当作二进制数据。)
电平对于通信双方本身根据就比较VCC相对于GND之间来定义的。当然不同地通信设备,所采用地电平标准不同,且GND相对于不同平面来说会有电势差,不会是相同的“0”。
所以要求通信双方,要共地,并且要求电平标准要一致(也可以叫做),当不一致时候需要使用电平转换,成为一致。下面是常见的电平标准。
电平标准名称 | 高电平(1) | 低电平(0) | 传输距离 |
TTL电平 (单片机常用) | +5v表示高电平(1) /3.3V表示高电平(1) | ,0v表示0 | 10m |
RS232 (电脑常用) | -3v~-15表示高电平(1) | +3~+15表示低电平(0) | 15m |
RS485 (差分信号) | 两线压差+2~+6V表示高电平(1) | -2~-6V表示低电平(0) | 1000m |
正常情况下,通讯距离:TTL < RS232 < RS485.当然还有更高级的CAN也是差分信号,汽车工业常用比较高深。
单端信号要记住:1.单端通信的双方都需要共地,(也就是把GND连接在同一平面/地方),
2.当单端通信的双方VCC电平标准不一样时,需要添加电平转换,也可以说校 准。
差分信号的优点:抗干扰能力强,常常用于远距离传输。
以上就是需要记忆理解的一些通信概念。