硬件工程师面试题 21-30

news2025/1/4 15:02:49

        把常见的硬件面试题进行总结,方便及时巩固复习。其中包括网络上的资源、大佬们的大厂面试题,其中可能会题目类似,加强印象即可。


更多硬件面试题:
硬件工程师面试题 1-10
硬件工程师面试题 11-20


21、单片机最小系统需要什么?

        单片机最小系统是指能够使单片机芯片正常运行并发挥其功能所必需的最少硬件电路集合。它主要由以下几个关键部分组成:

  1. 电源:为单片机提供稳定的直流电源供电,确保单片机能够正常工作。常见51系列通常需要5V直流电源,STM32系列需要3.3V。
            电源电路可能包括直流电源稳压模块、滤波电容以及电源指示灯等元件,其中直流电源稳压模块用于将输入的交流电转换为稳定的直流电,滤波电容则用于滤除电源中的杂波干扰。
  2. 时钟(晶振)电路:是单片机正常运行的关键部分。提供了单片机运行所需的时钟信号,用于单片机的计时、延时、同步等操作,是单片机内部各部件协调工作的基础。
    通常由晶振和相关的电容、电阻等元件组成,能够产生稳定的频率信号,确保单片机按照预定的时间周期执行指令。典型的晶振频率有11.0592MHz和12MHz等。
  3. 复位电路:在单片机上电初期或发生异常情况时,复位电路能够确保单片机处于一个可控的初始状态,避免系统启动时出现异常。
    通常由复位按钮、电容和电阻等元件组成。当复位按钮被按下时,复位电路会产生一个高电平信号,使单片机内部各电路状态恢复到确定的初始值,并从这个状态开始工作。

22、FreeRTOS移植最重要的是什么

        FreeRTOS移植过程中最重要的是确保移植后的系统能够在目标硬件上稳定运行,并满足应用需求。

一、文件与文件夹的添加与删除

  1. 添加必要文件:从FreeRTOS官方下载的源码包中,将必要的文件和文件夹添加到自己的工程中。通常包括FreeRTOS的内核文件、配置文件、端口文件等。
  2. 删除无关文件:删掉portable文件夹中与自己芯片无关的部分,以减小工程体积并提高编译效率。

二、中断函数的处理

  1. 删除本地中断处理函数:在移植FreeRTOS之前,需要删除本地原有的中断处理函数。
  2. 添加FreeRTOS中断处理函数:将FreeRTOS中的三个主要中断处理函数(如PendSV_HandlerSVC_HandlerSysTick_Handler)进行声明,并确保能被正确调用。

三、配置文件调整

  1. 修改FreeRTOSConfig.h:这是FreeRTOS的核心配置文件,需要根据目标硬件和应用需求进行详细的调整。包括但不限于设置是否使用抢占式内核、时间片调度、任务优先级、堆栈大小、时钟节拍频率等参数。
  2. 配置中断优先级:在STM32等基于ARM Cortex-M系列的单片机上,需要配置NVIC的中断优先级分组,并确保FreeRTOS的中断优先级设置合理。

四、内核代码适配

  1. 任务管理:确保FreeRTOS的任务管理功能能够在目标硬件上正常工作,包括任务的创建、删除、挂起、恢复等。
  2. 内存管理:如果使用动态内存分配功能,需要确保FreeRTOS的内存管理模块与目标硬件的内存管理单元(如MMU)兼容。
  3. 时间管理:配置FreeRTOS的时钟节拍源和节拍频率,以确保系统能够按照预定的时间周期执行任务调度。

五、端口代码移植

  1. 硬件抽象层:根据目标硬件的特性,编写或修改FreeRTOS的端口代码,以实现对硬件的抽象和封装。
  2. 外设驱动:如果FreeRTOS需要使用到外设(如UART、SPI、I2C等),需要确保这些外设的驱动代码已经正确移植到目标硬件上。

六、其他注意事项

  1. 编译器兼容性:确保使用的编译器与FreeRTOS兼容,并正确配置编译环境。
  2. 调试与测试:在移植过程中,需要进行充分的调试和测试,以确保FreeRTOS能够在目标硬件上稳定运行并满足应用需求。可以使用调试器、日志输出等方式进行调试测试。

23、DC-DC与LDO区别

