单片机-硬件接口(UART/IIC/SPI/RS232/USB/CAN)异同

2019-04-15 12:39发布

1、中文名  USART:通用同步异步收发器   UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)  I2C(INTER IC BUS:意为IC之间总线) SPI(Serial Peripheral Interface:串行外设接口); RS232:异步传输标准接口  USB:Universal Serial BUS(通用串行总线)  CAN:现场总线
2、数据线的组成 2.1 UART         UART总线是异步串口,,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 2.2 IIC         I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信(如读取MPU6050、MPU9250模块的数据就是用I2C总线)。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
      I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
2.3 SPI         SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。 (1)SDI – SerialData In,串行数据输入; (2)SDO – SerialDataOut,串行数据输出; (3)SCLK – Serial Clock,时钟信号,由主设备产生; (4)CS – Chip Select,从设备使能信号,由主设备控制。 其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。 2.4 RS232/422/485 TTL/RS232/422/485是指的电平标准,多为D型9针串口,协议只有两种:RS-232和RS-485,一般只接出RXD TXD两针,外加GND。 RS232:全双工,电平是副逻辑,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”,传输线只有两根,一般来说,双方还需要一根地线。 RS422:全双工,差分信号,逻辑“0”和逻辑“1”是用两个差分信号的电平差来判断的。 RS485:一般应用两线单工,最大速率10Mb/s,电平逻辑是两线的电平差来决定的,发送端:+2V~+6V逻辑“1”,-2~-6V逻辑                                                              2.5 CAN 参见CAN通讯。 (1)什么是CAN 总线?
           CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。CAN 具有十分优越的特点:
A、较低的成本与极高的总线利用率;
B、 数据传输距离可长达10Km,传输速率可高达1Mbit/s;
C、可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
D、节点在错误严重的情况下具有自动退出总线的功能;
E、报文不包含源地址或目标地址仅用标志符来指示功能信息和优先级信息;
由于人为、自然、其它外界环境的影响和人们对公交系统的安全可靠性、真实、实时性的追求,使得我们对通信方式,通信设备有了更高的要求,基于CAN 总线的网络则成为我们最佳的选择。
            现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有 力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485 基于R 线构建的分布式控制系统而 言, 基于CAN 总线的分布式控制系统在以下方面具有明显的优越性: 首先,CAN 控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且 CAN 协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN 总线构成的网络各节点之间的数据通 信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485 只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行, 系统的实时性、可靠性较差; 其次,CAN 总线通过CAN 控制器接口芯片82C250 的两个输出端CANH 和CANL 与物理总线相连,而CANH 端的状态只能是高电平或悬浮状 态,CANL 端只能是低电平或悬浮状态。这就保证不会出现象在RS-485 网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从 而损坏某些节点的现象。而且CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别 节点出现问题,使得总线处于“死锁”状态。而且,CAN 具有的完善的通信协议可由CAN 控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS- 485 所无法比拟的。另外,与其它现场总线比较而言,CAN 总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些 也是目前 CAN 总线应用于众多领
域,具有强劲的市场竞争力的重要原因。 CAN (Controller Area Network)即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好 的性能及独特的设计,CAN 总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝 马)、PORSCHE(保时捷)、ROLLS-ROYCE(斯莱斯)和JAGUAR(美洲豹)等都采用了CAN 总线来实现汽车内部控制系统与各检测和执 行机构间的数据通信。同时,由于CAN 总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机 械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN 已经形成国际标准,并已被公认为几种最有前途的现场总线之一。
(2) CAN 总线特点?
CAN 是到目前为止为数不多的有国际标准的现场总线
CAN 通讯距离最大是10 公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40 米)。
CAN 总线上的节点数可达110 个。通信介质可在双绞线,同轴电缆,光纤中选择。
CAN 采用非破坏性的总线仲裁技术,当多个节点同时发送数据时,优先级低的节点会主动退出发送,高优先级的节点可继续发送,节省总线仲裁时间。
CAN 是多主方式工作,网上的任一节点均可在任意时刻主动地向网络上其他节点发送信息。
CAN 采用报文识别符识别网络上的节点,从而把节点分成不同的优先级,高优先级的节点享有传送报文的优先权。报文是短帧结构,短的传送时间使其受干扰概率低,CAN 有很好的效验机制,这些都保证了CAN 通信的可靠性。
3、通讯协议 3.1 SPI  SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了。同时传输速度也很高。一般来说要求主设备要有SPI控制器(但可用模拟方式),就可以与基于SPI的芯片通讯了。  SPI 的通信原理很简单,它需要至少4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许 在同一总线上连接多个SPI设备成为可能。  接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原 因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。 完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。      要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。      这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。      SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。      不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 3.2 I2C 只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL。 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器。 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s。        片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。        连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。 3.3 UART  UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 UART常用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
            UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。 COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232。若配有多个异步串行通信口,则分别称为COM1、COM2... 明显可以看出,SPI和UART可以实现全双工,但I2C不行

USART:通用同步异步收发器。(与UART的区别很明显)         USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器。一般而言,单片机中,名称为UART的接口一般只能用于异步串行通讯,而名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯3.4 USB  是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC 领域的接口技术。USB 接口支持设备的即 即用和热插拔功能。USB 是在1994 年底由尔、
4、串行总线的选择 选择串行总线并非易事。除需要考虑数据速率、数据位传输顺序(先传最高位或最低位)和电压外,设计者还应该考虑以下几点: (1)通过何种方式选择某个外设(通过硬件片选输入或软件协议)。 (2)外设如何与µC保持同步(借助一条硬件时钟线,或借助内嵌于数据流中的时钟信息)。 (3)数据是在单根线上传输(在“高”和“低”之间转换),还是在一对差分线上传输(两根线按相反的方向同时转换其电压)。 (4)通信线路的两端均使用匹配电阻实现阻抗匹配(通常用于差分信号传输),还是不匹配或仅在一端匹配(通常用于单端总线)。