说出来你可能不信,我见过不少候选人在面试的时候,一被问到I2C和SPI的区别,张嘴就来:"一个快一个慢"。然后...就没有然后了,场面一度非常尴尬。
说实话,这也不能全怪大家。这两个协议确实有点像——都是串行通信、都能接传感器、都能跟MCU对话。但正因为太像了,很多人才会习惯性地用"速度差异"来一刀切,结果错过展示真正理解的机会。
今天咱们就来好好聊聊,I2C和SPI到底有什么区别,面试的时候怎么回答才能让面试官眼前一亮。
先说I2C——省线狂魔的设计哲学I2C(Inter-Integrated Circuit)这玩意儿,最早是飞利浦在80年代初搞出来的。当时的诉求很简单:**能用更少的线,就别用更多的线**。所以它只用了两根线——SCL(时钟线)和SDA(数据线),就能挂一堆从设备。

有意思的是,这两根线还是**开漏输出**的设计,需要外部加上拉电阻。这就有意思了,为啥要这么干?
按我的经验,主要是三个原因:
第一,防止短路。 如果两个设备同时输出,一个高一个低,直接就短路了。开漏输出只能拉低或释放,不会直接输出高电平,安全得多。
第二,实现"线与"功能。 I2C的多主机仲裁就是靠这个——谁先把总线拉低,谁就占主导权。
第三,电平兼容。 只需要换不同的上拉电阻到不同电压,就能让3.3V和5V设备在同一条总线上和平共处。
I2C另外一个特点就是**每个从设备都有唯一的地址**,软件来寻址。这就意味着你可以在总线上挂很多设备,主控通过地址来选择跟谁对话。不过地址这事也有坑——很多设备的地址是固定的,如果你要接两个同型号的传感器,可能就得用硬件引脚来改地址,或者...换别的型号。
再聊SPI——速度狂人的独门秘籍SPI(Serial Peripheral Interface)跟I2C完全不是一个路数。它是摩托罗拉整出来的,走的是**全双工、高速度**的路线。

SPI最少需要四根线:SCK(时钟)、MOSI(主出从入)、MISO(主入从出)、CS(片选)。四根!比I2C多了一倍,看起来挺浪费的。但实际上这恰恰是SPI的优势所在。
**为什么这么说?**
你想啊,I2C用两根线既要传数据又要传时钟,还得处理复杂的仲裁逻辑,速度自然就受限了。SPI不一样,**时钟和数据各走各的**,不需要等待,可以跑得飞快——标准模式都能到几十MHz,高端传感器甚至能到百MHz级别。
而且SPI是**一主一从**的固定关系。主设备通过独立的片选信号来选择从设备,不需要软件寻址。这意味着从设备可以设计得更简单,响应速度更快。
踩坑提醒: SPI虽然快,但线多是真的。如果你的MCU引脚不够用,或者板子空间紧张,接一堆SPI设备可能让你怀疑人生。我之前就遇到过做手环项目,恨不得把所有传感器都用I2C,就为了省那几根线。
到底怎么选?场景说了算
其实面试的时候,面试官最想听的可能不是标准答案,而是你**能不能根据实际场景做判断**。说几个我自己的经验:
场景一:EEPROM存储——我基本都会用I2C。为啥?存储芯片不需要高速度,容量一般也不大,I2C够用,而且一颗I2C EEPROM才几个引脚,省板子空间。
场景二:高清摄像头或者高速ADC——必须是SPI或者更快的接口。这类场景数据量太大,I2C那点带宽根本不够看。
场景三:多个传感器同时工作——得看情况。如果传感器需要全双工、实时性高,SPI更合适;如果只是采集状态、速度要求不高,I2C能省很多IO。
面试加分回答模板最后给你一个我觉得还不错的回答框架,面试的时候可以直接用:
📋 回答要点- 协议原理:I2C是两线制、开漏输出、软件寻址;SPI是四线制、全双工、硬件片选
- 性能差异:SPI速度更快(百MHz级别),I2C较慢(标准400kHz,高速模式也就3.4MHz)
- 实际选型:根据速度需求、引脚数量、多设备兼容性来综合判断
- 踩坑经验:I2C要注意上拉电阻选型和地址冲突,SPI要注意片选数量和布线长度
记住,面试不是在考你背书,而是看你**能不能把知识用起来**。如果你能结合自己做过的项目聊聊这两个协议的实际应用,面试官绝对会对你刮目相看。
好了,关于I2C和SPI的区别,今天就聊到这儿。有问题欢迎留言,咱们下期见!

扫码关注









































