今天来介绍几种常用的总线,SPI,I2C,UART,CAN
先介绍下单工,半双工和全双工概念
单工通信:只支持一个方向的数据传输(比如BB机)
半双工通信:支持双向通信,但是在同一时刻只能向一个方向进行数据传输,(比如对讲机)
全双工通信:双向通信,收发时互不影响,可同时进行,(比如电话)
SPI
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种串行,全双工,同步的通信总线。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线。它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。
I2C
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行半双工总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
I2C的工作原理主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
I2C需要2根线,SDA(串行数据线)和SCL(串行时钟线)。这两跟线都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量
UART
UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
UART有2根线,TX和RX,接法是交叉接的,就是设备1的TX接到设备2的RX,设备1的RX接到设备2的TX,这样才能正常通信。
CAN
CAN是控制器域网 (Controller Area Network)。是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。
CAN总线有2根线,CAN_H和CAN_L。CAN需要接终端电阻,保证CAN网络物理上最远的两个节点有120Ω的终端电阻。