资源描述:
《STM32多通道AD转换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关于AD多通道采集的总结前几天小试了下,用STM32做了个万用表,采集电压电流电阻并液晶显示。期间遇到一个最大的问题应该就是,要开启多个AD通道,结合DMA传输,小结下下面是我对AD的配置,还有DMAvoidDMA_ADC_Config(){/*DMAchannel1configuration----------------------------------------------*/DMA_DeInit(DMA_Channel1);//复位DMA通道xDMA_InitStructure.DMA_Periphe
2、ralBaseAddr=ADC_DR_Address;//定义DMA通道外设基地址=ADC1_DR_Address源//AD采集到的数据存放的寄存器DMA_InitStructure.DMA_MemoryBaseAddr=(u32)ADC_RegularConvertedValueTab;//定义DMA通道存储器地址,内存中的数据目的DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;//指定外设为源地址DMA_InitStructure.DMA_BufferSize=
3、4;//定义DMA缓冲区大小4,4路AD,最后采集到的数值放在4位数组中DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//当前外设寄存器地址不变DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;//当前存储器地址递增DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;//定义外设数据宽度1
4、6位DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;//定义存储器数据宽度16位DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;//DMA通道操作模式位环形缓冲模式DMA_InitStructure.DMA_Priority=DMA_Priority_High;//DMA通道优先级高DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;//禁止DMA通道存储器到
5、存储器传输DMA_Init(DMA_Channel1,&DMA_InitStructure);//初始化DMA通道1DMA_Cmd(DMA_Channel1,ENABLE);//使能DMA通道1}voidADC1_config(){/*ADC1configuration------------------------------------------------------*/ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//AD转换模式ADC_InitStru
6、cture.ADC_ScanConvMode=ENABLE;//使能扫描,多通道ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//连续转换ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;;//有软件控制转换ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐ADC_InitStructure.ADC_NbrOfChan
7、nel=4;//转换通道为通道4,4个通道来回扫描ADC_Init(ADC1,&ADC_InitStructure);/*ADC1regularchannel14configuration*///ADC1选择信道14
8、15,采集次序1,采样时间55.5个周期ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_55Cycles5);//通道14,PC4扫面顺序1ADC_RegularChannelConfig(ADC1,ADC_Channel_
9、15,2,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_6,3,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_4,4,ADC_SampleTime_55Cycles5);}DMA其实开一个就够了