Gast
#4560362
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