">
開始時(shí)候使用的是stdlib的庫(kù),最近發(fā)現(xiàn)cube庫(kù)用的越來越廣泛了,遂開始使用cube庫(kù)來完成ADC的多通道采集實(shí)驗(yàn)。
ADC 的driver 在STM32F0XX_HAL_DRIVER當(dāng)中,有stm32f0xx_hal_adc.c文件中,我們可以在stm32f0xx_hal_conf.h中開啟 宏定義 ADC 模塊。
ADC有三種工作模式,polling\ interrupt\DMA
我這里使用了polling的方式來獲取多通道的數(shù)據(jù)。
首先是要聲明兩個(gè)參數(shù)設(shè)置的結(jié)構(gòu)體
ADC_HandleTypeDef AdcHandle;
ADC_ChannelConfTypeDef sConfig;
[cpp] view plain copy
AdcHandle.Instance = ADC1;
AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
AdcHandle.Init.LowPowerAutoWait = DISABLE;
AdcHandle.Init.LowPowerAutoPowerOff = DISABLE;
AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
AdcHandle.Init.ScanConvMode = ADC_SCAN_ENABLE;
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
AdcHandle.Init.ContinuousConvMode = ENABLE;
AdcHandle.Init.DiscontinuousConvMode = DISABLE;
AdcHandle.Init.ExternalTrigConv = ADC_SOFTWARE_START;
AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
AdcHandle.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
AdcHandle.Init.DMAContinuousRequests = DISABLE;//
AdcHandle.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
/* Initialize ADC peripheral according to the passed parameters */
if (HAL_ADC_DeInit(&AdcHandle) != HAL_OK)
{
Error_Handler();
}
if (HAL_ADC_Init(&AdcHandle) != HAL_OK)
{
Error_Handler();
}
/* ### - 2 - Start calibration ############################################ */
if (HAL_ADCEx_Calibration_Start(&AdcHandle) != HAL_OK)
{
Error_Handler();
}
基本的參數(shù)設(shè)置
比較重要的參數(shù)有ADC clock設(shè)置,sample cycle,ADC分辨率,多通道 scan mode設(shè)置。
ADC clock 有兩個(gè)時(shí)鐘源可以選擇,一個(gè)是內(nèi)部的14MHZ的時(shí)鐘,,另一個(gè)為APB的時(shí)鐘 最大為14MHZ.
get_ADC_value 為讀取AD值的模塊,形參為通道,輸入通道名稱得到該通道對(duì)應(yīng)的AD值。
float get_ADC_value(uint32_t channel)
{
// uint32_t nResultDMA;
float temp;
start_adc();
config_channel(channel);
HAL_ADC_Start(&AdcHandle);
HAL_ADC_PollForConversion(&AdcHandle,1);
temp=HAL_ADC_GetValue(&AdcHandle);
HAL_ADC_Stop(&AdcHandle);
//temp=temp*3/4096;
return temp;
}
上海紫卓電子科技有限公司
地址:上海市嘉定工業(yè)區(qū)葉城路925號(hào)B區(qū)4幢J
網(wǎng)址:fashioncenter.cn
電話:021-31007998
傳真:021-31007998
郵件:569998567@qq.com
在線咨詢:
569998567
致力成為優(yōu)秀的IC供應(yīng)配單專家及IC代理商
竭力為客戶提供一站式電子元器件采購(gòu)及IC配套服務(wù)
上海紫卓電子科技有限公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像
CopyRight 2020-2025 fashioncenter.cn All rights reserved