关于STM32项目面试题02:ADC与DAC篇(输入部分NTC、AV:0-5V、AI:4-20mA和DAC的两个引脚)

博客的风格是:答案一定不能在问题的后面,要自己想、自己背;回答都是最精简、最精简、最精简,可能就几个字,你要自己自信的展开。

面试官01:什么是模数转换/ADC?说说模数转换的流程?

面试官02:你在项目中有没有使用到模数转换?

面试官03:详细说说你项目中模数转换的设计全过程。

01:模数转换是将模拟信号(连续信号)转换成数字信号(离散信号),这一过程使用到的模数转换器是一种电子设备接受模拟信号,可以是电压或者电流,通常是电压,然后转换成与信号幅度成比例的数字信号。

模数转换的流程:

(1)采样:在某一时刻采样模拟信号,将连续的模拟信号转换成离散的样本点。

(2)保持:保持采样点的电压/电流,使其在整个转换过程中保持稳定,为了避免信号变化带来的误差。

(3)量化:将模拟信号的值映射到一定比例的离散的数字值上。

(4)编码:将量化后的数字转换成二进制数,便于后续的数字处理和存储。

02:项目中一共有三个地方使用到了模数转换,分别是NTC模拟温度传感器电路、0-5V电压输入检测电路和4-20mA电流输入检测电路。

03:我想以NTC模拟温度传感器电路展开。

硬件电路的设计(脑海里要有硬件电路的原理图):以MUC的模拟电源VDDA为电源,经过电容滤波,选择的热敏电阻是SDNT2012X103FXXXXX(负温度系数),在25摄氏度下的阻值为10K,故串联一个10K/1%的分压电阻,两个电阻相互匹配,在中间节点引出经过电容滤波和RC滤波之后送到单片机具有ADC功能的引脚。

硬件测试:为了进行硬件测试,所以我对后续的过程也有一定的了解。制作表格。

在进行硬件测试之前先制作表格,查阅热敏电阻的数据手册,得到-30~70摄氏度每一度下的电阻最小值,中心值,最大值,如在-30度下电阻最小值,-30下电阻中间值,-30度下电阻最大值,表格做到70度。然后根据分压公式3.3*\frac{X}{X+10}将每一个值对应到实际设计的电路中,得到每一温度下对应的最小值、中心值、最大值。然后因为是用的单片机是12为ADC,再把刚刚得到的值对应到0~4096范围中取整,并组成数组,最后得到所有某一温度下的数组范围,如-25度是(3850,3867),-24是(3835~3850)。

编写软件代码,让单片机ADC引脚每隔1s采样数据,得到电压对应的二进制数,通过二分法查表匹配到对应的温度,将得到的温度显示在数码管上,并用串口助手每间隔1S打印一次温度信息。

注意虽然只说这一个模数转换的电路,但是你心里要对0-5V电压输入检测电路和4-20mA电流输入检测电路做到心中有数。其中电压检测就是把热敏电阻换成10K/1%的电阻分压后还是经过电容滤波、RC滤波。4~20mA电流检测就是直接引出经过150Ω(没有分压)还是电容滤波、RC滤波。

面试官04:什么是数模转换/DAC?说说数模转换的流程?

面试官05:你在项目中有没有使用到数模转换?

面试官06:详细说说你项目中数模转换的设计全过程。

04:数模转换是将数字信号(通常是二进制数)转换为模拟信号(如电压或电流)的过程。数模转换的流程是:

(1)输入数字信号:通常是由微控制器或者其他数字设备提供的二进制数,数字信号代表了需要转换的模拟量的离散级别。

(2)量化过程:根据输入的数字信号生成与之对应的模拟信号。

(3)电路生成模拟信号:DAC内部通过使用特定的电路来输出模拟信号。

(4)滤波与平滑:因为输出的是离散的模拟信号,因此还可能会通过低通滤波器进行滤波与平滑处理,使输出为一个更连续、平滑的模拟信号。

