485 CAN 单总线 SPI I2C :1、是什么 2、特点3、协议 4、使用方法 5、区别 6通信方式

一、485

是什么:485(一般称作 RS485/EIA-485)是隶属于 OSI 模型物理层的电气特性规定为 2 线,半双工, 多点通信的标准。它的电气特性和 RS-232 大不一样。用缆线两端的电压差值来表示传递信号。 RS485 仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。

特点:

接口电平低,不易损坏芯片。RS485 的电气特性:逻辑“1”以两线间的电压差为 +(2~6)V 表示;逻辑“0”以两线间的电压差为-(2~6)V 表示。接口信号电平比 RS232 降低了, 不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。

传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在 1200m 时, 传输 速度可达 100Kbps。

抗干扰能力强。RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能 力 增强,即抗噪声干扰性好。

传输距离远,支持节点多。RS485 总线最长可以传输 1200m 以上(速率≤100Kbps) 一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点, 最大的可以支持到 400 个节点。

通信协议:Modbus协议

通信:

通信接口的远程重数据采集方法,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接受,因此具有抑制共模干扰的能力。它的电气特性是逻辑“1”以两线间电压差+(2-6)V表示;逻辑“0”以两线间电压差-(2-6)V表示。这样接口信号电平比RS232降低了,不易损坏接口电路芯片,且与TTL电平兼容。

RS485通常指半双工(如果说“全双工RS485”,那实际上指RS422),因此RS485使用相同的传输线,可以发送和接收数据,但不能同时发送和接收数据。任何时候,数据只能由一方发送,另一方接收。所以,在半双工模式下可以使用一条或两条数据线即可建立通信。

CAN:

CAN是Controller Area Network的缩写,是ISO国际标准化的串行通信协议。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

特点:

1、多主控制。总线空闲时,所有单元都可发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址)决定优先级。两个以上的单元同时开始发消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(优先级最高)的单元可以继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

2、系统柔软性。连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其它单元的软硬件和应用层都不需要做改变。

3、速度快、距离远。最高1Mbps(距离<40M)最远可达10KM(速率<5Kbps)。

4、具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其它所有单元(错误通知功能),正在发消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复的重新发送此消息直到成功发送为止(错误挥发功能)。

5、故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引次故障的单元从总线上隔离出去。

6、连接节点多。CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟以及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN控制器根据CAN_L和CAN_H上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。显性电平对应逻辑:0 CAN_H和CAN_L之差为2V左右。隐性电平对应逻辑:1 CAN_H和CAN_L之差为0V。

显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐性电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻来做阻抗匹配,以减少回波反射。

通信是用5种类型的帧进行的:数据帧、遥控帧、错误帧、过载帧、间隔帧。

单总线:

是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点

特点:单总线结构的特点是控制简单、可扩展性强,但系统工作效率较低,总线易成为计算机系统的瓶颈。在多总线结构中,不同速度的设备连接在不同的总线上,各总线通过总线桥芯片进行连接,其特点是在不影响可扩展性的同时,可提高总线传输性能,如不同总线速度不同、多条总线可以同时传输。节省I/O资源,结构简单、成本低廉、便于总线扩展维护等优点。

协议:单总线协议单总线协议与其他所有的数据通信传输方式一样,单总线芯片在数据传输过程要求采用严格的通信协议,以保证数据的完整性。

单总线协议主要分为初始化总线协议,读总线协议和写总线协议.

单总线初始化协议过程大致如下:先输出低电平,至少保持480us,一般在480us到960us之间,接着输出高电平,延时15~60us.这个时候51单片机就进入了接收模式,这个时候从机需要60到240us发送一个低电平脉冲,如果这时主机接收到的是低电平,就需要主机从开始进入接收模式到初始化结束至少延时480us,这才算是完成了单总线通信的初始化‘。

单总线写时序协议过程大致如下:但总线协议的写时序还主要分为写0和写1,本身它的传输也是低位传输。整个写时序的时间至少需要60us,并且两次写时序的时间间隙至少是1us.写1时序主要是先输出低电平,延时2us,然后写1,延时50us.写0时序,先写0,延时60us,然后写1,延时2us的时间.

单总线读时序协议过程大致如下:整个读时序的时间至少需要60us,而且两次读时序的时间间隙至少是1us.主机先输出低电平2us,然后延时12us,这个时候主机进入接收模式,读取当前的电平状态,然后再延时50us,读取数据也是从低位开始读取。与SPI、I²C串行数据通信方式不同,它采用单根信号线传输。

SPI:

SPI是串行外设接口(Serial Peripheral Interface)的名称缩写。

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

SPI的通信原理如下:

