如何在stm32f103 bluepill中使用VREFINT?
How to Use the VREFINT in stm32f103 bluepill?
我无法理解 stm32f103 板中 VREFINT 的使用。谁能解释一下如何使用 VREFINT 在 stm32f103 中获取 adc 值?
if(HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK)
{
adcVrefInt = HAL_ADC_GetValue(&hadc1);
vdd = 4095.0 * 1.20 / (float)adcVrefInt;
vdd += 0.61; // .61 is the difference i'm getting in VDD
sprintf(buffer, "VREFINT: %ld\tVDD: %.2f\t", adcVrefInt, vdd);
HAL_UART_Transmit(&huart1, (uint8_t *)buffer, strlen(buffer), 100);
if(HAL_ADC_PollForConversion(&hadc2, 100) == HAL_OK)
{
adcValue = HAL_ADC_GetValue(&hadc2);
adcVoltage = (vdd/4095.0) * adcValue;
sprintf(buffer, "ADC_PA0: %ld\tVoltage-PA0: %.2f\n", adcValue, adcVoltage);
HAL_UART_Transmit(&huart1, (uint8_t *)buffer, strlen(buffer), 100);
}
}
在 ADC1->CR2
中设置 TSVREFE
位后,您可以像读取 ADC1 上的任何其他通道一样读取 VREFINT 通道 (17)。这是一个内部模拟信号,没有与之关联的引脚。 VREFINT 的固定电压为 1.20 ± 0.04 V。
如果 ADC 输入引脚连接到 VDDA,则读数为 4095。如果它连接到 VSSA,你得到 0。如果在这些限制之间有任何其他电压 V1,你会得到 4095 * V1 / VDDA 。这也适用于 VREFINT 通道。
当您测量 VREFINT 时,ADC1->DR
= 4095 * VREFINT / VDDA。因为你知道 VREFINT = 1.20V,所以你可以计算出 VDDA=4095 * 1.20 / ADC1->DR
伏特。
我无法理解 stm32f103 板中 VREFINT 的使用。谁能解释一下如何使用 VREFINT 在 stm32f103 中获取 adc 值?
if(HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK)
{
adcVrefInt = HAL_ADC_GetValue(&hadc1);
vdd = 4095.0 * 1.20 / (float)adcVrefInt;
vdd += 0.61; // .61 is the difference i'm getting in VDD
sprintf(buffer, "VREFINT: %ld\tVDD: %.2f\t", adcVrefInt, vdd);
HAL_UART_Transmit(&huart1, (uint8_t *)buffer, strlen(buffer), 100);
if(HAL_ADC_PollForConversion(&hadc2, 100) == HAL_OK)
{
adcValue = HAL_ADC_GetValue(&hadc2);
adcVoltage = (vdd/4095.0) * adcValue;
sprintf(buffer, "ADC_PA0: %ld\tVoltage-PA0: %.2f\n", adcValue, adcVoltage);
HAL_UART_Transmit(&huart1, (uint8_t *)buffer, strlen(buffer), 100);
}
}
在 ADC1->CR2
中设置 TSVREFE
位后,您可以像读取 ADC1 上的任何其他通道一样读取 VREFINT 通道 (17)。这是一个内部模拟信号,没有与之关联的引脚。 VREFINT 的固定电压为 1.20 ± 0.04 V。
如果 ADC 输入引脚连接到 VDDA,则读数为 4095。如果它连接到 VSSA,你得到 0。如果在这些限制之间有任何其他电压 V1,你会得到 4095 * V1 / VDDA 。这也适用于 VREFINT 通道。
当您测量 VREFINT 时,ADC1->DR
= 4095 * VREFINT / VDDA。因为你知道 VREFINT = 1.20V,所以你可以计算出 VDDA=4095 * 1.20 / ADC1->DR
伏特。