0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI、UART、IIC总线之间有什么区别与联系

FPGA之家 来源:CSDN技术社区 作者:EE林 2021-06-21 16:46 次阅读

SPI 总线

SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步、串行通信总线,3~4线接口,以主从模式工作,收发独立,可以实现多个SPI设备互相连接。

提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。

SPI总线由三条信号线组成,分别是SCLK(串行时钟)、SDI(串行数据输入)、SDO(串行数据输出)。当有多个从设备时,还可以增加一条从设备选择线,CS是控制芯片是否被选中的,这样就可以实现在同一总线上多个SPI设备互相连接。

如果用GPIO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

SDI – 主设备数据输入,从设备数据输出;

SDO – 主设备数据输出,从设备数据输入;

SCLK – 时钟信号,由主设备产生;

CS – 从设备使能信号,由主设备控制。

SPI 是一种允许一个主设备启动一个与从设备同步通讯的协议,从而完成数据的交换。SPI是串行协议,也就是说数据是一位一位传输的,这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。

数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。

这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。

SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI接口主要应用在EEPROM、FLASH、实时时钟AD转换器,还有数字信号处理器和数字信号解码器之间。

UART 总线

UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)总线是两线、全双工、异步串口,速度慢。比SPI、I2C这两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上有两根线,一根用于发送,一根用于接收。

数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快,在多机通信上面用的最多。如果用GPIO口模拟UART总线,则需一个输入口,一个输出口。

UART是用于控制计算机与串行设备的芯片,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

作为接口的一部分,UART还提供以下功能:

将由计算机内部传送过来的并行数据转换为输出的串行数据流;

将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用;

在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验;

在输出数据流中加入启停标记,并从接收数据流中删除启停标记;

处理由键盘或鼠标发出的中断信号;

可以处理计算机与外部串行设备的同步管理问题;

有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据。

IIC 总线

IIC(Inter-Integrated Circuit)总线是双向、两线(SCL、SDA)、同步、串行、多主控(multi-master)接口标准,具有竞争检测和总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。

在IIC的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

如果用GPIO口模拟IIC总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。

IIC总线最主要的优点是其简单性和有效性。I2C能用于替代标准的并行总线,能连接各种集成电路和功能模块。只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL。

IIC是多主控总线,总线上每一个设备都有一个独一无二的地址,根据设备自己的能力,任何能够进行发送和接收的设备都能像主控器一样工作,并控制总线。当然,在任何时间点上只能有一个主控,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。

一个主控能够控制信号的传输和时钟频率。同步时钟允许器件通过总线以不同的波特率进行通信。同步时钟可以作为停止和重新启动串行口发送的握手方式。

由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。

串行的8位双向数据传输位速率标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s

片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。IIC使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91582
  • IIC
    IIC
    +关注

    关注

    11

    文章

    300

    浏览量

    38337
  • CS
    CS
    +关注

    关注

    0

    文章

    54

    浏览量

    24522
  • SDO
    SDO
    +关注

    关注

    0

    文章

    5

    浏览量

    5756

原文标题:SPI、UART、IIC总线的区别与联系

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    渗压计和水位计之间什么区别?

    问题,南京峟思今天就来给大家简单的介绍一下:渗压计和水位计之间什么区别?1.渗压计渗压计是一种能够测量水工结构物或其它混凝土结构物及土体内内部的渗透(孔隙)水压力的仪
    的头像 发表于 11-26 15:18 180次阅读
    渗压计和水位计<b class='flag-5'>之间</b><b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    RTOS与Linux到底什么区别

    很多做嵌入式开发的小伙伴都存在这样的疑惑:RTOS与Linux到底什么区别
    的头像 发表于 10-29 09:53 446次阅读

    RS485总线与CAN总线什么区别

    RS485总线与CAN总线都是工业现场通信中常用的总线技术,它们各自具有独特的特点和优势,适用于不同的应用场景。以下是对这两种总线的详细对比分析,旨在全面阐述它们
    的头像 发表于 09-30 11:26 1322次阅读

    stm32u545 spi带boot的和不带boot的什么区别

    stm32u545 spi带boot的和不带boot的什么区别
    发表于 05-23 07:08

    TLE9867 Ch_en和Ch off之间什么区别

    你好,请问 Ch_en 和 Ch off 之间什么区别
    发表于 05-20 06:02

    Ethernet和EtherCAT两者什么区别联系

    Ethernet和EtherCAT两者什么区别联系
    发表于 04-12 07:13

    请问CYW2019B2的SPI1与SPI2什么区别

    请问: CYW2019B2的SPI1与SPI2什么区别SPI接口工作于Slave方式,接收外设的数据。如果设为
    发表于 03-01 08:51

    线路板的层和阶什么区别

    线路板的层和阶什么区别
    的头像 发表于 02-23 17:27 722次阅读

    TC397多核之间数据访问效率什么区别?本地和全局的效率什么区别

    TC397多核之间数据访问效率什么区别,本地和全局的效率什么区别,可不可以将电机同步ADC采集放到主核0,算法在1核执行
    发表于 02-06 07:42

    SPI和QSPI什么区别

    SPI和QSPI什么区别
    发表于 02-06 06:12

    什么是USB HOST、USB Slave和USB OTG?它们之间什么区别

    什么是USB HOST、USB Slave和USB OTG?它们之间什么区别? USB(通用串行总线)是一种用于连接设备的通信接口标准,它允许设备
    的头像 发表于 02-02 15:32 1.3w次阅读

    蓝牙串口通讯总线——I2C/SPI/UART

    Sensor、Touch、蓝牙模块、WIFI模块等也都兼容这三种通信协议的1种以上。那么这三条通信总线什么区别呢?工业物联网无线通信专业厂商为您一一细说—— I2C:半双工、同步、串行传输,物理上只有两根线(SDA/SCL);
    的头像 发表于 01-22 09:41 1652次阅读
    蓝牙串口通讯<b class='flag-5'>总线</b>——I2C/<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>

    电源中的EMI和EMC什么区别

    电源中的EMI和EMC什么区别? 电源中的EMI和EMC是与电磁干扰相关的两个概念,尽管它们一些相似之处,但它们不同的含义和应用领域。在本篇文章中,我们将详细探讨电源中的EMI和
    的头像 发表于 01-19 11:47 1670次阅读

    单模蓝牙模块和双模蓝牙模块指的是什么意思?它们之间什么区别

    单模蓝牙模块和双模蓝牙模块指的是什么意思?它们之间什么区别呢  单模蓝牙模块和双模蓝牙模块是指用于无线通信的蓝牙模块的两种不同类型。它们之间的主要
    的头像 发表于 01-15 14:59 5155次阅读

    什么是串口(UART)?串口的组成和FPGA实现

    串口作为常用的三大低速总线UARTSPIIIC)之一,在设计众多通信接口和调试时占有重要地位。
    的头像 发表于 01-03 11:43 1.5w次阅读
    什么是串口(<b class='flag-5'>UART</b>)?串口的组成和FPGA实现