SPI的通信原理非常简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也是可以的(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

SPI目前有3种规格,3种SPI的处理流程大同小异,以目前使用最多的SPI-4为例来说明SPI的原理。它在发送接口和接收接口都有各自的数据通道和流控状态信息通道,其数据通道和流控状态信息通道是独立的并且是点对点通信。

优点:

SPI优点支持全双工通信

通信简单

数据传输速率块

特点:

(1):高速、同步、全双工、非差分、总线式

(2):主从机通信模式5、SPI电路连接

I2C:

1、I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的设备之间传送信息。

2、主设备用于启动总线传送数据,并产生时钟以开放传送的设备,此时任何被寻址的设备均被认为是从设备.总线上主设备和从设备、发数据设备和收数据设备的关系不是恒定的,而取决于此时数据传送方向。

3、如果主设备要发送数据给从设备,则主设备首先要寻址从设备,然后主动发送数据至从设备,最后由主设备终止数据传送;如果主设备要接收从设备的数据,首先由主设备寻址从设备.然后主设备接收从设备发送的数据,最后由主设备终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

I2C通信设备原理

1、硬件结构:通信只需要两根传输线,结构上及其简单。

①SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。

②SDA(serial data): 数据线,通信数据都通过SDA线传输。

2、通信特征:串行、同步、非差分、低速率

①I2C属于串行通信,所有的数据以位为单位在SDA线上串行传输。

②同步通信就是通信双方工作在同一个时钟下,一般是通信的A方通过一根CLK信号线传输A自己的时钟给B,B工作在A传输的时钟下。所以同步通信的显著特征就是:通信线中有CLK

③非差分。因为I2C通信速率不高,而且通信双方距离很近,所以使用电平信号通信。

④低速率。I2C一般是用在同一个板子上的2个IC之间的通信,而且用来传输的数据量不大,所以本身通信速率很低(一般几百KHz,不同的I2C芯片的通信速率可能不同,具体在编程的时候要看自己所使用的设备允许的I2C通信最高速率,不能超过这个速率)

3、通信方向:主设备+从设备

①I2C通信的时候,通信双方地位是不对等的,而是分主设备和从设备。通信由主设备发起,由主设备主导,从设备只是按照I2C协议被动的接受主设备的通信,并及时响应。

②谁是主设备、谁是从设备是由通信双方来定的(I2C协议并无规定),一般来说一个芯片可以只能做主设备、也可以只能做从设备、也可以既能当主设备又能当从设备(软件配置)。

4、一对多通信

①I2C通信可以一对一(1个主设备对1个从设备),也可以一对多(1个主设备对多个从设备)。

②主设备来负责调度总线,决定某一时间和哪个从设备通信。注意:同一时间内,I2C的总线上只能传输一对设备的通信信息,所以同一时间只能有一个从设备和主设备通信,其他从设备处于“冬眠”状态,不能出来捣乱,否则通信就乱套了。

③每一个I2C从设备在通信中都有一个I2C从设备地址,这个设备地址是从设备本身固有的属性,然后通信时主设备需要知道自己将要通信的那个从设备的地址,然后在通信中通过地址来甄别是不是自己要找的那个从设备。(这个地址是一个电路板上唯一的,不是全球唯一的)

5、主要用途

①主要用途:SoC和周边外设之间的通信(典型的如EEPROM、电容触摸IC、各种sensor等)

数据在总线上的传输协议

①I2C通信时的基本数据单位也是以字节为单位的,每次传输的有效数据都是1个字节(8位)。

②起始位及其后的8个clk中都是主设备在发送(这设备掌控总线),此时从设备只能读取总线,通过读总线来得知主设备发给从设备的信息;然后到了第9周期,按照协议规定从设备需要发送ACK给主设备,所以此时主设备必须释放总线(主设备把总线置为高电平然后不要动,其实就类似于总线空闲状态),同时从设备试图拉低总线发出ACK。如果从设备拉低总线失败,或者从设备根本就没有拉低总线,则主设备看到的现象就是总线在第9周期仍然一直保持高,这对主设备来说,意味着我没收到ACK,主设备就认为刚才给从设备发送的8字节不对(接收失败)。

区别:

第一,从硬件上讲,传输数据时的电气特性不同,比如逻辑1和0对应的电平状态;时序不同。

第二,因为硬件的原因导致他们的传输距离不同。485可以长达1500米,i2c和spi也就局限于板级的距离,几十厘米吧。232也就1米多。

第三,传输速度不同,232和485的波特率最高的也就115.2K,再高的也有却不常用。i2c和spi的可以达到几十M,因为距离很短的嘛。

双工:比如有两个设备进行连接通信,A和B。如果任何时间数据只能单向传输,从A到B,那么就是单工;如果一个时间可以从A到B,然后下一时间从B到A,但是不能同时双向就是半双工;如果同一时间可以双向同是发送数据,就是全双工。

RS485、I2C和SPI不一样。

RS485、I2C通讯协议中包含从机的地址,从机都不主动发送数据,主机发送数据,数据包中包含有从机地址,主机发送的数据,所有从机都接收,主机发送完后,转为接收状态。从机接收到数据包后,检测地址与自己的地址一致,就做应答发送数据。地址不一致,就不处理。所以RS485、I2C总线中的从机地址不能重复。

SPI是通过片选信号实现选择从机,没有被选择的从机,是不结收数据的。

RS485常见 2 线 半双工

RS485标准 里 有 四线 全双工

RS232是3线全双工

接口是全双工还是半双工关键看它有几根线,双工至少收发各一条线

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值