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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.