DC-DC转换器和LDO(低压差线性稳压器)是两种常见的电源管理技术.

  1. 工作原理

    • LDO:采用线性调节方式,通过调整可变阻抗元件(如MOSFET)的导通状态,将多余的输入电压转化为热量来降低电压。其内部通常使用P沟道MOSFET,通过负反馈控制输出电压的稳定性。
    • DC-DC:采用开关调节方式,通过快速开关控制电感和电容的充放电过程,将输入电压转换为所需的输出电压。其工作原理包括开关元件的导通和截止状态切换,通过脉宽调制(PWM)调节输出电压。
  2. 效率

    • LDO:效率较低,尤其在输入输出电压差较大的情况下,效率更低,通常在40%
    • DC-DC:效率较高,尤其在输入输出电压差较大的情况,效率可达80%以上
  3. 输出特性

    • LDO:输出纹波小,负载响应快,噪声低,适用于对电源质量要求较高的场合,但输出电流能力有限,通常不超过几安培。
    • DC-DC:输出纹波较大,负载响应较慢,但带载能力强,适合需要大电流输出的应用。
  4. 输入输出电压范围

    • LDO:适用于输入电压稍高于输出电压的场合,输入输出电压差不能太大,通常要求输入电压比输出电压高出1~2V。
    • DC-DC:输入电压范围较宽,可以实现升压、降压或升降压等多种拓扑结构。
  5. 成本与复杂性

    • LDO:外围元件少,电路简单,成本低。
    • DC-DC:外围元件多,电路复杂,成本较高。
  6. 应用场景

    • LDO:适用于对电压稳定性要求高但功率需求不大的场合,如传感器、微控制器
    • DC-DC:适用于需要高效率、大电流输出的场合,如手机、通信设备和医疗设备

24、PSRR是什么,单位是什么

        应用LDO、DCDC、运放的时候,规格书中都会标准PSRR这个指标

PSR为电源抑制(Power Supply Rejection),即电源到输出增益的抑制,

PSRR为电源抑制比( Power Supply Rejection Ratio),即输入到输出的增益除以从电源到输出的增益。描述了电路抑制任何电源变化传递到其输出信号的能力

        单位是dB

电源抑制比(PSRR)的基础知识_psrr电源抑制比-CSDN博客

25、iic时序?随机读取一个字符的过程?iic设备出问题的时候怎么排查?上拉电阻对iic速率有没有影响?

I²C时序

I²C通信协议的时序要求非常严格,主要包括以下几个关键信号和状态:

  1. 起始信号(Start Condition):当SCL(串行时钟线)为高电平时,SDA(串行数据线)由高电平变为低电平,表示一个起始信号的开始。这标志着一次通信的起始。
  2. 停止信号(Stop Condition):当SCL为高电平时,SDA由低电平变为高电平,表示一个停止信号的结束。这标志着一次通信的结束。
  3. 数据传输:在SCL为低电平时,SDA可以变化数据;而在SCL为高电平时,SDA必须保持稳定,以便接收方能够正确地读取数据。数据是逐位传输的,高位在前,低位在后。
  4. 应答信号(Acknowledge):在接收方成功接收到一个字节的数据后,它会在SCL的高电平期间将SDA拉低,产生一个应答信号(通常为0)。如果接收方没有应答(例如,由于缓冲区已满或地址不匹配等原因),则它会在SCL的高电平期间保持SDA为高电平(无应答信号,通常为1)

随机读取一个字符的过程

在I²C通信中,随机读取一个字符通常涉及以下步骤:

  1. 发送起始信号:主机产生并发送起始信号到从机,表示一次通信的开始。
  2. 发送设备地址和写控制命令:主机发送从机的设备地址,并设置读写控制位为低电平,表示将对从机进行写数据操作。同时,主机还需要发送要访问的从机内部寄存器的地址(即字地址)。注意,这些地址和命令的发送都是高位在前,低位在后。
  3. 接收应答信号:从机接收到设备地址和写控制命令后,会回传一个应答信号。如果主机接收到应答信号,则表示从机已准备好接收数据。
  4. 发送字地址:主机向从机发送要读取数据的字地址。如果是双字节地址,则需要先发送高8位地址,再发送低8位地址。每发送一个地址字节后,主机都需要等待从机的应答信号。
  5. 重新发送起始信号:在字地址写入完成后,主机需要再次发送一个起始信号,以切换到读数据模式。
  6. 发送读控制命令:主机发送读控制命令到从机,设置读写控制位为高电平,表示将对从机进行读数据操作。
  7. 接收数据:从机接收到读控制命令后,会开始输出数据。主机在接收到从机回传的应答信号后,开始接收从机传回的单字节数据。数据是逐位接收的,直到接收完一个完整的字节。
  8. 发送非应答信号(可选):如果主机只需要读取一个字节的数据,则在接收完数据后,它会向从机发送一个非应答信号(即将SDA保持为高电平),表示不再继续读取数据。
  9. 发送停止信号:最后,主机发送停止信号到从机,表示一次通信的结束

