STM32 branje ADC z DMA za več kanalov

Tu bo govora o vseh mogočih mikrokontrolerjih ne glede na tip ali zgradbo

Moderator: tilz0R

STM32 branje ADC z DMA za več kanalov

OdgovorNapisal/-a marko » 12 Dec 2018, 15:20

Brati moram 13 a/d vhodov, zato sem izbral STM32F303CBTx. Teh 13 a/d vhodov je razporejenih na štirih ADC kanalih. Kako lahko naredim, da bo DMA zapisoval v neke spremenljivke (za pravi vrstni red in kombiniranje med njimi bom že poskrbel) ?

Tole imam na voljo v CubeMX pri DMA:
V DMA1:
ADC1 - DMA1 Channel 1
(drugega v DMA1 ne morem dodati)

V DMA2:
ADC2 - DMA2 Channel 1 in DMA2 Channel 3
ADC3 - DMA2 Channel 5
ADC4 - DMA2 Channel 2 in DMA2 Channel 4

Problem sta ADC2 in ADC4, ki mi CubeMX ponuja dva DMA kanala. Ko npr. dodam ADC2 (katerikoli kanal), potem ADC2 ne morem več dodati, rabil pa bi dodati še drugi kanal.

Kako lahko to rešim? Je to bug v CubeMX. Ročno kode nisem poskusil dodajat, raje vprašam prej :)

Se opravičujem če je čudno napisano, ampak je res težko dobro vprašati :)
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 997
Pridružen: 18 Jan 2015, 02:00
Zahvalil se je: 115 krat
Prejel zahvalo: 124 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 67

Re: STM32 branje ADC z DMA za več kanalov

OdgovorNapisal/-a tilz0R » 14 Dec 2018, 00:39

Marko, ne štekam tvojega vprašanja, ampak spodaj je razlaga:

RM sekcija 13.4.7 prikazuje DMA request mapping slike, na katerih vidiš, da:

- ADC1 je povezan na DMA1, channel 1
- ADC2 je povezan na DMA2, channel 1 or 3. Izberi katerega hočeš
- ADC3 je povezan na DMA2, channel 5
- ADC4 je povezan na DMA2, channel 2 ali 4 (pri tem je zvezdica, preveri pred uporabo).

Če si ADC2 dodal, potem ga nemoreš še enkrat dodati. Zakaj bi to bilo uporabno? :)

DS: https://www.st.com/resource/en/datashee ... f303cb.pdf
RM: https://www.st.com/content/ccc/resource ... 043574.pdf

Če sample rate ni striktno pomemben (če je, potem potrebuješ več ADC-jev z hkratnim delovanjem), bi priporočam MCU, ki ti pokrije vse kanale na single-ADC, recimo STM32L431RB. Enostavneje za konfiguracijo + implementacija single bufferja in single DMA. Je pa res, da je maximalen efektiven sample rate 13x manjši od MAX adc sample frekvence.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1668
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 218 krat
Prejel zahvalo: 431 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: STM32 branje ADC z DMA za več kanalov

OdgovorNapisal/-a marko » 14 Dec 2018, 08:45

Zivjo,

Aha, šele sedaj razumem, ne vem kaj sem razmišljal in kje sem imel glavo.

Avtomatsko sem sklepal, da je ta Channel, ADC channel, kar seveda ni res in itak ne more biti. Ta Channel je DMA channel, ki nima s tem ADC-jem nobene veze. Zmedlo me je to, da so ravno tako označeni tudi moji ADC kanali. Jao.

Se opravičujem in hvala za razlago :)

LP
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 997
Pridružen: 18 Jan 2015, 02:00
Zahvalil se je: 115 krat
Prejel zahvalo: 124 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 67


Vrni se na Hardware

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 0 gostov