首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >嵌入式面试必备:I²C 主机抉择、SPI 中断配置与逻辑谜题解析

嵌入式面试必备:I²C 主机抉择、SPI 中断配置与逻辑谜题解析

作者头像
紫昭
发布2025-11-29 08:49:47
发布2025-11-29 08:49:47
80
举报

一、引言

在嵌入式系统的面试中,常常会涉及到通信协议、中断处理以及逻辑思维等多方面的问题。比如 I²C 通信里如何确定主机数量,SPI 通信中中断该怎么配置,还有像用最少老鼠找出毒药这类考察逻辑思维的题目。本文将对这些常见的嵌入式面试问题进行详细剖析,助力大家在面试中脱颖而出。

二、I²C 连接二十几个设备时主机数量的选择

2.1 单主机系统与多主机系统对比

系统类型

优点

缺点

适用场景

单主机系统

架构简单,易于实现和管理;不存在主机间仲裁问题,成本较低

对数据传输实时性支持有限,所有通信依赖一个主机,若主机故障,影响整个系统

对实时性要求不高,由一个中心节点集中管理控制的场景,如智能家居系统

多主机系统

能提高系统并行处理能力和响应速度,多个主机可实时快速与从设备交互及主机间数据共享协同

需要仲裁机制,系统复杂;过多主机可能使仲裁复杂,影响性能

多个主机需实时与从设备交互,及主机间需数据共享协同的场景,如工业自动化控制系统

2.2 单主机系统成本较低的体现
  • 硬件成本:仅需一个具有 I²C 主控制器功能的芯片或模块作为主机,减少了多个主设备芯片及相关电路成本,且电路板设计和布线简单,降低了制造成本。
  • 软件成本:程序逻辑简单,开发者只需编写一套主设备与多个从设备之间通信的控制程序,无需处理多个主机间的协调、仲裁等复杂逻辑,减少了开发工作量和难度,降低了成本和时间成本。
  • 调试与维护成本:故障排查容易,数据流向和控制单一,出现问题时易定位是主机还是某个从设备的故障,降低了调试和维护的人力、时间成本。
2.3 主机间仲裁问题
  • 仲裁的必要性:多主机 I²C 系统中,多个主机有权发起数据传输,同时使用总线会产生冲突,导致数据传输错误或丢失,因此需要仲裁机制确保数据传输的正确性和完整性。
  • 仲裁的实现方式
    • 基于地址和数据的仲裁:I²C 总线上每个设备有唯一地址,主机发送数据时先发送目标从设备地址。仲裁时,主机边发送边监听总线,若发现自己发送的地址或数据与其他主机不一致,且其他主机数据优先级更高(如地址更小),则放弃总线控制权。
    • 时钟同步仲裁:I²C 总线时钟信号可由主机产生,多主机同时发送数据时,会尝试产生自己的时钟信号,但总线上时钟信号由频率较高的主机主导。若某个主机时钟信号与总线实际信号不一致,会调整同步,无法同步则放弃总线控制权。
  • 仲裁的过程
    • 总线空闲检测:多个主机先检测总线是否空闲,只有空闲时才尝试发起数据传输。
    • 开始条件竞争:多个主机可能同时发送开始条件信号,总线上信号按逻辑规则竞争,最终只有一个主机的开始条件信号有效,其他主机检测到不一致则判断仲裁失败并停止发送。
    • 数据传输仲裁:数据传输中,多个主机逐位比较总线上的数据,若发现自己发送的数据位与总线上实际数据位不一致,且总线上数据位与优先级更高的主机一致,就立即停止发送,放弃总线控制权。

三、SPI 中断配置流程

3.1 引脚初始化

先对相关引脚进行初始化,确保硬件连接和功能正常。这是中断配置的基础,引脚配置错误可能导致后续中断无法正常触发。

3.2 使能中断源

不同的外设具有不同的中断源,需要根据具体需求使能相应的中断。例如在 SPI 通信中,可能需要使能接收完成中断、发送完成中断等。

3.3 配置 NVIC 中断分组

例如设置抢占优先级与子优先级的比例为 2:2 。合理的中断分组可以确保系统在多中断源的情况下,能够按照预期的优先级处理中断。

3.4 配置 NVIC 中断通道

为产生中断的外设分配中断通道,并设置其优先级,然后使能中断通道。这一步骤决定了哪个外设的中断会被系统响应以及响应的先后顺序。

3.5 编写中断函数

编写处理中断事件的具体函数。中断函数是中断处理的核心,需要在其中完成数据处理、状态更新等操作。

3.6 主程序调用初始化函数

在主程序中调用上述初始化函数,完成中断配置。只有在主程序中正确调用初始化函数,整个中断系统才能正常工作。

四、用最少老鼠找出毒药问题

这是一个运用二进制思维解决的问题。因为 23 大于 2 的 4 次方,小于 2 的 5 次方,所以最少需要 5 只小老鼠就能找出毒药。

解题思路为:给小老鼠和药水分别进行编号。例如药水 7 号对应的二进制为(00111),若最后第三、第四、第五只小老鼠死亡,就可以确定 7 号药水是毒药。具体操作是将每瓶药水编号转化为 5 位二进制数,若某一位是 1,则给对应编号的老鼠喂该药水,24 小时后根据老鼠死亡情况组合成二进制数,其对应的十进制数就是毒药编号。这类逻辑问题在面试中能很好地考察候选人的思维能力和解决问题的能力。

五、总结

通过对 I²C 主机数量选择、SPI 中断配置以及逻辑谜题的分析,我们可以看到嵌入式面试题目涵盖了硬件、软件以及逻辑思维等多个方面。掌握这些知识点和解题思路,不仅能帮助我们在面试中取得好成绩,也能提升我们在实际嵌入式开发中的能力。希望本文能为大家的嵌入式学习和面试准备提供有益的参考。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言
  • 二、I²C 连接二十几个设备时主机数量的选择
    • 2.1 单主机系统与多主机系统对比
    • 2.2 单主机系统成本较低的体现
    • 2.3 主机间仲裁问题
  • 三、SPI 中断配置流程
    • 3.1 引脚初始化
    • 3.2 使能中断源
    • 3.3 配置 NVIC 中断分组
    • 3.4 配置 NVIC 中断通道
    • 3.5 编写中断函数
    • 3.6 主程序调用初始化函数
  • 四、用最少老鼠找出毒药问题
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档