嵌入式面试题:了解软件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资源、速率低于硬件协议。"

相关推荐
HQB20267 小时前
EG1198|屹晶微电子 120V 内置 MOS 异步降压 DC‑DC(高性价比)
嵌入式硬件·硬件工程
果壳science9 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
南山电子nscn9 小时前
中科芯CETC汽车电池管理系统BMS进口芯片国产型号替代指南
单片机·汽车·bms
沉淀的.晴天9 小时前
can总线
stm32
桀人10 小时前
认识AT24C02
stm32·单片机·嵌入式硬件
国科安芯11 小时前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
一直C11 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
传感器与混合集成电路11 小时前
150MHz主频、8路DAC与6路PWM:JLH221360伺服控制SIP解析
嵌入式硬件
comyccccc12 小时前
STM32PID控制板设计全解析学习笔记
单片机·嵌入式硬件
碧海银沙音频科技研究院12 小时前
实现炬芯ATS308X的usb cdc 串口IAP 固件升级功能实现
人工智能·嵌入式硬件·深度学习·算法