05:在项目使用到了数模转换,是使用一个具有DAC功能的引脚上电后输出正弦波,通过触摸按键1可以调整正弦波的频率。

06:在项目中使用的是一个复用引脚,是SPI通信的热电偶接口中的一个引脚(是一个只能由单片机向向接口引脚输出的引脚),硬件电路很简单,就是排针的接口。为了硬件测试,我对后续软件编写和简单的原理也有简单的了解。显示的正弦波是将一个周期中的正弦波分成32份来显示,故软件编写中先有数组存储了32个正弦波的采样点,代表一个完整周期的正弦波周期。将32个值通过DAC通道每隔X输出一个,其中X就是可以通过触摸按键1调整的值,这就可以通过按键1来调整正弦波的周期。

(上述涉及到的SPI通信,会在通信专栏中讲解。)

(热电偶的讲解如下:热电偶是一种用于测量温度的传感器。在使用时需要配合使用热电偶芯片,常见的热电偶芯片常采用SPI通信。)

面试官07:AD转换的精度由什么影响?

07:基准电压V_{REF+}V_{REF-},然后把我同门跟我讲的内部划分、对应二级制、逐个去找 讲一遍。

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

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

相关文章

『功能项目』靠近Npc显示可对话标识【60】

我们打开上一篇59窗口可拖拽脚本的项目, 本章要做的事情是在资源加载时加载Npc01并且实现主角靠近Npc01时,显示可对话标识,当按键盘G键时弹出对话内容 首先在资源场景中加载一个Npc模型 导入(除脚本)外的资源 在资源文…

PAT甲级-1055 The World‘s Richest

题目 题目大意 输入给出富人的总数以及富人的姓名、年龄、财富,接下来的k行给出需要排序的个数,每个排序要求输出m个富人,并且限制了年龄段,[Amin, Amax]。要求输出所有的排序。如果满足年龄段的人数为0,就输出None。…

Windows目录监控部署

1.前提 Cell_Directory_Monitoring.bat脚本用到的du命令,请协调Windows系统管理员提供。 下述du命令部署配置方式仅供参考,如要部署,请协调Windows系统管理员协助确认其不会对系统造成异常。 1.1.du.exe部署 1.将x32位du.exe文件放入如下目录 目录:C:\Windows\System3…

如何在win10Docker安装Mysql数据库?

1.拉取镜像 docker pull mysql 2.查看镜像 使用以下命令来查看是否已安装了 mysql镜像。 3.运行镜像 命令: docker run -p 3306:3306 --name mysql --restartalways --privilegedtrue \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var…

机器学习-点击率预估-论文速读-20240916

1. [经典文章] 特征交叉: Factorization Machines, ICDM, 2010 分解机(Factorization Machines) 摘要 本文介绍了一种新的模型类——分解机(FM),它结合了支持向量机(SVM)和分解模型的优点。与…

Linux下的CAN通讯

CAN总线 CAN总线简介 CAN&#xff08;Controller Area Network&#xff09;总线是一种多主从式 <font color red>异步半双工串行 </font> 通信总线&#xff0c;它最早由Bosch公司开发&#xff0c;用于汽车电子系统。CAN总线具有以下特点&#xff1a; 多主从式&a…

解决使用阿里云DataV Geo在线地图路径访问403问题

文章目录 1. DataV Geo在线地图路径访问403问题2. 解决方法3. 重启生效 1. DataV Geo在线地图路径访问403问题 最近在写一个省市下钻的demo&#xff0c;用到的是 阿里云DataV Geo在线地图 去动态获取GeoJSON 省市的数据&#xff0c;如下代码 axios.get("https://geo.dat…

