STM32基础学习笔记-ADC&&面试基础题6

第六章、ADC

常见问题
1、基本概念:什么是ADC ?作用 ?逐次逼近型
2、传感器本质 ?传感器、电压、ADC数值转化 ?
3、ADC的特征 ? 转化时间、分辨率、精度、量化误差
4、ADC框图组成部分 ?参考电压/模拟部分电压、输入通道、转换序列、触发源、数据寄存器、转换时间、中断
5、转换模式_扫描模式 ?
## 1、ADC 模数转换器

作用:模拟数据->数字数据

整流:3.3V(模拟)->1(数字) 0V->0

而ADC内部也有一套转化规则:

3.3V->1024/8/512 0V->0

2、传感器

压力传感器、光敏传感器、温度传感器、湿度传感器、气压传感器等等

这些传感器内部实现原理:本质是滑动变阻器

将外部环境信息转换成电压信息(比如100N的力对应3.3V)

外部环境数据:100N 变成 模拟电压

ADC就是去继续量化这个模拟电压的,1024量化3.3V

ADC的特征:ADC的厂商定义四个核心的东西:分辨率(意味着ADC可以表示的范围:比如分辨率是3,0到2的3次方-1;分辨率是10就是0到2的10次方-1,分辨率最高的12,精度更大,分的更清楚)、精度、误差(制作的时候,工艺有区别,存在一个理论值与实际值的差别)、转化时间(要给一个充分的时间,要么确定ADC已经转化完成,要么给一个明确的完成信号)

ADC的内部构造:分为并联选择型和逐次逼近型 (电压->ADC值 )

3、实验

<font style="color:#4874CB;">1、轮询模式</font>

<font style="color:#4874CB;"> HAL_ADC_Start(&hadc1);  </font>

<font style="color:#4874CB;"> HAL_ADC_PollForConversion(&hadc1, 50);</font>

<font style="color:#4874CB;"> ADC_Value = HAL_ADC_GetValue(&hadc1);</font>

<font style="color:#4874CB;"> HAL_ADC_Stop(&hadc1);  </font>

2、 DMA模式

<font style="color:#4874CB;"> HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,2);</font>

<font style="color:#4874CB;"> printf("%d    %d \r\n",ADC_Value[0],ADC_Value[1]);  </font>

<font style="color:#75BD42;">while循环中  采样周期要大一点  75.5Cycles )</font><font style="color:#4874CB;">  </font>

4、实验:单通道读取五向按键

这个五向按键有两个功能:判断是否按下,判断方向;

在五个按键上,接不同的电压,读取到不同的ADC的值,读的时候注意ADC的通道(通过原理图要找到五向按键和ADC的通道是哪个,必须要找到)

找到之后keil编程:第一步开启;第二步等待转化完成;第三步是获取ADC的值;第四步:停止 以上为轮询方式实现;

效果截图:

实验代码:

配置PA1为ADC1,然后设置一个USART1,实验代码:

中断方式实现:首先是ADC的中断开关;

然后找到对应的回调函数(跟着中断向量表中的ADC服务函数,每个服务函数里都有统一的ADC处理(在这个处理中肯定有callback回调函数,然后重写这个回调函数));接着获取ADC的值,处理完之后,把开关闭合上。

实验记录:

在轮询的前提下,加一个nvic:

硬件问题,如何用软件来区分五向按键向右按和不按(用PA8)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梳子烟YAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值