Arduino补充篇(三)-- 设计总线时,USB、UART、IIC、SPI、CAN总线该如何选择

1 总线

1.1 总线概述

1、总线的概念

        总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。 如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过主机相连接,外部设备通过相应的接口电路再于总线相连接。

补充:

  • 总线和接口都有相互连接的含义。接口:两个部件连接。总线:多个部件连接。 接口与总线有时也不加区分,合称为总线接口或接口总线等。
  • 接口包括:PCI总线接口、USB串行接口、RS232串行接口、打印机并行接口(老式主板上有)等;
  • USB接口电路:由USB接口底座、电感、滤波电容、电阻排、保险电阻和南桥芯片(USB控制器)等组成。

2、总线的功能

数据传输功能

  • 数据传输功能是总线的基本功能,用总线传输率来表示,即每秒传输的字节数,单位是Mbps(兆字节每秒)。

多设备支持功能

  • 多个设备使用一条总线,首先是总线占用权的问题,哪一个主设备申请占用总线,由总线仲裁器确定。

中 断

  • 中断是计算机对紧急事务响应的机制。当外部设备与主设备之间进行服务约定时,中断是实现服务约定的联络信号。

错误处理

  • 错误处理包括奇偶校验错、系统错、电池失效等错误检测处理,以及提供相应的保护对策。

3、总线的数据传输流程

(1)申请占用总线需要使用总线的总线主设备(如CPU、DMA控制器等)向总线仲裁机构提出占用总线的请求,经总线仲裁机构判定,若满足响应条件,则发出响应信号,并把下一个总线传送周期的总线控制权授予申请者。

(2)寻址获得总线控制权的总线主设备,通过地址总线发出本次要访问的存储器和I/O端口的地址,经地址译码选中被访问的模块并开始启动数据转换。

(3)传送数据总线主设备也叫主模块,被访问的设备叫从模块。主模块和从模块之间的操作是由主模块控制在两个从模块之间通过数据总线进行数据传送。

(4)结束主、从模块的信息均从总线上撤除,让出总线,以便其它主模块使用。

4、微机总线的种类

片内总线

        它是位于大规模、超大规模集成芯片内部各单元电路之间的总线,作为这些单元电路之间的信息通路。如CPU内部ALU、寄存器组、控制器等部件之间的总线。

局部总线(也称内部总线)

        通常指微机主板上各部件之间的信息通路。由于是一块电路板内部的总线,故又称在板局部总线。较典型的局部总线如:IBM-PC总线,ISA总线,EISA总线,VL和PCI总线等。

系统总线(也称外部总线)

        是指微机底板上的总线,用来构成微机系统的各插件板、多处理器系统各CPU模块之间的信道。较典型的系统总线如:STD-BUS,MULTI-BUS,VME等。

通信总线

        它是微机系统与系统之间、微机系统与其它仪器仪表或设备之间的信息通路。这种总线往往不是计算机专有的,而是借用电子工业其它领域已有的总线标准并加以应用形成的。流行的通信总线如:EIA-RS-232C、RS-422A、RS-485,IEEE-488,VXI等总线标准。

5、使用总线技术的优点

  • 简化软、硬件设计:由于总线定义非常严格,任何厂家或个人都必须按其标准制作插件板,有了规范就给用户在硬件设计上带来了很大的方便,简化了设计过程。
  • 简化系统结构:采用标准总线,只要将各功能模块(板)挂在总线上就可以方便的构成微机的硬件系统。
  • 便于系统的扩充:对于采用标准总线构成的微机系统,只要按总线标准和用户扩充要求设计或直接购买插件板插到总线插槽上就达到了扩充的目的。
  • 便于系统的更新:随着电子技术的不断发展,新的器件不断涌现,微机系统也要不断更新,在采用标准总线的插件板上用新的器件取代原来的器件就可以很方便地提高系统性能,而不必做很大改动。

1.2 总线技术的分类

        总线分类的方式有很多,如被分为外部和内部总线、系统总线和非系统总线等等。

1、按功能分类

        最常见的是从功能上来对数据总线进行划分,可以分为地址总线(address bus)、数据总线(data bus)和控制总线(control bus)。 在有的系统中,数据总线和地址总线可以在地址锁存器控制下被共享,也即复用。

        地址总线是专门用来传送地址的。在设计过程中,见得最多的应该是从CPU地址总线来选用外部存储器的存储地址。地址总线的位数往往决定了存储器存储空间的大小,比如地址总线为16位,则其最大可存储空间为216(64KB)。

        数据总线是用于传送数据信息,它又有单向传输和双向传输数据总线之分,双向传输数据总线通常采用双向三态形式的总线。数据总线的位数通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。在实际工作中,数据总线上传送的并不一定是完全意义上的数据。

        控制总线是用于传送控制信号和时序信号。如有时微处理器对外部存储器进行操作时要先通过控制总线发出读/写信号、片选信号和读入中断响应信号等。控制总线一般是双向的,其传送方向由具体控制信号而定,其位数也要根据系统的实际控制需要而定。

