嵌入式面试题:了解软件SPI和软件I2C吗?说一说。

面试回答软件SPI和软件I2C,需聚焦 定义本质+实现核心+优劣势+适用场景,结构清晰且贴合嵌入式开发实际,以下是简洁精准的标准答案:

一、核心定义(先讲清"是什么")

• 软件SPI:不依赖硬件SPI外设,用4个通用GPIO(SCK、MOSI、MISO、CS),通过软件控制引脚电平和延时,模拟SPI同步通信时序的通信方式。

• 软件I2C:不依赖硬件I2C外设,用2个通用GPIO(SCL、SDA,需外接上拉电阻),通过软件精准控制起始/停止信号、数据位、应答位时序,实现I2C通信的方式。

二、实现关键(再讲"怎么实现",面试重点)

  1. 软件SPI:

◦ 核心是"同步时序":通过delay_us()控制SCK时钟周期,MOSI与SCK同步输出数据,MISO在SCK特定边沿采样数据,CS引脚控制从机选通。

◦ 逻辑简单:无需配置复杂外设寄存器,仅需引脚电平翻转和延时函数即可实现。

  1. 软件I2C:

◦ 核心是"严格时序":必须精准实现"起始信号(SCL高时SDA拉低)、数据位(SCL高时SDA稳定)、应答位(从机拉低SDA)、停止信号(SCL高时SDA拉高)"。

◦ 引脚双向:SDA需切换输入/输出模式,用于主机发数据和从机应答。

三、优劣势对比(用表格更直观,面试加分)

特性 软件SPI 软件I2C

引脚需求 4个GPIO(SCK/MOSI/MISO/CS) 2个GPIO(SCL/SDA)+上拉电阻

实现难度 低(时序简单,无需应答) 高(时序严格,需处理应答)

CPU占用 中等(延时期间占用CPU) 高(精准时序需频繁延时)

通信速率 中等(受CPU主频和延时限制) 低(时序约束多,速率更慢)

灵活性 高(可自定义SCK频率和时序) 中等(需遵循I2C标准时序)

四、适用场景(最后讲"什么时候用")

• 软件SPI:硬件SPI外设被占用、需连接少量低速率SPI设备(如传感器、OLED)、自定义时序适配特殊从机。

• 软件I2C:硬件I2C外设不足、需连接多个I2C设备(省引脚)、对速率无要求(如配置寄存器、读取少量数据)。

面试总结模板(直接套用,不啰嗦)

"软件SPI和软件I2C都是用通用GPIO模拟硬件协议的通信方式:软件SPI用4个GPIO,时序简单、CPU占用中等,适合硬件SPI不够或低速率场景;软件I2C用2个GPIO+上拉电阻,时序严格、速率慢,适合省引脚或硬件I2C不足的场景。两者核心优势是引脚灵活、无需依赖硬件外设,缺点是占用CPU资源、速率低于硬件协议。"

相关推荐
米饭不加菜14 分钟前
电平转换电路
经验分享·嵌入式硬件·硬件工程
老k一步步来14 小时前
STM32 HAL库CAN通信核心函数详解,参数以及作用
stm32·单片机·嵌入式硬件
gwf21614 小时前
SSD读写速度深度解析:顺序读写vs随机读写、IOPS、延迟,你的硬盘性能到底怎么看?
git·嵌入式硬件·缓存·github·智能硬件
Freak嵌入式18 小时前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
wuyk55518 小时前
77.嵌入式 C 语言中 enum 枚举的工程化实践:告别魔法数字,提升代码可维护性
c语言·开发语言·stm32·单片机·嵌入式硬件
义嘉泰18 小时前
XT25F128F-W Flash芯片全面解析
人工智能·嵌入式硬件·芯片
QH1392923188019 小时前
Keysight N9917B N9918B手持式综合微波分析仪
网络·科技·嵌入式硬件·集成测试·信息与通信
longxingiot19 小时前
轻量化单片机数传终端降低物联网开发门槛
单片机·嵌入式硬件·物联网
亿道电子Emdoor20 小时前
【Arm】MSP和PSP的区别简介
c语言·arm开发·单片机·mcu