本帖最后由 yuanliangbeyond 于 2025-6-27 16:29 编辑
APM32F003F6P6芯片,ADC采集五个引脚的电压,实际只能读取到3个,原因不明.
void ADC_Calibration(void){
uint8_t i;
int8_t offset = 0;
uint16_t adcData = 0;
ADC_SetOffset(0);
ADC_EnableCompensation();
ADC_ClearStatusFlag(ADC_FLAG_CC);
ADC_Enable();
ADC_StartConversion();
for(i = 0; i < 10; i++) {
while(ADC_ReadStatusFlag(ADC_FLAG_CC) == RESET);
ADC_ClearStatusFlag(ADC_FLAG_CC);
}
ADC_Disable();
adcData = ADC_ReadData();
offset = (int8_t)(0x800 - adcData);
ADC_SetOffset(offset);
ADC_DisableCompensation();
ADC_ClearStatusFlag(ADC_FLAG_CC);
}
void ADC_ContinuousScanInit(void){
ADC_Config_T adcConfig;
GPIO_Config_T gpioConfig;
gpioConfig.intEn = GPIO_EINT_DISABLE;
gpioConfig.mode = GPIO_MODE_IN_FLOATING;
gpioConfig.pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_4| GPIO_PIN_3; //AIN0:PC5, AIN1:PC6,AIN2:PC4, AIN3:PD2--烧录口,AIN4:PD3,AIN5:PD5,AIN6:PD6,AIN7:PC3
GPIO_Config(GPIOC, &gpioConfig);
gpioConfig.pin = GPIO_PIN_3;
GPIO_Config(GPIOD, &gpioConfig);
ADC_SetMode(ADC_MODE_SINGLE_END);
ADC_ConfigStructInit(&adcConfig);
adcConfig.div = ADC_DIV_4;
adcConfig.convMode = ADC_CONV_MODE_CONTINUOUS;
adcConfig.scanMode = ADC_SCAN_MODE_ENABLE;
adcConfig.interrupt = ADC_INT_CC;
adcConfig.channel = ADC_CHANNEL_2; //ADC_CHANNEL_0 ADC_CHANNEL_1 ADC_CHANNEL_2
ADC_Config(&adcConfig);
ADC_Calibration();
ADC_Enable();
ADC_StartConversion();
}
void ADC_PollForConversion(void){
uint16_t voltage = 0;
uint16_t adcArray[10] = {0};
uint8_t bufferIndex;
SEGGER_RTT_printf(0, "===========ADC_PollForConversion===2222=======\r\n");
if(ADC_ReadStatusFlag(ADC_FLAG_CC) == SET){
// SEGGER_RTT_printf(0, "===========ADC_PollForConversion===55555=======\r\n");
ADC_ClearStatusFlag(ADC_FLAG_CC);
for(bufferIndex = 0; bufferIndex < 8; bufferIndex++){
adcArray[bufferIndex] = ADC_ReadBufferData((ADC_BUFFER_IDX_T)(bufferIndex));
}
for(bufferIndex = 0; bufferIndex < 8; bufferIndex++){
voltage = (adcArray[bufferIndex] * 3300) / 4095;
// printf("ADC Channel %d Value:%d\r\n", bufferIndex, voltage);
SEGGER_RTT_printf(0, "===========ADC_PollForConversion=1111==========ADC, Channel:%d, vol:%d \r\n",bufferIndex, voltage);
}
}
}
|