2、按传输方式分类

        按照数据传输的方式划分,总线可以被分为串行总线和并行总线(基于各种总线技术设计电路图集锦)。 从原理来看,并行传输方式其实优于串行传输方式,但其成本上会有所增加。通俗地讲,并行传输的通路犹如一条多车道公路,而串行传输则是只允许一辆汽车通过单线公路。目前常见的串行总线有SPI、IIC、USB、IEEE1394、RS232、CAN等;而并行总线相对来说种类要少,常见的如IEEE1284、ISA、PCI等。

3、按时钟信号方式分类

        按照时钟信号是否独立,可以分为同步总线和异步总线。 同步总线的时钟信号独立于数据,也就是说要用一根单独的线来作为时钟信号线;而异步总线的时钟信号是从数据中提取出来的,通常利用数据信号的边沿来作为时钟同步信号。


2 USB

        USB(Universal Serial Bus,通用串行总线)是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC 领域的接口技术。 USB 具有传输速度快、使用方便、支持热插拔、连接灵活、独立供电等优点,可以连接键盘、鼠标、大容量存储设备等多种外设,该接口也被广泛用于智能手机中。

USB 由 Intel、Compaq、Digital、IBM、Microsoft、NEC及Northern Telecom 等计算机公司和通信公司于1995年联合制定,并逐渐形成了行业标准。USB 总线作为一种高速串行总线,其极高的传输速度可以满足高速数据传输的应用环境要求,且该总线还兼有供电简单(可总线供电)、安装配置便捷(支持即插即用和热插拔)、 扩展端口简易(通过集线器最多可扩展127 个外设)、传输方式多样化(4 种传输模式),以及兼容良好(产品升级后向下兼容)等优点。

        了解更多内容,请进入

3 UART

1、组成

        UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)。UART总线是异步串口,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。所以,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。此外,SPI和UART可以实现全双工,但IIC不行。

2、协议

        UART总线是异步串口,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、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……

图1 不同串口协议的特点

补充:

  • UART:包含 TTL 电平和 RS-232 电平两种,嵌入式系统里面,单片机的串口一般都是 TTL 电平。
  • USART:universal synchronous asynchronous receiver and transmitter 通用同步异步收发器。一般而言,单片机中,名称为UART的接口一般只能用于异步串行通讯,而名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯。
  • USB严格意义上也是一种串口通信方式,主要应用于高速数据传输领域。它是 一种四针接口,中间两个针传输数据,两边两个针给外设供电。USB接口速度快、连接简单、不需要外接电源,1.0传输速度可达12Mbps,2.0可达480Mbps,并且支持热插拔。

        了解更多内容,请进入

4 IIC

