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

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

3天内不再提示

一文搞懂UART、I2C、SPI协议

STM32嵌入式开发 来源:STM32嵌入式开发 2023-03-26 09:29 次阅读

UARTI2C、SPI都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模块、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。

下面分别说下:

UART

UART一般由TXD、RXD、GND三根线组成,是一种异步传输协议。

无论是主机还是从机,均可以自由发送数据,但是由于UART总线并没有时钟线,所以需要提前约定对应的波特率,这是一种很简单的传输协议。

e2a65a94-ca28-11ed-bfe3-dac502259ad0.jpg

I2C

I2C是两根线,SDA(数据)和SCL(时钟),也是一种同步传输协议。主机在发送开始信号之后,先发送7个比特的地址位和1个比特的读写位,每个从机有自己的I2C地址,当发现该条指令是发给自己的时候,拉低SDA线(即回复ACK信号),然后主机发送或接收数据,完成传输。传输完成之后,主机发送停止位,完成该次传输。

wKgZomQfoBiATa_dAAATJvMracY215.png

SPI

SPI是四根线,分别是CS(片选)、MOSI(主发从收)、MISO(从发主收)、CLK(时钟),是一种同步传输协议。主机送出CLK信号,主机到从机的数据在MOSI线上传输,从机到主机的数据在MISO线上传输。在启动传输之前,需要先拉低(一般是这样,也有各别芯片是CS高有效)对应从机的CS管脚,在传输完成之后,再拉高CS管脚,从机的SPI Slave模块进入休眠。

wKgaomQfoBiAKwsdAAANdoff_uA398.png

使用场景

首先,I2C和SPI都是同步协议,都有时钟信号,在一条总线上也都可以挂多个从设备,但是I2C的从设备是通过地址来区分的,SPI的从设备是通过片选线来区分的,所以SPI总线上,每多挂一个从设备,就要多用一个线作为片选线,而I2C则不用,只要地址不冲突,可以随便挂设备。

但是,I2C总线速度一般普遍慢于SPI,I2C一般的速度是100kbs、400kbps和1Mbps,而SPI的速度可以在几Mbps,也可以10+Mbps。所以看使用场合,低速的话,I2C就挺合适的,如果速度快一些,则一般都要选用SPI。另外,I2C总线的管脚都是开漏输出,必须外接上拉电阻,阻值可以根据总线速度来推算,一般我们常用400kbps传输速率,上拉电阻选用2.2K。

UART和SPI、I2C不同,他是异步传输的,一般来说传输速度比较慢,传统的传输速度一般在115200bps或以下,不过现在大部分UART控制器也能支持到4Mbps或者8Mbps了。UART目前最常用的就是调试接口,因为UART比较简单,所以CPU输出log一般都通过一个UART口来输出。

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

    关注

    2526

    文章

    48110

    浏览量

    740114
  • 通信协议
    +关注

    关注

    28

    文章

    739

    浏览量

    39749
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89620
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1347

    浏览量

    120846
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99969

原文标题:一文搞懂UART、I2C、SPI协议

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPII2CUART三种串行总线协议的区别

    个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口);I2C(INTER IC BUS)UART(Universal Asynchro
    发表于 11-02 09:48

    stm32的i2cSPI

    感觉SPI配置起来要比I2C配置起来要简单多了,I2C还没搞懂!!!!!
    发表于 03-23 16:12

    SPII2CI2S、UART、CAN、SDIO、GPIO的介绍

    SPII2CI2S、UART、CAN、SDIO、GPIO的介绍
    发表于 12-07 11:57

    ARM常用的通讯接口UARTI2CSPI

    的“动作”就被称为“开始位”。通常以将电平拉低段时间来表示通信开始标志。串口通信的缺点就是通信速率较低,且容易出错。I2C通信协议I2C通信是U
    发表于 08-23 08:22

    SPI/I2C/UART/I2S/GPIO/SDIO/CAN如何区分

    SPII2CUARTI2S、GPIO、SDIO、CAN,你能分清楚吗
    发表于 01-14 07:05

    SPI/I2C/UART/I2S/GPIO/SDIO/CAN介绍

    SPII2CUARTI2S、GPIO、SDIO、CAN你能分清楚吗
    发表于 01-25 07:59

    SPI/I2C/UART/I2S/GPIO/SDIO/CAN介绍

    SPII2CUARTI2S、GPIO、SDIO、CAN,你能分清楚吗
    发表于 02-02 06:04

    了解I2C协议

    了解I2C协议,并能够使用I2C将数据写入和读出,I2C协议I2C
    发表于 08-11 08:35

    I2C协议UART协议的区别在哪

    这里写目录标题I2C总线1、I2C协议UART协议的区别
    发表于 12-08 07:58

    终于搞清了:SPIUARTI2C通信的区别与应用

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。之前有单独地分享了SPIUARTI2C通信的文章,这篇对它们做
    发表于 02-14 13:46

    如何同时使用I2CSPI

    你好。我不是说英语的人。对不起我糟糕的英语。的我的代码(包括 I2CSPI)在 STM32F303K8T6 Nucleo 板上成功运行。然而,我的代码包括 I2CSPI,只
    发表于 12-13 07:42

    终于搞清了:SPIUARTI2C通信的区别与应用!

    电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。 之前有单独地分享了SPIUARTI2C通信的文章,这篇对它们做
    发表于 10-07 17:01

    SPII2CUART串行总线协议

    串口通讯通信协议UART,以及常用外设通信协议 SPII2C的介绍与他们之间的区别
    发表于 11-30 11:28 91次下载

    SPII2CUART三种串行总线协议的区别

    SPII2CUART三种串行总线协议的区别
    发表于 07-17 17:23 0次下载

    UARTSPII2C比较 串口通信介绍

    ,较少用于远距离通信。 SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议I2C
    的头像 发表于 11-09 18:06 750次阅读
    <b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口通信介绍