Fehlerhafte Werte vom ADC

Gast #4560362
Lesenswert?

Hallo zusammen,

ich programmiere an einem STM32F429 und möchte Analogwerte einlesen mit 
ADC1 und ADC3.

Beide Einheiten habe ich initialisiert und konfiguriert (Beispiel für 
ADC3):

/* ADC common init */
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div8;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = 
ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&ADC_CommonInitStructure);

ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = 
ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_ExternalTrigConv = 0;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC3, &ADC_InitStructure);

/* ADC3 regular channel xx configuration */
//ADC_RegularChannelConfig(ADC3, ADC_Channel_14, 1, 
ADC_SampleTime_15Cycles);

/* Enable end-of-conversion-bit */
ADC_EOCOnEachRegularChannelCmd(ADC3,ENABLE);

/* Enable ADC3 */
ADC_Cmd(ADC3, ENABLE);

Ich habe eine Wandlungsroutine für jeden ADC, die ich aus der Software 
aufrufe, darin (hier das Beispiel für ADC3) und übergebe den Kanal als 
parameter (u8param_ADC_Channel)

/* Configure the ADC-channel */
ADC_RegularChannelConfig(ADC3,u8param_ADC_Channel,1,ADC_SampleTime_28Cyc 
les);
/* Clear all flags which could be coming up */
ADC_ClearFlag(ADC3, ADC_FLAG_OVR | ADC_FLAG_STRT | ADC_FLAG_EOC);
/* Start conversion */
ADC_SoftwareStartConv(ADC3);

/* Read out measured value */
u16l_adc_value = ADC_GetConversionValue(ADC3);

Jetzt funktioniert soweit alles, ich bekomme korrekte Werte. Nur wenn 
ich versuche auf beiden ADCs Werte auf dem gleichen Kanal (z.B. 
ADC_Channel_15) einzulesen erhalte ich einen falschen Wert.

Ich bin vertraut mit dem Aufbau der ADCs, die Kanäle werden umgeschaltet 
von einem ADC zum anderen.

Wenn ich nun 2 ADCs (ADC1 und 3) und dazu noch den selben Kanal 
gleichzeitig benutzen will, muss ich dann definitiv den 
ADC_TripleMode_xxx auswählen speziell für diese Kanäle oder für alle?
Was wäre denn von den Triple-Modi der einfachste, da ich keine 
zeitkritischen Wandlungen machen muss?

Danke soweit

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren