常见通信协议

1、串口:(串行异步全双工,先发低位)

因为是异步的,所以没有时钟线,因为是全双工,所以有两条数据传输线,实现数据的收发。

帧格式

起始位1位,数据位8位,校验位1位(可有可无),停止位1位

串口通信存在的问题:

1)串口只是规定了协议,即帧格式,用高电平表示1,低电平表示0,但是在不同的处理器中这个定义是不一样的机电气特性不一样,所以这两个处理器是不能直接连

2)抗干扰能力差,使用的是 TTL 信号表示0和1,TTL信号中3.3-5V表示逻辑1

3)通信距离短,只能用于一个电路板上的两个不同芯片之间的通信

由于串口通信存在的问题就出现了RS232、RS485协议,但是软件编程还是串口那样编程,因为改的只是硬件上的电性

1.2     RS232

  1. 无论是RS232还是RS485底层都是串口,只是在电特性上面做了些修改,使得改善串口的问题
  2. (接口)RS232有9根线,在异步通信中一般只使用其中的RXD TXD GND
  3. (信号)规定逻辑1的电平为-5V到-15V,逻辑0的电平为+5V到+15V,提高了抗干扰能力,传输距离一般可达15m

由于我们处理器的电平是TTL电平达不到RS232这个电平要求,所以中间还需要一个转换过程,一般使用 MAX232这款芯片,把TTL电平转为RS232

1.3    RS485

485 (一般称作 RS485/EIA-485 )隶属于 OSI 模型物理层,是串行通讯的一种。电气特性规定为 2 线,半双工,多点通信的类型。它的电气特性和 RS-232 大不一样。用双绞线的电压差值来表示传递信号。RS485 仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。
RS485 的特点包括:
1 , 接口电平低,不易损坏芯片。 RS485 的电气特性:逻辑“ 1 ”以两线间的电压差为 +(2~6)V 表 示;逻辑“0 ”以两线间的电压差为 -(2~6)V 表示。接口信号电平比 RS232 降低了,不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。
2 , 传输速率高。 10 米时, RS485 的数据最高传输速率可达 35Mbps ,在 1200m 时,传输速度可达 100Kbps
3 , 抗干扰能力强。 RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
4 , 传输距离远,支持节点多。 RS485 总线最长可以传输 1200m 左右,更远的距离则需要中继传输设备支持但这时(速率≤100Kbps )才能稳定传输,一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。

2、IIC:(串行同步半双工 高---->低)

同步的,有时钟线SCL;  半双工的,有一根数据线实现收发SDA

帧格式:

起始位1位,从机地址8位(一字节数据),应答位1位

通信过程:

1、主机发送起始信号启用总线,这时总线就处于被占用状态

2、主机发送一字节的从机地址数据,也就是8bit,低7位决定从机地址,第8位决定主机是接收还是发送数据,也就是确定数据传输方向

3、被寻址的从机发送1位应答信号回应主机

4、主机再发送一字节数据

5、从机回应1位

重复4、5

6、通信完成主机发送停止信号释放总线

细节补充:

主机如何确定?

不同的器件定义地址的方式是不同的,有的是软件定义,有的是硬件定义。

起始信号和停止信号怎么产生?

起始:在SCL为高电平时,SDA由高变低

停止:在SCL为高电平时,SDA由低变高

比如IIC总线上接了两块单片机,一块是主机,另一块是从机,如何定义从机的这个地址?
如果是带IIC的单片机,会有地址寄存器,寄存器里的值即为它作为从机时的地址。

3、SPI:(串行同步全双工  高-->低)

同步的,有时钟线;  全双工的,有两条数据线实现收发; 另外还有片选线

至少四根线

帧格式

通信过程

先发送高位再发送低位,发送完一个字节之后无需应答即可开始下个字节,没有起始,结束,应答信号,直接发送数据

在时钟线SCL下降沿或者上升沿时,发送器将数据发送到数据线,在紧接着的上升沿或者下降沿接收器从数据线接收数据

细节补充:

极性和相位------>确定了是上升沿发数据还是收数据

SPI总线有四种工作模式,取决于极性CPOL和相位CPHA

1)CPOL表示 空闲时的状态

CPOL=0,空闲时SCLK为低电平

CPOL=1,空闲时SCLK为高电平

2)CPHA表示采样时刻

CPHA=0,每个周期的第一个时钟沿采样--->读取数据

CPHA=1,每个周期的第二个时钟沿采样----->读取数据

4、CAN总线

CAN Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“ 减少线束的数量 、“通过多 LAN ,进行大量数据的高速通信 的需要, 1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后, CAN 通过 ISO11898 ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。
CAN 协议具有一下特点:
多主控制。 在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID )决定优先级。 ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
系统的柔软性。 与总线相连的单元没有类似于 地址 的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
通信速度较快,通信距离远。 最高 1Mbps (距离小于 40M ),最远可达 10KM (速率低于 5Kbps)。
具有错误检测、错误通知和错误恢复功能。 所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
故障封闭功能。 CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
连接节点多。 CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。
正是因为 CAN 协议的这些特点,使得 CAN 特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
CAN 协议经过 ISO 标准化后有两个标准: ISO11898 标准(高速 CAN )和 ISO11519-2 标准 (低速 CAN )。其中 ISO11898 是针对通信速率为 125Kbps~1Mbps 的高速通信标准,而 ISO11519- 2 是针对通信速率为 125Kbps 以下的低速通信标准。
CAN 类似 RS485 也是通过差分信号传输数据。根据 CAN 总线上两根线的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。这是属于物理层特征,ISO11898物理层特性如图 39.1.1.2 所示:

帧格式:

CAN 协议是通过以下 5 种类型的帧进行的:
数据帧
遥控帧
错误帧
过载帧
间隔帧
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。
数据帧的格式如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值