配置的三个通道,可是通道之间彼此会有影响是怎么回事呀? 后来想利用内部的参照电压来校准,结果参照电压的数字电压值也是变化的非常明显,不符合实际。。求大神帮助 #include "adc.h" #include "delay.h" #include "stm32f10x.h" #include "stm32f10x_dma.h" vu16 ADC_ConvertedValue[3]; void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; DMA_InitTypeDef DMA_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Enable DMA clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE); /* DMA channel1 configuration ----------------------------------------------*/ //使能DMA DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; //DMA通道1的地址 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; //DMA传送地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //传送方向 DMA_InitStructure.DMA_BufferSize = 3; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //传送内存地址递增 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //ADC1转换的数据是16位 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //传送的目的地址是16位宽度 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //循环 DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStructure); /* 允许DMA1通道1传输结束中断 */ //DMA_ITConfig(DMA1_Channel1,DMA_IT_TC, ENABLE); //使能DMA通道1 DMA_Cmd(DMA1_Channel1, ENABLE); //ADC配置 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE; //模数转换工作在扫描模式(多通道)还是单次(单通道)模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //模数转换工作在扫描模式(多通道)还是单次(单通道)模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ADC数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 3; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channels configuration [规则模式通道配置]*/ //ADC1 规则通道配置 ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5); //通道11采样时间 55.5周期 ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_55Cycles5); //通道11采样时间 55.5周期 ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_55Cycles5); //通道11采样时间 55.5周期 //使能ADC1 DMA ADC_DMACmd(ADC1, ENABLE); //使能ADC1 ADC_Cmd(ADC1, ENABLE); // 初始化ADC1校准寄存器 ADC_ResetCalibration(ADC1); //检测ADC1校准寄存器初始化是否完成 while(ADC_GetResetCalibrationStatus(ADC1)); //开始校准ADC1 ADC_StartCalibration(ADC1); //检测是否完成校准 while(ADC_GetCalibrationStatus(ADC1)); //ADC1转换启动 ADC_SoftwareStartConvCmd(ADC1, ENABLE); } |
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??
回复:求助!STM32多通道配置,各通道之间相互影响怎么回事??
我的博客中有讲到你看看有没有帮助www.cnblogs.com/hiker-blogs/archive/2012/05/25/2517379.html
RE:求助!STM32多通道配置,各通道之间相互影响怎么回事??