STM32 AD采样基准电压

VDDA采用与外围电路一样的电源,把TL431管脚2.5V作为一路输入ADC,这路ADC采到的数字量就是2.5V,

其它路ADC采到的数字量以这路为基准,加以修正,就可以满足你的要求了。

举个例子,2.5V对应的数字量为1000,另外一路ADC采到的数字量为2000,

则这路ADC对应的电压为(2.5/1000)*2000;

转载于:https://www.cnblogs.com/759222924lele/p/9361257.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于STM32F103系列芯片(包括STM32F103AD),基准电压测量可以通过内部参考电压(Vrefint)来实现。Vrefint是一个内部的固定电压,一般为1.2V。 要测量基准电压,可以使用ADC模块来读取Vrefint的值。以下是一个简单的示例代码,演示如何使用ADC测量Vrefint: ```c #include "stm32f10x.h" void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 使能ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE); // 配置GPIOA.0为模拟输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); // ADC配置 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); // 使能ADC1 ADC_Cmd(ADC1, ENABLE); // 配置ADC时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div6); // 校准ADC ADC_ResetCalibration(ADC1); while (ADC_GetResetCalibrationStatus(ADC1)) ; ADC_StartCalibration(ADC1); while (ADC_GetCalibrationStatus(ADC1)) ; } uint16_t ADC_GetVrefint(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); // 启动转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); // 等待转换完成 while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)) ; // 读取转换结果 return ADC_GetConversionValue(ADC1); } float GetVrefVoltage(uint16_t adc_value) { // Vrefint的实际电压为 3.3V * Vrefint_value / adc_value return 3.3 * 1.2 / adc_value; } int main(void) { uint16_t vrefint_value; float vref_voltage; ADC_Configuration(); // 获取Vrefint的ADC值 vrefint_value = ADC_GetVrefint(); // 计算Vrefint的电压 vref_voltage = GetVrefVoltage(vrefint_value); // 在这里进行你的处理 while (1) ; } ``` 这段代码会配置ADC模块来测量Vrefint的电压值,并计算出实际的电压。你可以在`main`函数中进行你需要的处理。注意,这只是一个简单的示例,你可能需要根据自己的需求进行适当的修改和扩展。 希望对你有帮助!如有更多问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值