硬件工程师面试题 21-30

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


更多硬件面试题:
硬件工程师面试题 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.rhkb.cn/news/501103.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git的使用流程(详细教程)

目录 01.Git是什么? 1.1 Git简介 1.2 SVN与Git的最主要的区别 1.3 GIt主要特点 02.Git是干什么的? 2.1.Git概念汇总 2.2 工作区/暂存区/仓库 2.3 Git使用流程 03.Git的安装配置 3.1 Git的配置文件 3.2 配置-初始化用户 3.3 Git可视化…

使用Docker部署最新版JupyterHub

拉取镜像 docker pull jupyterhub/jupyterhub:latest启动镜像 docker run -d -p 8000:8000 --name jupyterhub jupyterhub/jupyterhub:latest jupyterhub进入容器 docker exec -it jupyterhub bash生成jupyterhub的配置文件 jupyterhub --generate-config# 有需要可以安装中…

liunx下载gitlab

1.地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装 postfix 并启动 yum install postfix systemctl start postfix systemctl enable postfix ssh服务启动 systemctl enable sshd systemctl start sshd开放 ssh 以及 http 服务&#xff0c…

【AI大模型】深入GPT-2模型细节:揭秘其卓越性能的秘密

目录 🍔 GPT2的架构 🍔 GPT2模型的细节 2.1 模型过程 2.2 GPT2工作细节探究 🍔 小结 学习目标 掌握GPT2的架构掌握GPT2的训练任务和模型细节 🍔 GPT2的架构 从模型架构上看, GPT2并没有特别新颖的架构, 它和只带有解码器模块…

oceanbase集群访问异常问题处理

1.报错现象 2.问题排查 检查obproxy状态发现为不可用状态 重启obproxy 依次重启Obproxy集群 观察任务状态 重启完成 Obproxy状态正常 3.验证登录 登录成功

Echarts+vue电商平台数据可视化——webSocket改造项目

websocket的基本使用,用于测试前端能否正常获取到后台数据 后台代码编写: const path require("path"); const fileUtils require("../utils/file_utils"); const WebSocket require("ws"); // 创建WebSocket服务端的…

【数据结构】双向循环链表的使用

双向循环链表的使用 1.双向循环链表节点设计2.初始化双向循环链表-->定义结构体变量 创建头节点(1)示例代码:(2)图示 3.双向循环链表节点头插(1)示例代码:(2&#xff…

【深度学习】卷积网络代码实战ResNet

ResNet (Residual Network) 是由微软研究院的何凯明等人在2015年提出的一种深度卷积神经网络结构。ResNet的设计目标是解决深层网络训练中的梯度消失和梯度爆炸问题,进一步提高网络的表现。下面是一个ResNet模型实现,使用PyTorch框架来展示如何实现基本的…

【51项目】51单片机自制小霸王游戏机

视频演示效果: 纳新作品——小霸王游戏机 目录: 目录 视频演示效果: 目录: 前言: 一、连接方式: 1.1 控制引脚 1.2. 显示模块 1.3. 定时器 1.4. 游戏逻辑与硬件结合 1.5. 中断处理 二、源码分析&#xff1a…

2024/12/29 黄冈师范学院计算机学院网络工程《路由期末复习作业一》

一、选择题 1.某公司为其一些远程小站点预留了网段 172.29.100.0/26,每一个站点有10个IP设备接到网络,下面那个VLSM掩码能够为该需求提供最小数量的主机数目 ( ) A./27 B./28 C./29 D./30 -首先审题我们需要搞清楚站点与网…

【OpenCV】使用Python和OpenCV实现火焰检测

1、 项目源码和结构(转) https://github.com/mushfiq1998/fire-detection-python-opencv 2、 运行环境 # 安装playsound:用于播放报警声音 pip install playsound # 安装opencv-python:cv2用于图像和视频处理,特别是…

Vue2: table加载树形数据的踩坑记录

table中需要加载树形数据,如图: 官网给了两个例子,且每个例子中的tree-props都是这么写的: :tree-props="{children: children, hasChildren: hasChildren}" 给我一种错觉,以为数据结构中要同时指定children和hasChildren字段,然而,在非懒加载模式下,数据结…

深度学习模型预测值集中在某一个值

深度学习模型,训练过程中,经常遇到预测的结果集中在某个值,而且在学习的过程中会变,样例如下。 主要有如下解决方案 1、更换relu ->tanh 或者其他激活函数 2、更改随机种子,估计是没有初始化好,或者调…

图书项目:整合SSM

步骤: pom文件:导包,写入静态资源导出配置,连接数据库 建包:controller dao/mapper pojo service 配置文件:mybatis-config.xml applicationContext.xml(Spring的配置文件) datab…

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别

javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…

Docker安装(Docker Engine安装)

一、Docker Engine和Desktop区别 Docker Engine 核心组件:Docker Engine是Docker的核心运行时引擎,负责构建、运行和管理容器。它包括守护进程(dockerd)、API和命令行工具客户端(docker)。适用环境&#…

【卡通风格的的登录界面】

卡通风格的的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class"login-form"><view class&quo…

【AI】最近有款毛茸茸AI生成图片圈粉了,博主也尝试使用风格转换生成可爱的小兔子,一起来探索下是如何实现的

应用名称&#xff1a;一键变身毛茸茸小兔子 体验地址&#xff1a;点击跳转体验 模型名称&#xff1a;Kolors&#xff0c;点击跳转 背景 Gitee AI最近发起了一个社群挑战赛。 如果最近你也没什么好点子&#xff0c;想练习又无从下手&#xff0c;怎么办呢&#xff1f; 没关系&a…

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六)&#xff1a;环形进度条 拓展而来。 最终效果如下&#xff1a; 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

Oracle 23ai 图形界面安装

新年的第一篇博客&#xff0c;展示下Oracle 23ai的图形化安装。 主要给大家看下界面&#xff0c;安装的过程与19c没什么不同。 安装前 安装Oracle Database Preinstallation RPM&#xff1a; sudo dnf install oracle-database-preinstall-23aioracle用户有了&#xff1a; …