Hallo zusammen
Ich versuche in einem bestehenden Firmware für den STM32G474 den ADC1
periodisch per Timer zu triggern (bisher ging das per Software Trigger).
Dazu habe ich mir den TIM7 ausgesucht und wie folgt initialisiert:
1 | TIM7->PSC = prescaler
|
2 | TIM7->ARR = period_us;
|
3 | TIM7->CR2 = TIM_CR2_MMS_1; //Trigger out on update
|
4 | TIM7->CNT = 0;
|
5 | TIM7->CR1 = TIM_CR1_CEN;
|
Setzte ich zusätzlich
1 | TIM7->DIER |= TIM_DIER_UIE;
|
wird der TIM7 Interrupt ausgelöst. Der Timer läuft also.
Den bestehenden ADC Code habe ich um die Zeile
1 | ADC1->CFGR |= ADC_EXTERNALTRIG_T7_TRGO | ADC_CFGR_EXTEN_0;
|
ergänzt.
Jedoch passiert nichts. Der ADC startet nicht. DR bleibt 0, keine
Interrupts.
Setze ich, wie bisher, manuell
1 | ADC1->CR |= ADC_CR_ADSTART;
|
läuft der ADC einmalig und liefert Daten.
Was habe ich übersehen?
Grundsatzfrage: Im Reference Manual wird für ADC_CFGR_EXTSELx nur "Event
0 - Event 31" geschrieben, aber ich finde nirgendwo eine Tabelle wo
welches Event her kommt. Die Konstante ADC_EXTERNALTRIG_T7_TRGO habe ich
auch dem HAL kopiert (ist 31).
Gibt es irgendwo eine Event Tabelle für den G474?
Grüße,
da1l6