Golang | Leetcode Golang题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; func thirdMax(nums []int) int {var a, b, c *intfor _, num : range nums {num : numif a nil || num > *a {a, b, c &num, a, b} else if *a > num && (b nil || num > *b) {b, c &num, b} else if b ! ni…

马匹行为识别系统源码分享

马匹行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

C语言程序设计(进阶)

行到水穷处&#xff0c;坐看云起时。 中秋快乐呀&#xff01; 数据在内存中的存储 1.数据类型的介绍 &#xff08;1&#xff09;基本的内置类型&#xff1a; char //字符数据类型 short //短整型 int //整型 long //长整型 …

说一说Zookeeper的应用场景及其原理

一 ZooKeeper简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名…

K8S - Access Control 机制介绍

作为开发人员&#xff0c; 我们通常会直接用root 帐号操作 k8s master node 里的kubectl 命令&#xff0c;并不能感知k8s 多用户权限管理存在。 即使自动化&#xff0c; 我们也会考虑用ansible 来远程操作master node… 所以大部分开发人员默认上是不用深入研究k8s的Access c…

基于AlexNet实现猫狗大战

卷积神经网络介绍 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;是一种深度学习模型&#xff0c;特别适用于处理图像、视频等数据。它的核心思想是利用卷积层&#xff08;Convolutional layers&#xff09;来提取输入数据…

[C语言]连子棋游戏

文章目录 一、前言二、游戏思路三、游戏方法1、初始化2、判断胜利3、交互4、电脑下棋 四、核心方法说明1、初始化游戏2、销毁棋盘3、显示游戏4、电脑下棋5、用户下棋6、判断游戏状态7、游戏交互 五、游戏效果展示与源码分享1、游戏效果2、源代码 一、前言 对于指针和数组理解尚…

关于std::swap原理

swap 操作交换两个相同类型容器的内容。调用swap之后&#xff0c;两个容器中的元素将会 交换&#xff1a; vector<striong> svec1(10); //10个元素的vector vector<string> svec2(24); //24个元素的vector swap(svec1,svec2); 调…

C++ | Leetcode C++题解之第413题等差数列划分

题目&#xff1a; 题解&#xff1a; class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int n nums.size();if (n 1) {return 0;}int d nums[0] - nums[1], t 0;int ans 0;// 因为等差数列的长度至少为 3&#xff0c;所以可以从 i2 开…

一款免费开源且功能强大的思维导图软件-思绪思维导图

思绪思维导图是一款免费开源的思维导图软件&#xff0c;旨在帮助用户有效地组织和表达思想。它提供了丰富的功能&#xff0c;包括支持富文本、图片、图标、超链接、备注、标签等内容&#xff0c;以及关联线、概要等特性。 思绪思维导图下载&#xff1a;https://pan.quark.cn/s…

在STM32工程中使用Mavlink与飞控通信

本文讲述如何在STM32工程中使用Mavlink协议与飞控通信&#xff0c;特别适合自制飞控外设模块的项目。 需求来源&#xff1a; 1、增稳云台里的STM32单片机需要通过串口接收飞控传来的云台俯仰、横滚控制指令和相机拍照控制指令&#xff1b; 2、自制的有害气体采集器需要接收飞…

基于Springboot的医疗健康助手开题报告

文未可获取一份本项目的java源码和数据库参考。 一&#xff0e;选题意义, 研究现状,可行性分析 选题意义&#xff1a;随着科技的高速发展&#xff0c;人们的生活水平也正在稳步提高&#xff0c;解决温饱问题以后&#xff0c;广大人民群众也越来越注重自己的身体健康&#xff0…

[Redis][前置知识][下][高并发架构演进]详细讲解

目录 1.单机架构2.应⽤数据分离架构3.应⽤服务集群架构4.读写分离/主从分离架构5.引⼊缓存⸺冷热分离架构6.垂直分库/分表7.业务拆分⸺微服务8.总结 1.单机架构 只有一台服务器&#xff0c;这个服务器负责所有的工作 大部分公司的产品&#xff0c;都是这种单机架构 2.应⽤数…