mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 ADC-Multichannel (Scan Mode)


Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.