关键词不能为空

当前您在: 主页 > 英语 >

STM32AD转换器使用详细总结

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-09 08:14
tags:

-

2021年2月9日发(作者:修道院)


1




关于

< p>
SCAN


模式和连续采样模式的搭配使用说明:



1




SCA N


模式设置有效时,会扫描所有设置的


AD

通道。扫描完成后,如果连续模式


无效,则停止采样;如果连续模式有效,则继续按 照通道设置顺序进行通道扫描采


样。



2




连续模 式设置有效时,软件一旦启动,会连续采样;如果此时设置了


SCAN

< br>模式,


则完成一次通道扫描采样,再从头来连续进行采样。



2




关 于


DMA


使用说明:



由于


AD


采样速度很快,


在通 道扫描模式进行


AD


采样时,


软件获取 采样数据可能出错,


这是因为上次采样数据没有及时取出,被后面的数据给覆盖掉了。这 时就需要采用启动


AD


采样完成的


DM A


传输,以保证数据的正确性。



3




函数< /p>


ADC_SoftwareStartConvCmd(ADC1, DISABLE)< /p>


不能关闭


AD





以下代码经过验证:



//******************************************* *********************************//



1


:使用


AD


通道 扫描,连续模式,使用


DMA


传输



void ADC1_Config_DMA (void)


{




/* DMA1 channel1 configuration ----------------------------------------------*/







DMA_DeInit(DMA1_Channel1);





DMA__PeripheralBaseAddr = ADC1_DR_Address;




DMA__MemoryBaseAddr = (u32)&A_Volt_Data[0];





DMA__DIR = DMA_DIR_PeripheralSRC;





DMA__BufferSize = 200;





DMA__PeripheralInc = DMA_PeripheralInc_Disable;





DMA__MemoryInc = DMA_MemoryInc_Enable;





DMA__PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;





DMA__MemoryDataSize = DMA_MemoryDataSize_HalfWord;





DMA__Mode = DMA_Mode_Circular;





DMA__Priority = DMA_Priority_High;





DMA__M2M = DMA_M2M_Disable;





DMA_Init(DMA1_Channel1, &DMA_InitStructure);








DMA_Cmd(DMA1_Channel1, ENABLE);





ADC__Mode = ADC_Mode_Independent;





ADC__ScanConvMode = ENABLE;





ADC__ContinuousConvMode = ENABLE;





ADC__ExternalTrigConv = ADC_ExternalTrigConv_None;





ADC__DataAlign = ADC_DataAlign_Right;





ADC__NbrOfChannel = 2;





ADC_Init(ADC1, &ADC_InitStructure);









/* ADC1 regular channel8 configuration */




ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_13Cycles5);





ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_13Cycles5);







/* Enable ADC1 DMA */





ADC_DMACmd(ADC1, ENABLE);





/* Enable ADC1 */





ADC_Cmd(ADC1, ENABLE);





/* Enable ADC1 reset calibaration register */








ADC_ResetCalibration(ADC1);





/* Check the end of ADC2 reset calibration register */





while(ADC_GetResetCalibrationStatus(ADC1));





/* Start ADC1 calibaration */





ADC_StartCalibration(ADC1);





/* Check the end of ADC1 calibration */





while(ADC_GetCalibrationStatus(ADC1));







}



此种 模式下,


应用程序可以用定时器配合进行工作,


启动

< p>
AD


时同时启动定时器,


当定时器


时间到时,调用函数


ADC_DMACmd(ADC1, DISABLE)< /p>


关闭


AD


采样后的


DMA


传输功能,


此时


AD


继续工作,但是系统不去处理。在低功耗应用中,如果需要降低系统功耗,还可调



ADC_Cmd(ADC1, DISABLE)


关 闭


AD





//************************************* ***************************************//

< br>例


2


:使用


AD


通道扫描,非连续模式,使用


DMA


传输



void ADC1_Config_DMA (void)


{




/* DMA1 channel1 configuration ----------------------------------------------*/







DMA_DeInit(DMA1_Channel1);





DMA__PeripheralBaseAddr = ADC1_DR_Address;




DMA__MemoryBaseAddr = (u32)&A_Volt_Data[0];





DMA__DIR = DMA_DIR_PeripheralSRC;





DMA__BufferSize = 200;





DMA__PeripheralInc = DMA_PeripheralInc_Disable;





DMA__MemoryInc = DMA_MemoryInc_Enable;





DMA__PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;





DMA__MemoryDataSize = DMA_MemoryDataSize_HalfWord;





DMA__Mode = DMA_Mode_Circular;





DMA__Priority = DMA_Priority_High;





DMA__M2M = DMA_M2M_Disable;





DMA_Init(DMA1_Channel1, &DMA_InitStructure);




-


-


-


-


-


-


-


-



本文更新与2021-02-09 08:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/619975.html

STM32AD转换器使用详细总结的相关文章