STM32F42 Keil HAL Kütüphanesi ile ADC Okuma

Başlatan catalyst, 29 Nisan 2019, 15:47:24

catalyst

Mesajınıza kod eklemek için "Code"
butonunu kullanınız.

Herkese Merhaba. STM32F4 için adc modlarını araştırdım. Continuous mode, discontinuous mode, DMA mode ve interrupt mode bulunmakta. Benim amacım şu; 15 adet analog gerilim okumam gerekiyor. Bir adet analog pini kullanacağım. Bir mux yapısı kurdum ve for döngüsü içerisinde aşağıdaki kodlarda göründüğü gibi her kanalı MCU'nun adc pinine uygulayıp okumam gerekiyor. Bunun için hangi modu kullanmalıyım ?

void Read_ADC_From_74HC4067(void)
{
	for ( uint8_t z = 0; z <= 15; z += 1 )
	{
		//Z'nin degerine göre Kanal secimi yapilacak.
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT0_Pin, ( z >> 0) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT1_Pin, ( z >> 1) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT2_Pin, ( z >> 2) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT3_Pin, ( z >> 3) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET);
		
		//Enable'i Low ve High yapip yukarida secilen kanali ortak çikisa aktariyor.
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT_EN_Pin, GPIO_PIN_RESET);	
		Temporary_ADC_Value[z] =  HAL_ADC_GetValue(&hadc);
		HAL_GPIO_WritePin(GPIOA, ADC_CH_SELECT_EN_Pin, GPIO_PIN_SET);
		

	}
	
}