登录/注册

stm32f401 adc

stm32f401 adc

更多

STM32F401 的 ADC(模数转换器)是用于将模拟信号转换为数字信号的外设模块,以下是其基本特性和使用要点:


主要特性

  1. 分辨率:12 位,最大转换值 4095(0x0FFF)。
  2. 通道数量
    • 最多 16 个外部通道(具体取决于型号)。
    • 可测量外部信号、内部温度传感器、VREFINT(内部参考电压)等。
  3. 转换模式
    • 单次转换(Single Conversion)
    • 连续转换(Continuous Conversion)
    • 扫描模式(多通道自动扫描)
  4. 触发源:软件触发、定时器触发、外部中断触发等。
  5. 时钟频率:最大 36 MHz(需通过预分频器配置)。
  6. 参考电压:VREF+(通常接 3.3V)和 VSSA(模拟地)。

基本配置步骤(以 HAL 库为例)

  1. 启用 ADC 和 GPIO 时钟

    __HAL_RCC_ADC1_CLK_ENABLE();  // 启用 ADC1 时钟
    __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用 GPIOA 时钟(假设使用 PA1 作为 ADC 输入)
  2. 配置 GPIO 为模拟输入

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_1;          // 例如 PA1
    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;   // 模拟模式
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  3. 初始化 ADC

    ADC_HandleTypeDef hadc1;
    hadc1.Instance = ADC1;
    hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;  // 时钟分频(确保 ADC 时钟 ≤36MHz)
    hadc1.Init.Resolution = ADC_RESOLUTION_12B;            // 12 位分辨率
    hadc1.Init.ScanConvMode = DISABLE;                     // 单通道禁用扫描模式
    hadc1.Init.ContinuousConvMode = DISABLE;               // 单次转换模式
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;            // 数据右对齐
    HAL_ADC_Init(&hadc1);
  4. 配置 ADC 通道

    ADC_ChannelConfTypeDef sConfig = {0};
    sConfig.Channel = ADC_CHANNEL_1;      // 对应 PA1 的 ADC 通道
    sConfig.Rank = 1;                     // 转换顺序(单通道设为1)
    sConfig.SamplingTime = ADC_SAMPLETIME_56CYCLES;  // 采样时间(根据信号阻抗调整)
    HAL_ADC_ConfigChannel(&hadc1, &sConfig);
  5. 校准 ADC(提高精度):

    HAL_ADCEx_Calibration_Start(&hadc1);  // 执行校准
  6. 启动转换并读取结果

    HAL_ADC_Start(&hadc1);               // 启动转换
    if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK) {
       uint16_t adc_value = HAL_ADC_GetValue(&hadc1);  // 读取转换结果
    }

常见问题

  1. 采样时间不足:高频信号或高阻抗源需要更长的采样时间(例如 ADC_SAMPLETIME_112CYCLES)。
  2. 参考电压不稳定:确保 VREF+ 和 VSSA 稳定,减少噪声。
  3. 时钟配置错误:检查 ADC 时钟是否 ≤36 MHz(通过预分频器调整)。
  4. 通道映射错误:确认 GPIO 引脚对应的 ADC 通道(参考数据手册)。

示例应用

如果需要更具体的代码或配置,请提供详细需求!

stm32f401的PROTEUS仿真

搭建了一个stm32f401的PROTEUS仿真模型,PA9接一个发光二极管,以闪亮的方式点亮,在KEIL 5 中编辑了源代码,仿真通过。 *附件:simulation.rar

2025-02-27 09:26:56

STM32F401 AHB时钟大于30MHz就不运行了是怎么回事?

STM32F401 AHB时钟大于30MHz 就不运行了,手册数据是84MHz,是什么问题?

2024-04-24 08:28:36

stm32f401只用usb功能需要外部晶振吗?

stm32f401只用usb功能需要外部晶振吗?

2023-05-05 10:16:08

STM32F401STM32F411系列上的外设内部互联

电子发烧友网站提供《STM32F401和STM32F411系列上的外设内部互联.pdf》资料免费下载

资料下载 张桂英 2023-09-21 09:43:12

AN4616_从STM32F401/411系列移植到STM32L4/STM32L4plus系列微控制器

AN4616_从STM32F401/411系列移植到STM32L4/STM32L4plus系列微控制器

资料下载 靓仔峰 2022-11-21 17:06:55

STM32F401使用手册

STM32F401资料,需要自取

资料下载 mayue_merit 2022-10-08 09:50:42

STM32F401 定时器做编码器使用 采集电机旋转速度、旋转方向

定时器做编码器STM32F401的所有定时器都可以作为编码器使用(STM32F401在某宝20RMB以内买到的,晶振不同,不知道怎么操作的看我上一篇博文,里面有介绍怎么移植,经过本人验证,目前没有

资料下载 的撒的 2022-01-17 09:47:14

STM32F401xB STM32F401xC datasheet

STM32F401xB STM32F401xC datasheet(嵌入式开发考研专业)-Arm® Cortex®-M4 32-bit MCU+FPU, 105 DMIPS, 256KB Flash / 64KB

资料下载 张生 2021-08-04 12:05:58

如何去缓冲STM32F401ADC噪声的输入呢

stm32f401 上)2000个样本,10个样本/秒,测量室温约30.5-31摄氏度计数 2000.000000平均 30.930100标准 4.062343最少 3.670000中位数 30.810000最大

2022-12-26 07:10:38

如何对STM32F401的外部中断EXTI进行初始化呢

EXTI是什么意思?如何对STM32F401的外部中断EXTI进行初始化呢?有哪些步骤?

2022-01-24 07:26:14

如何去实现STM32F401的UART串口接收并发送数据呢

如何去实现STM32F401的UART串口接收并发送数据呢?其代码该怎样去实现呢?

2021-12-13 07:40:57

STM32F401在睡眠模式下的电流是怎样的

STM32F401在睡眠模式下的电流是怎样的?

2021-10-14 09:24:14

STM32F401的所有定时器都可以作为编码器使用

定时器做编码器STM32F401的所有定时器都可以作为编码器使用(STM32F401在某宝20RMB以内买到的,晶振不同,不知道怎么操作的看我上一篇博文,里面有介绍怎么移植,经过本人验证,目前没有

2021-09-13 08:49:39

使用STM32F401时需注意什么

使用STM32F401时需注意:stm32f401的系统库文件配置的晶振频率为25MHz,在外部使用8MHz的晶振是需对其进行修改,修改内容如下:1、修改st

2021-08-12 08:10:18

使用STM32F401的大内存特性

需要使用STM32F401的大内存特性,买了1批STM32F401CCU6. QFN48封装的。随便翻了一下PDF,第一感觉和F103的48脚封

2021-08-12 07:17:26
7天热门专题 换一换
相关标签