iic设备出问题的时候怎么排查

1. 基本检查

  • 确认设备连接:首先检查I²C设备的连接是否正确,包括引脚焊接、线材是否断线或接触不良等问题。
  • 检查电源:确保I²C设备及其相关电路正常供电,没有电源波动或不足的情况。

2. 波形抓取与分析

  • 使用示波器:利用示波器抓取I²C总线上的SCL(时钟线)和SDA(数据线)波形,以便进行详细的时序分析。
  • 检查波形异常:观察波形是否存在异常,如尖波、斜波、杂波等不符合I²C设备的波形。这些异常可能由于驱动能力不足、上拉电阻设置不当、总线负载过重等原因引起。

3. 硬件问题排查

  • 检查上拉电阻:确认I²C总线上是否按从机要求加了合适阻值的上拉电阻(通常为2~10kΩ)。阻值的选择应根据从机芯片手册或模块手册的要求进行。
  • 引脚配置:检查I²C设备的引脚配置是否正确,特别是SDA和SCL引脚是否配置为开漏输出模式。对于软件模拟I²C,还需要确保GPIO被正确配置。
  • 检查从机地址:确认从机地址是否正确,以及是否存在与其他I²C设备的地址冲突。

4. 通信协议与速率匹配

  • 通信速率匹配:确保I²C主机的通信速率与从机的通信速率相匹配。如果速率不匹配,可能会导致通信失败。
  • 协议一致性:检查I²C通信协议的一致性,包括起始信号、停止信号、数据传输格式、应答信号等。

5. 软件问题排查

  • 初始化代码:检查I²C设备的初始化代码是否正确,包括GPIO配置、I²C模块使能、中断配置等。
  • 固件更新:如果可能,尝试更新I²C设备的固件或驱动程序,以修复存在的软件问题。

6. 特定问题排查

  • 死锁问题:如果I²C设备出现死锁现象(即数据线被拉低,主机无法拉高),可以按照以下方法排查:

    • 检查是否存在从机设备在返回数据时未发送完成,而主机时钟消失的情况。这可能导致从机等待时钟信号,产生钳住并拉低SDA的现象。
    • 尝试在系统复位时提供足够的时钟信号,以解锁SDA。
  • 中断问题:如果I²C通信过程中无法产生中断或中断处理异常,可以检查中断号是否正确、中断脚电平是否异常、IC供电电平是否等于中断电平等问题。

上拉电阻对iic速率有没有影响?

        有影响。

  1. 上升时间

    • 上拉电阻的阻值直接影响I²C总线上信号的上升时间。电阻越大,上拉至高电平的速度就越慢,这会导致数据传输速率受限。
    • 为了保证数据传输速率,需要根据I²C总线的最大频率来确定合适的上升时间,并据此选择阻值。一般来说,I²C总线标准建议的上升时间应小于300ns。
  2. 寄生电容

    • I²C总线上的寄生电容(包括引脚电容、PCB导线寄生电容等)与上拉电阻形成RC充电回路。这个回路会影响信号的上升沿速率,从而影响数据传输速率。
    • 较大的寄生电容需要较小的上拉电阻来保持较快的上升沿速率,但过小的电阻又会增加功耗和可能的电流冲击。
  3. 功耗与电流限制

    • 上拉电阻上会持续消耗一定的功率(P=I²R),虽然这部分功耗通常很小,但在低功耗设计中仍需考虑。
    • 同时,I²C总线规范定义了每个总线上的设备在拉低线路时能够承受的最大电流(灌电流)。上拉电阻的阻值应确保即使所有挂载的设备同时尝试将线路拉低,也不会超过任何单个设备的最大灌电流规格。

26、pwm输入捕获定时器怎么工作的

        主要基于定时器的捕获单元和外部PWM信号的交互。

        PWM输入捕获是指定时器能够捕获外部PWM信号的周期和占空比。在STM32等微控制器中,定时器的捕获单元通常具有多个捕获通道,这些通道可以配置为输入捕获模式,用于检测外部信号的边沿变化。

