Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: catalyst - 29 Nisan 2019, 15:47:24

Başlık: STM32F42 Keil HAL Kütüphanesi ile ADC Okuma
Gönderen: catalyst - 29 Nisan 2019, 15:47:24
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);


}

}