본문 바로가기

[ST_MICRO]/STM32F3

[STM32F373 EVM] 12bit ADC 테스트

[STM32F372 EVM] 12bit ADC 테스트




STM32F3 시리즈의 가장 강점은 저렴지만 강력한 ADC성능이다.


16비트 ADC도 추가되었고, ADC 속도도 향상되고 3채널 동시 획득이 가능하다고 한다. 


 - Ultra-fast 12-bit ADCs with 5 MSPS per channel (up to 18 MSPS in Interleaved mode)



16bit ADC테스트를 먼저 해 보고 싶지만 우선 기존 코드로 테스트 해 볼 수 있는 12bit ADC를 테스트 해보자


하지만 기존 코드와 많이 변경된것 같다.




STM32F373 ADC 초기화 코드


ADC_HandleTypeDef    AdcHandle;

  

void AdcInit(void)

{

__HAL_RCC_ADC1_CONFIG(RCC_ADC1PCLK2_DIV6);


AdcHandle.Instance          = ADCx;


AdcHandle.Init.ScanConvMode          = DISABLE;

AdcHandle.Init.ContinuousConvMode    = DISABLE;

AdcHandle.Init.DiscontinuousConvMode = DISABLE;

AdcHandle.Init.NbrOfDiscConversion   = 0;

AdcHandle.Init.ExternalTrigConv      = ADC_SOFTWARE_START;

AdcHandle.Init.DataAlign             = ADC_DATAALIGN_RIGHT;

AdcHandle.Init.NbrOfConversion       = 1;



GPIO_InitTypeDef          GPIO_InitStruct;


ADCx_CLK_ENABLE();

ADCx_CHANNEL_GPIO_CLK_ENABLE();


GPIO_InitStruct.Pin = ADCx_CHANNEL_PIN;

GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(ADCx_CHANNEL_GPIO_PORT, &GPIO_InitStruct);

}




STM32F373 ADC 획득 소스코드


unsigned int GetAdc(unsigned int Ch)

{

unsigned int val = 0;

ADC_ChannelConfTypeDef sConfig;


sConfig.Channel      = Ch;

sConfig.Rank         = 1;

sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;


HAL_ADC_ConfigChannel(&AdcHandle, &sConfig)


//Start the conversion process

HAL_ADC_Start(&AdcHandle)


HAL_ADC_PollForConversion(&AdcHandle, 10);


//ADC conversion completed

val = HAL_ADC_GetValue(&AdcHandle);


return val;

}






반응형