Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: yamak - 14 Nisan 2014, 16:09:29

Başlık: stm32f303 Adc problemi
Gönderen: yamak - 14 Nisan 2014, 16:09:29
stm32f303'de adc yi kullanıyorum.3 kanaldan continuos modda okuma yapıyorum.Sonuçları da dma yardımı ile de bir diziye aktarıyorum.Daha sonra da dışarıdan spi'ile istediğim zamanda adc değerlerinin bulunduğu diziyi okuyorum.Fakat şöyle bir sorunum var.Kanal1 kanal2 yi de etkiliyo.Mesela kanal1 de 3.3 v kanal2 de 0 volt olsun.Kanal1 okuduğumda değer 4095 kanal2 yi okuduğumda değer 1525 çıkıyo.Kanal1deki gerilimi düşürdükçe kanal2 de düşüyor.Bu sorunun sebebi nedir acaba.
Adc init kodları:
void ADCInit(void)
{
ADC1->CR=0;
ADC1->CR&=~0x3000000;//ADC VOLTAGE REGULATOR ENABLE
ADC1->CR|=0x10000000;
Delay(1);//REGULATOR ACILANA KADAR BEKLE
ADC1->CR&=~(0x4000000);//ADC CALIBRATION MODE=single ended inputs
ADC1->CR|=0x80000000;//ADC CALIBRATION START
while(((ADC1->CR&(0x80000000))>>31)==1);//ADC CALIBRASYON BITENE KADAR BEKLE
ADC1_2->CCR=2<<8;;//2 SAMPLE ARASI SURE=Tadc*2
ADC1->CFGR=(1<<13)|(1<<14);//Continuous Mode,Auto Delay Enable
ADC1->SQR1|=0x03;//3 kanal okunacak
ADC1->SQR1|=(0x01<<6)|(0x02<<12)|(0x08<<18);//1. oncelikle 1. Kanal okunacak
  ADC1->CFGR|=0x03;//Dma request enable
  ADC1_2->CCR|=1<<13;
ADC1->SMPR1=0;//ADC hizi=19.5 ADC Clock
ADC1->CR|=1;//ADC Enable

while(!(ADC1->ISR&(0x01)));//ADC Enable olana kadar bekle
//ADC1->IER|=1<<2;//ADC Kesmesi aktif.Her bir cevrim bitince kesme olusacak
// NVIC_EnableIRQ(ADC1_2_IRQn);
ADC1->CR|=1<<2;

Dma init kodları:
void DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
DMA_Cmd(DMA1_Channel1,DISABLE);
DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr= (uint32_t)(&(ADC1->DR));
DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&ADC_Val;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=8;
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority=DMA_Priority_High;
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
DMA_Init(DMA1_Channel1,&DMA_InitStructure);
DMA_Cmd(DMA1_Channel1,ENABLE);
}
Başlık: Ynt: stm32f303 Adc problemi
Gönderen: sedronjames - 10 Mayıs 2022, 11:38:14
sorunu çözebildiniz mi? nasıl çözdünüz?