PWM输入捕获的工作过程:

  1. 信号接入

    • 外部PWM信号通过定时器的输入通道接入捕获单元。
  2. 边沿检测

    • 捕获单元内部的边沿检测器会检测外部PWM信号的上升沿或下降沿。
    • 当检测到边沿变化时,定时器当前的计数值会被捕获并存入捕获比较寄存器中。
  3. 捕获周期和占空比

    • 在PWM输入模式下,定时器通常会使用两个捕获通道来同时捕获PWM信号的周期和占空比。
    • 假设使用捕获通道1和捕获通道2,捕获通道2会在PWM信号的上升沿将主计数器清除并开始向上计数。随后,捕获通道1会在PWM信号的下一个下降沿捕获当前计数值,这个值即为PWM信号的高电平周期(或占空比的一部分)。
    • 当捕获通道2再次检测到PWM信号的下一个上升沿时,此时计数器的值即为PWM信号的完整周期。同时,计数器会被清除以准备下一次测量。
  4. 中断处理

    • 在捕获到PWM信号的周期和占空比后,定时器可以产生中断或DMA请求,以便CPU能够及时处理捕获的数据。

27、绿色发光二极管的导通压降大概是多少伏?如果一个LED指示灯没有定义颜色,红、绿、黄、橙、蓝、白色你会选择哪一种,为什么?

2V 左右。按照使用习惯,电源指示灯用红色,信号指示灯用绿色,这两种颜色的LED灯技术最成熟,价格最便宜。

28、请简述TVS瞬态电压抑制二极管的工作原理。

        当TVS(Transient Voltage Suppressor,瞬态电压抑制二极管)上的电压超过一定幅度时,器件迅速导通,从而将浪涌能量泄放掉,并将浪涌电压限制在一定的幅度。
        工作原理基于二极管的雪崩击穿效应,能够在极短的时间内吸收大量的能量,从而保护电路不受损害。

  1. 正常工作状态:在正常工作电压下,TVS二极管表现为高阻抗状态,几乎不导电,因此不会影响电路的正常工作。

  2. 雪崩击穿:当电路中出现电压瞬态冲击,如静电放电(ESD)、电感负载切换、雷击等,导致电压超过TVS二极管的击穿电压时,TVS二极管会迅速从高阻抗状态转变为低阻抗状态,即雪崩击穿。

  3. 能量吸收:在雪崩击穿状态下,TVS二极管能够导电并将瞬态电压限制在一个安全水平,同时吸收和分流这些高能量的瞬态电流,防止电压冲击对后续电路造成损害。

  4. 恢复高阻抗:一旦瞬态冲击结束,TVS二极管会迅速恢复到高阻抗状态,电路可以继续正常工作。

  5. 极性保护:TVS二极管分为单向和双向两种类型。单向TVS二极管只在一个方向上导电,而双向TVS二极管则可以在两个方向上导电,分别对应正向和反向电压冲击。

  6. 响应时间:TVS二极管的响应时间非常快,通常在皮秒(ps)级别,远快于电路中其他保护元件的响应时间,因此能够有效地保护电路。

29、请列举您知道的二极管型号。

1N4148、1N5817、1N5819、1N5820、1N5822、1N4001、1N4007、SR160、SR360、BAT54A、BAT54C、BAT54S

30、请列举您知道的NPN三极管型号。

2N2222、2N3904、2N5550、2N5551、M8050、S9013、S9014、S9018

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM实战—7.如何模拟GC场景并阅读GC日志

大纲 1.动手模拟出频繁Young GC的场景 2.JVM的Young GC日志应该怎么看 3.代码模拟动态年龄判定规则进入老年代 4.代码模拟S区放不下部分进入老年代 5.JVM的Full GC日志应该怎么看 6.问题汇总 1.动手模拟出频繁Young GC的场景 (1)程序的JVM参数示范 (2)如何打印出JVM GC…

javaEE-文件操作和IO-文件

目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备: 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式: 6.文件的分类 二、java中文件系统的操作 1.File类中的属性: 2.构造方…

使用 Docker 搭建 Hadoop 集群

1.1. 启用 WSL 与虚拟机平台 1.1.1. 启用功能 启用 WSL并使用 Moba 连接-CSDN博客 1.2 安装 Docker Desktop 最新版本链接:Docker Desktop: The #1 Containerization Tool for Developers | Docker 指定版本链接:Docker Desktop release notes | Do…

数据结构(系列)

在Python中,列表(list)是一种基本的数据结构,它可以存储一系列的元素。列表是可变的,即可以对其进行增删改查操作。 栈(Stack)是一种具有特定限制的线性数据结构,在栈中&#xff0c…

【Linux】HTTP cookie与session

