Hallo, ich versuche den STM32F103 im ADC Multichannel zu programmieren. Die Daten von zweier Potis (ADC1_Ch8 und ADC1_Ch9) sollen via DMA in den Speicher geschrieben werden. Dafür habe ich den Scan und Continous Mode im ADC programmiert. Außerdem habe ich DMA freigegeben. Für einen Kanal klappt das auch alles wunderbar. Wenn ich nun beide Kanäle scannen möchte, dann steht in beiden Speicheradressen immer nur der Wert des ersten Kanals. Der DMA-Zugriff übergibt also nicht die Werte beider Kanäle. Ich tippe auf einen Fehler in der Initialisierung des ADCs. Vielleicht kann mir jemand helfen. Vielen Dank... macros: BBWH - bit band write - write one bit into register [Register,Stelle,Wert 0 oder 1] WRW - write register word - write complete register [Register Wert] WRHW - write register halfword program: ;----------------------------------------------------------------------- ------------ AREA Variablen, DATA, READWRITE AD_value DCD 0 ;start-address of AD_value ;----------------------------------------------------------------------- ------------ AREA ADC1,CODE,READONLY EXPORT start start ;--- CLK --- LDR r2,=RCC_APB2ENR LDR r3,=2_1000011100 ; ADC1, GPIO A/B/C STR r3,[r2] BBWH RCC_AHBENR,0,1 ; DMA ;GPIOs --- ;Port A: LDR r2,=GPIOA_CRL LDR r3,=0x44444404 ;Pin 1: analog input STR r3,[r2] ;Port B LDR r2,=GPIOA_CRL LDR r3,=0x44444400 ;Pin 0/1: analog input STR r3,[r2] ;--- ADC1 init --- LDR r2,=ADC1_SQR3 LDR r3,=2_0100101000 ;SQ8 first in regular group STR r3,[r2] ;SQ9 second in regular group ;sample time: BBWH ADC1_SMPR2,24,1 ;sampletime = 7,5 cycles BBWH ADC1_SMPR2,27,1 ;DMA1 init--- WRW DMA_CPAR1,ADC1_DR ;periph. DMA-ch1 WRW DMA_CMAR1,AD_value ;memory DMA-ch1 WRW DMA_CNDTR1,2 ;DMA-cyc. WRHW DMA_CCR1, 2_101010100001 ;DMA-ch1 config, B5-circular B7-mem increment B9/B11-32Bit mode ;ADC calibration: LDR r2,=ADC1_CR2 LDR r3,=2_101 ;calibration ADC STR r3,[r2] test_CAL BBRH ADC1_CR2,2 CMP r7,#0 ;wait for cal BNE test_CAL BBWH ADC1_CR2,8,1 ;DMA enable BBWH ADC1_CR2,1,1 ;continous Mode BBWH ADC1_CR1,8,1 ;Scan Mode enable BBWH ADC1_CR2,0,1 ;start covertion ;======================================================================= ============ ;Main: ;----------------------------------------------------------------------- ------------ ;LCD mainloop ;... display data... B mainloop END
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.