1、组成

        IIC(INTER IC BUS:意为IC之间总线)。IIC 总线是双向、两线(时钟线SCL、数据线SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟IIC总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。

2、协议

        每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系,软件设定地址,主机可以作为主机发送器或主机接收器。它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整;连接到相同总线的IIC 数量只受到总线的最大电容400pF 限制。

        了解更多内容,请进入

5 SPI

1、组成

        SPI(Serial Peripheral Interface:串行外设接口);SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

2、通信协议

        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设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

        了解更多,请进入

6 CAN

        CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。是 ISO 国际标准化的串行通信协议。

1、CAN总线工作原理

        CAN 总线使用串行数据传输方式,且总线协议支持多主控制器。当CAN 总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。

        每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。

        当一个站要向其它站发送数据时,该站的CPU 将要发送的数据和自己的标识符传送给本站的CAN 芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。

        CAN 芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。

2、CAN的主要特点

  1. 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序。
  2. 支持时间触发通信功能, 发送报文的优先级可软件配置。多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞。
  3. CAN 是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信距离最远可达10KM(速率低于5Kbps),速率可达到1Mbps(通信距离小于40M)。
  4. CAN 总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。
  5. FIFO(First Input First Output),即先进先出队列,溢出处理方式可配置…

        了解更多,请进入

7 串行总线的选择

参考选择一

(1)SPI总线有4根线,分别是SCK,SDO,SDI,SS,可以挂多个从设备,但是在挂多个从设备时,主设备端还需要做一个n选一的译码器,用于选择将要访问的从设备,因此,主设备上的管脚需求比较多。SPI总线在只有一个从设备时,只要用到SCK,SDO,SDI这三根线,此时选择SPI比IIC总线占优。

(2)IIC总线只有两根线,SCL,SDA,也可以挂多个从设备,对从设备的选择直接依靠协议完成,无需增加物理连线。一般情况下,当一块电路板上有多个从设备时,往往选用IIC而非SPI,因为SPI增加了额外额硬件开销以及电路板走线。

(3)IIC和SPI总线一般是读取一些PROM等从设备用。 而串行通信接口SPI(UART?),主要应用在两个智能设备之间的互相通讯。有别于SPI和IIC总线的主从模式,SPI可以是主-主模式。

参考选择二

(1)总线拓扑结构/信号路由/硬件资源耗费

        IIC 只需两根信号线,而标准SPI至少四根信号,如果有多个从设备,信号需要更多。一些SPI变种虽然只使用三根线——SCLK, SS和双向的MISO/MOSI,但SS线还是要和从设备一对一根。另外,如果SPI要实现多主设备结构,总线系统需额外的逻辑和线路。用IIC 构建系统总线唯一的问题是有限的7位地址空间,但这个问题新标准已经解决——使用10位地址。从这一点上看,IIC是明显的大赢家。

(2)数据吞吐/传输速度

        如果应用中必须使用高速数据传输,那么SPI是必然的选择。 因为SPI是全双工,IIC 的不是。SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps。IIC 最高的速度也就快速模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式还需要额外的I/O缓冲区,还并不是总是容易实现的。

(3)优雅性

        IIC 常被称更优雅于SPI。公正的说,我们更倾向于认为两者同等优雅和健壮。IIC的优雅在于它的特色——用很轻盈的架构实现了多主设备仲裁和设备路由。但是对使用的工程师来讲,理解总线结构更费劲,而且总线的性能不高。SPI的优点在于它的结构相当的直观简单,容易实现,并且有很好扩展性。SPI的简单性不足称其优雅,因为要用SPI搭建一个有用的通信平台,还需要在SPI之上构建特定的通信协议软件。也就是说要想获得SPI特有而IIC没有的特性——高速性能,工程师们需要付出更多的劳动。另外,这种自定的工作是完全自由的,这也说明为什么SPI没有官方标准。IIC和SPI都对低速设备通信提供了很好的支持,不过,SPI适合数据流应用,而IIC更适合“字节设备”的多主设备应用。

(4)小结

        在数字通信协议簇中,相对Ethernet, USB, SATA, PCI-Express等传输速度达数百上千兆字节每秒的总线,IIC和SPI常称为“小”协议。但是,我们不能忘记的是各种总线的用途是什么。“大”协议是用于系统外的整个系统之间通信的,“小”协议是用于系统内各芯片间的通信,没有迹象表明“大”协议有必要取代“小”协议。IIC和SPI的存在和流行体现了“够用就好”的哲学。

个人建议:

        IIC 线更少,比UART、SPI更为强大,但是技术上也更加麻烦些,因为IIC需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。最后,IIC的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

        了解更多,请进入


补充:

        单片机总线是一种内部结构,它是CPU、内存、输入、输出公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接。

  • SPI 需要3条线:一条时钟线、一条数据接收线、一条数据发送线。
  • IIC 需要2跳线 :一条时钟线、一条数据线。
  • 单总线,即是用一条数据线来通讯,如DS18B20数字温度传感器。
  • RS-232,用于计算机和计算机或单片机进行数据通讯的。
  • RS-485 、CAN等工业现场总线,用于远距离通讯距离可达1000米。

参考

  1. 总线技术:https://zhuanlan.zhihu.com/p/136854650
  2. 总线,接口详解:https://blog.csdn.net/kinglapland/article/details/86742579
  3. 串行总线:IIC,SPI,UART,USART,USB 的区别和选择
  4. SPI,IIC,UART串行总线介绍:https://blog.csdn.net/qq_29373285/article/details/91349636
  5. SPI、IIC、UART(即串口)三种串行总线详解:https://blog.csdn.net/qq_41179988/article/details/85676362
  6. USART(RS232/422/485)、IIC、SPI、CAN、USB总线:https://blog.csdn.net/tyler880/article/details/104438970
  7. CAN总线:https://zhuanlan.zhihu.com/p/32262127
  8. CAN总线详解:https://blog.csdn.net/qq_31710263/article/details/97015748
  • 3
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值