ADC&DAC概述

1:概述

ADC(模数转换器)概述

模拟信号只有通过A\D转换为数字信号才能用软件进行处理,这一切都是通过ADC来实现的,与模数转换对应的是数模转换,数模转换是模数转换的逆过程。

采样:根据奈奎斯特定理,采样频率需至少为信号最高频率的2倍,避免混叠。

量化:将采样后的模拟值映射到有限数字电平,引入量化误差。分辨率由比特数(N)决定,例如8位ADC的分辨率为:

编码:将量化值转换为二进制代码,常见输出格式包括二进制补码或偏移码。

ADC类型包括逐次逼近型(SAR)、流水线型(Pipeline)、Σ-Δ型等,各有速度、精度和功耗的权衡。


DAC(数模转换器)概述

DAC(Digital-to-Analog Converter)将数字信号还原为模拟信号,关键参数包括分辨率、建立时间和线性度。

转换原理:数字输入通过电阻网络(如R-2R梯形)或电流源阵列生成对应模拟电压或电流。

类型

  • 电压输出型:如R-2R DAC,适合低功耗应用。
  • 电流输出型:需外接运放转换为电压,高速场景更常见。

DAC性能受非线性误差(INL/DNL)和毛刺(Glitch)影响,需通过校准和滤波优化。


应用场景

  • ADC:用于传感器信号采集(温度、音频)、医疗仪器(ECG)、通信系统(软件无线电)。
  • DAC:应用于音频播放、波形生成、电机控制(PWM调制)等领域。

两者通常协同工作,构成完整的信号处理链,例如数字通信系统中的收发模块。

2:ADC初始化设置

在stm32中:

1:设置好系统时钟

2:设置ADC引脚

3:使能ADC对应通道模式

4:设置ADC参数

在KEIL_MDK:

1:ADC初始化

2:编写ADC读取函数

3:编写ADC显示函数

在电路途中找到ADC相关引脚:

对这些引脚进行ADC处理:

今日任务:

1:在stm32CubeMX软件完成ADC初始化设置;
2:编写ADC读取,显示函数,将R37,R38对应的ADC转换结果实时在LCD上显示

主要代码及简述功能:

复制代码
void getADC(void)   // 用于实时显示数字
{
    HAL_ADC_Start(&hadc1); // 启动 ADC
    HAL_ADC_PollForConversion(&hadc1, 5); // 等待转换完成,超时 5ms
    adc37 = HAL_ADC_GetValue(&hadc1); // 获取第一个 ADC 值,假设是温度
    
    HAL_ADC_Start(&hadc1); // 重新启动 ADC
    HAL_ADC_PollForConversion(&hadc1, 5); // 再次等待转换完成,超时 5ms
    adc38 = HAL_ADC_GetValue(&hadc1); // 获取第二个 ADC 值,假设是湿度
    HAL_ADC_Stop(&hadc1); // 停止 ADC
}

sprintf((char*)str,"   Temp:%d    ", adc37); // 格式化字符串,显示温度
LCD_DisplayStringLine(Line2, (uint8_t*)str); // 在 LCD 的第二行显示温度

sprintf((char*)str,"   Humid:%d     ", adc38); // 格式化字符串,显示湿度
LCD_DisplayStringLine(Line3, (uint8_t*)str); // 在 LCD 的第三行显示湿度

实验运行结果:

有任何疑问请留言😉

相关推荐
Lance_mu6 分钟前
UFS协议学习大纲
嵌入式硬件·七牛云存储
二进制101112 分钟前
基于stm32的按键驱动框架的编写
stm32·单片机·嵌入式硬件
VALENIAN瓦伦尼安教学设备16 分钟前
激光对中仪应用行业及全球市场份额解析
大数据·人工智能·嵌入式硬件
coward911 小时前
Linux内核驱动初始化流程认识(关于late_initcall和modul_init驱动初始化宏差异)
linux·嵌入式硬件
ACP广源盛139246256731 小时前
GSV2221@ACP# 高带宽低功耗显示转换芯片,赋能 TRAE SOLO 设备高清扩展升级
人工智能·嵌入式硬件·电脑·音视频
周周记笔记2 小时前
【元器件专题】比较NPN管与PNP管用作开关设计的区别
嵌入式硬件
szxinmai主板定制专家2 小时前
基于 ARM+FPGA 数据机床实时工业控制设计--以雕刻机为例
arm开发·人工智能·嵌入式硬件·fpga开发
崇山峻岭之间2 小时前
单片机DMA实验
单片机·嵌入式硬件
XMAIPC_Robot2 小时前
基于RK3588 ARM+FPGA电火花数控机床控制系统设计,兼顾ethercat软硬件实时
linux·arm开发·人工智能·嵌入式硬件·fpga开发
QiLinkOS2 小时前
QiLink 技术委员会选举实施细则
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源