ADC模数转换器
发表于|更新于|嵌入式
|浏览量:
ADC可以将模拟电压转换为数字变量,
输入电压范围03.3V,转换结果的范围:04095,即0V对应0,3.3V对应4095,中间均为一一对应的线性关系。
STM32F10系列中ADC有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
STM32 ADC的总转换时间
$$
T_{CONV} = 采样时间+12.5个ADC周期
$$
例:
当ADCCLK =14MHz,采样时间为1.5个ADC周期, 则
$$
T_{CONV} = 1.5 +12.5 =14个ADC周期=1us
$$
文章作者: LsWorld
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LsWorld!
相关推荐
2025-01-09
STM32F1系列驱动SG90舵机模块
SG90舵机模块介绍 标准库代码实现驱动舵机由上图可知可以通过PWM来实现驱动舵机,这里采用STM32F103C8T6的TIM2的通道4来实现,即该芯片的A3口引脚,如下图所示 配置20ms的时基单元(以PLL时钟频率为72MHz为例),那么就是将TIM2的定时器的周期配置为20ms(50Hz),即设置ARR= 2000 - 1,PSC = 720 -1,则定时器的时钟周期就为20ms,并且我在初始位置设置为90°,即起始值设置为150,代码如下: void TIM2_PWM_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; // 配置定时器周期为20ms(50Hz) TIM_TimeBaseStructure.TIM_Period = 2000 - 1; // 72MHz / 7200 = 10KHz TIM_TimeBaseStructure.TIM_Prescal...
2025-01-03
串口协议
USART串口通信stm32中使用USART串口通信主要通过RX和TX两个接口完成基础操作,发送的数据通过总线到发送数据寄存器TDR,然后TDR中数据会发送到发送移位寄存器,发送移位寄存器会将比特右移的传到USARTX_TX引脚,产生串口协议规定的波形,当数据从发送移位寄存器发送完成时,TXE标志位会置1,只需判断TXE就可以知道是否可以传下一个数据。 同样在接受控制器中通过USARTX_TX引脚接受数据,接受完成会将RXNE标志位置1。 在实际使用中只有DR寄存器可供读写,写入DR时,数据走TX发送,读出DR时,数据走TX接受。 发送数据的函数形式为 void Serial_SendChar(uint8_t ch) { // 发送字符 USART_SendData(USART1, ch); // 等待发送缓冲区为空 发送完成会将USART_FLAG_TXE置1 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } 接受数据的形式为 if (US...
2025-01-15
stm32中热敏电阻模块在OLED上实时显示温度
采用stm32f103c8t6芯片的A0引脚连接热敏电阻模块。采用ADC1的通道0,使用标准库实现。 实现功能所使用的常量为: //温度传感器参数 #define VREF 3.3f // ADC参考电压 3.3V #define R1 10000.0f // 电压分压阻值为10KΩ,与热敏电阻串联,用于计算热敏电阻的阻值 #define B 3950.0f // 热敏电阻的 B 常数,单位为开尔文(K),用于计算热敏电阻的温度 #define T0 298.15f // 参考温度,单位为开尔文(K),298.15K即 25°C #define R0 10000.0f // 热敏电阻在参考温度 T0 下的阻值,用于计算热敏电阻在当前温度下的阻值 // DMA内存存入位置 #define ADC_BUFFER_SIZE 10 uint16_t ADC_ConvertedValue[ADC_BUFFER_SIZE]; GPIO引脚配置: void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitS...
2025-01-18
STM32F103C8T6综合学习项目的具体功能实现详解
代码项目地址为stm32综合学习项目。 项目概述(详细可在项目的Project_Structure中查看)该项目基于STM32F103C8T6芯片,学习I2C,GPIO,ADC,EXTI,PWM等基础模块的使用,并通过模块化的方式使代码具有良好的可读性与健壮性。 准备的模块 OLED显示屏(I2C) 蜂鸣器模块(GPIO) 光敏电阻传感器(ADC) 热敏电阻传感器(ADC) MPU6050陀螺仪(I2C) 旋转编码器(EXTI+TIM) 舵机(PWM) LED指示灯(GPIO) 按钮(GPIO+EXTI) STM23F103C8T6芯片 文件结构设计硬件驱动层Hardware/ ├── OLED.c ├── OLED.h ├── OLED_Font.h ├── beeper.c ├── beeper.h ├── light_sensor.c ├── light_sensor.h ├── temp_sensor.c ├── temp_sensor.h ├── mpu6050.c ├── mpu6050.h ├── encoder.c ├── encoder.h ...
2025-01-01
stm32TIM定时中断
中断优先级配置NVIC来进行中断优先级配置(值越小,优先级越高)。 NVIC优先级分组NVIC的优先级组通过NVIC_PriorityGroupConfig(NVIC_PriorityGroup_X)来配置X表示哪个分组。 NVIC组 抢占优先级 响应优先级 NVIC_PriorityGroup_0 0bits 4bits,可分为0-15 NVIC_PriorityGroup_1 1bits 3bits NVIC_PriorityGroup_2 2bits 2bits NVIC_PriorityGroup_3 3bits 1bits NVIC_PriorityGroup_4 4bits 0bits 计数器计数频率$$CK_CNT = CK_PSC/(PSC+1)$$ CK_CNT:定时器时钟,CK_PSC:定时器时钟源,PSC:预频分值。 计数器溢出频率$$CK_CNT_OV = CK_CNT/(ARR +1)=CK_PSC/(PSC+1)/(ARR+1)$$ ARR:自动重...
2024-12-30
stm32标准库初始化
标准库初始化 [!IMPORTANT] 采用Keil IDE基于C语言进行编写stm32运行代码(以stm32f10x系列为例),使用标准库首先需要引入相应的库文件,该文件需要自己去网上下载 新建工程编写逻辑代码前需要对keil将文件夹中的内容读入到IDE中 ,点击keil上方tab栏中的Project里面的New μVisioon Project...,找到存放共工程的文件夹,并在该文件夹中在下方的文件名中输入该工程的名称,后点击保存。 在芯片选择中选择STM32F1x对应的芯片,后点击OK,后续的窗口直接关闭即可。 后面再将对应的固件库文件放入到该工程文件夹中。 keil中把文件导入工程在keil中点击三个方块样式的工程管理按钮 在Project Items中的Groups可添加对应名的文件夹,然后在再右侧的files的下方Add Files添加对应的固件库文件,即可成功创建文件。 然后点击三个方块样式旁边的魔术棒按钮。 在Tab栏中C/C++中的Include Paths中添加工程所用到的文件以及Define中改为USE...
公告
欢迎来到 LsWorld,这里记录机器学习学习路线、实验笔记和代码实践。