在登录B站时,有登录和未登录两种状态, 问题:B站是如何认识我这个登录用户的?问题:HTTP是无状态、无连接的,怎么能够记住我? HTTP协议是无状态、无连接的。比如客户端(浏览器&#…

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成logback 及 原理分析

文章目录 Pre官网集成步骤POM依赖使用第一步:编写 Logback 的配置文件第二步:在代码中使用 SLF4J 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging&…

5.系统学习-PyTorch与多层感知机

PyTorch与多层感知机 前言PyTroch 简介张量(Tensor)张量创建张量的类型数据类型和 dtype 对应表张量的维度变换:张量的常用操作矩阵或张量计算 Dataset and DataLoaderPyTorch下逻辑回归与反向传播数据表格 DNN(全连结网络&#x…

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中,您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的,这意味着在系统重启后这些配置会丢失。为了将这些配置持久化,您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由,您可以将这些配…

Unity Shader TexelSize的意义

TexelSize在制作玻璃折射效果时会用到。 // Get the normal in tangent space fixed3 bump UnpackNormal(tex2D(_BumpMap, i.uv.zw)); // Compute the offset in tangent space float2 offset bump.xy * _Distortion * _RefractionTex_TexelSize.xy; i.scrPos.xy offset * i…

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言:在现代嵌入式硬件设计中,开关元件作为电路中的重要组成部分,起着至关重要的作用。三种主要的开关元件——IGBT(绝缘栅双极型晶体管)、MOSFET(金属氧化物半导体场效应晶体管)和三极管&#…

【亲测有效】k8s分布式集群安装部署

1.实验环境准备 准备三台centos7虚拟机,用来部署k8s集群: master(hadoop1,192.168.229.111)配置: 操作系统:centos7.3以及更高版本都可以配置:4核cpu,4G内存&#xff…

【SQL server】教材数据库(5)

使用教材数据库(1)中的数据表完成以下题目: 1 根据上面基本表的信息定义视图显示每个学生姓名、应缴书费 2 观察基本表数据变化时,视图中数据的变化。 3利用视图,查询交费最高的学生。 1、create view 学生应缴费视…

去除el-tabs 下面的灰色横线,并修改每一项的左右间距,和字体颜色

HTML <el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane label"全部" :name"null"></el-tab-pane><el-tab-pane label"问答陪练" name"general-t…

纯血鸿蒙ArkUI的网格布局详解

网格布局概要 网格布局是由行和列分割的单元格组成&#xff0c;通过指定项目所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力&#xff0c;子组件占比控制能力&#xff0c;是一种重要的自适应布局组件&#xff0c;其使用场景有九宫格图片展示、日历、计算器等…

LeRobot(1)

Train python lerobot/scripts/train.py \ policyact \ envaloha \ env.taskAlohaInsertion-v0 \ dataset_repo_idlerobot/aloha_sim_insertion_human \ load_data一直报错&#xff0c;忘记截图了&#xff0c;反正是ssh报错&#xff0c;下不下来&#xff0c;网…

【C++】B2085 第 n 小的质数

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述题目内容输入格式输出格式题目示例 &#x1f4af;原始做法分析解法源码解析1. 步骤分析2. 问题分析3. 性能问题 &#x1f4af;老师提供的优化解法优化代码每部分解…

Node.js详细安装教程

1.下载 [名称]&#xff1a;Node.js [大小]&#xff1a;26.4 MB [语言]&#xff1a;简体中文 [安装环境]&#xff1a;Win7/Win8/Win10 [Node.js15.11.0下载链接]&#xff1a; 通过网盘分享的文件&#xff1a;Node.js 链接: https://pan.baidu.com/s/12WlNlWlX-1ppdhz…

IDEA 搭建 SpringBoot 项目之配置 Maven

目录 1?配置 Maven 1.1?打开 settings.xml 文件1.2?配置本地仓库路径1.3?配置中央仓库路径1.4?配置 JDK 版本1.5?重新下载项目依赖 2?配置 idea 2.1?在启动页打开设置2.2?配置 Java Compiler2.3?配置 File Encodings2.4?配置 Maven2.5?配置 Auto Import2.6?配置 C…

SpringCloud 系列教程:微服务的未来(三)IService接口的业务实现

本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作&#xff0c;帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询&#xff0c;还是复杂的多表联动&#xff0c;甚至是大数据量的批量操作…

MAC环境安装(卸载)软件

MAC环境安装&#xff08;卸载&#xff09;软件 jdknode安装node&#xff0c;并实现不同版本的切换背景 卸载node从node官网下载pkg安装的node卸载用 homebrew 安装的node如果你感觉删的不够干净&#xff0c;可以再细分删除验证删除结果 jdk 1.下载jdk 先去官网下载自己需要的版…