Diskuze - danyk.cz

Vlákno z kategorie: Hlavní diskuze
Celkem 17 odpovědí.


9.04.2019 (04:46:24) K # IP X
RayeR (web) :
Sakra, to vypiceny MOSI na STM32 nejsem schopen nastavit do definovany klidovy urovne po prenosu, at jako posledni byte poslu FF nebo 0, tak to zustane v nake nahodne urovni, vestinou v 0...
9.04.2019 (11:07:27)  # IP X
RayeR (web) :
Zajimave, kdyz poslu za sebou aspon 4 byte FF, tak zustane MOSI v 1, kdyz poslu 3 a mene FF, tak zustane v 0, ma to nakou logiku?
9.04.2019 (14:07:20)  # IP X
RayeR (web) :
BTW studuju na STM32G0 ten DMAMUX a sem z toho teda na vetvi, docela silenost. Sice super, ze je to ted flexibilni to prirazeni kanalu, ale kdo to ma programsovat? Nakej sampl kod s registrama bez HAL/LL - to bych chtel asi moc. Na Fku stacilo naprogramit asi 4 registry a vybrat spravny kanal/stream a tady ted toto...
9.04.2019 (15:11:12)  # IP X
RayeR (web) :
9.04.2019 (17:09:24)  # IP X
RayeR (web) :
Tak sem se to podle toho snazil nak naroubovat na G0, ale proste ne, zadna DMA transakce se neprovede, hodiny od DMA1 a SPI2 zaply mam, v tom MUXu by snad mel stacit jen ID zdroje:
DMAMUX1_Channel5->CCR=19<<DMAMUX_CxCR_DMAREQ_ID_Pos; // DMA request ID 19 = SPI2_TX (see reference manual: DMAMUX mapping table)
10.04.2019 (19:50:32)  # IP X
RayeR (web) :
Hm, tak sem prostudoval z Cube/stm32g0xx_hal_dma.c a examplu SPI DMA master funkci HAL_StatusTypeDef HAL_DMA_Init() a nenasel sem, ze by tam delali neco vic nez delam v kodu ja:
1) zapnuti hodin pro DMA1 v RCC
2) nastaveni DMA kanalu: adresy zdroje, cile, pocet prenosu a CCR registr
3) nastaveni DMAMUX channel CCR registru na DMA request ID 19 - SPI2_TX
4) povoleni TXDMAEN v SPI->CR2
5) zapnuti EN v DMA CCR
6) poslani nejakyho byte aby se nahodil SPI TXE
a nedela to nic, tak uz teda nevim kde dal patrat. Co sem pochopil, u Gcka je snad jedno, ktery DMA kanal si vyberu, pres ten MUX by melo jit nastavit libovolna periferie na libovolny kanal...
11.04.2019 (10:12:24)  # IP X
Martin12:
CubeMx k tomu ještě samostatně generuje obsluhu a initializaci pro interrupt toho DMA příp i SPI, koukni jestli něco nespáchaj ještě u toho (zda k nastavení interruptu nepřipíší další config k DMA či SPI)
11.04.2019 (11:08:39)  # IP X
RayeR (web) :
Preruseni tam zatim pouzivat nepotrebuju a tudiz ho nenastavuju. Az bude fungovat zaklad, ze to vybleje jednorazove blok dat, tak budu resit teprv preruseni.
11.04.2019 (12:36:19)  # IP X
Martin12:
Tak jsem to nemyslel.
Myslel jsem zda ten HAL blevajs od CubeMX nevytvoří nějaký přídavný kód u nastavování interruptu, které to myslím pro DMA nastavuje automaticky samo.
11.04.2019 (12:42:13)  # IP X
RayeR (web) :
Tak uz sem na to kapnul, pritom takova blbost. Ty kokoti se nemuzou shodnout na cislovani od 0 nebo od 1, takze DMA kanaly se tady cislujou od 1 zatimco registry DMAMUX od 0. Takze kdyz chci pouzit kanal 1 (DMA1_Channel1) pro SPI, tak musim zapsat DMAREQ_ID do DMAMUX1_Channel0. No takze uz to pleje, takova blbost a zabity 2 vecery, chjo...
11.04.2019 (21:39:17)  # IP X
VroutekB:
To je nějaká blbost. U DMA jsou kanály i streamy odjakživa číslovaný od nuly.
Asi jím zejtra podám hint, nechť to předělaj, divizní na G0 a G4 jsou zrovna tu na ráně v Praze **22
11.04.2019 (21:42:03)  # IP X
VroutekB:
I když koukám, že fakt ne všude O_o, asi už nějak degenerátním, jak odmítám s těma novejma řadama dělat (pač taky nějak tuším, že z nich mnohdy nekouká nic dobrýho, zvlášť když to slyším z první ruky v práci).
Tím spíš si s nima popovídám, sem zvědavej, co se dozvím, proč to jednou je tak, a pak zas jinak.
11.04.2019 (22:58:30)  # IP X
RayeR (web) :
Prave ze G ma to DMA prekopany, tam zadny streamy uz neexistujou, coz me dost matlo, protoze vsechny examply, co lidi resili na netu, se tykaly starsich generaci a pro G/H poradne este nikod nic nenakodil/nenasdilel.
Pochybuju, ze kuli tobe budou neco precislovavat, kdyz uz to maji nekolik mesicu takto zavedeno v Cube headerech:
stm32g071xx.h:
#define DMA1_Channel1_BASE (DMA1_BASE + 0x00000008UL)
#define DMA1_Channel2_BASE (DMA1_BASE + 0x0000001CUL)
#define DMA1_Channel3_BASE (DMA1_BASE + 0x00000030UL)
#define DMA1_Channel4_BASE (DMA1_BASE + 0x00000044UL)
#define DMA1_Channel5_BASE (DMA1_BASE + 0x00000058UL)
#define DMA1_Channel6_BASE (DMA1_BASE + 0x0000006CUL)
#define DMA1_Channel7_BASE (DMA1_BASE + 0x00000080UL)

#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE)
#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x00000004UL)
#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x00000008UL)
#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x0000000CUL)
#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x00000010UL)
#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x00000014UL)
#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x00000018UL)

Dokumentce v datasheetu je taky kapanek zavadejici:
Channel configuration procedure
The following sequence should be followed to configure both a DMAMUX x channel and the related DMA channel y:
1.Set and configure completely the DMA channel y, except enabling the channel y.
2. Set and configure completely the related DMAMUX y channel.
3. Last, activate the DMA channel y by setting the EN bit in the DMA y channel register.
Si tam ty indicky cmoudy srovnejte, at to pisou trochu poradne a ne cut&paste...
11.04.2019 (23:00:50)  # IP X
RayeR (web) :
Jinak ale myslim, ze to flexibilni DMA slo spravnym smerem, ze nemusis uz hlidat jesi funguje na konkretnim kanalu konkretni periferie...
11.04.2019 (23:06:41)  # IP X
RayeR (web) :
>odmítám s těma novejma řadama dělat (pač taky nějak tuším, že z nich mnohdy nekouká nic dobrýho, zvlášť když to slyším z první ruky v práci).
A koukam, ze Vroutek prochazi jistou sebereflexi, mozna i deziluzi, treba za par let zacne kodit na Renesasu. Renesas ale na EW zadne kity zdarma nedaval :)
12.04.2019 (13:32:36)  # IP X
VroutekB:
Renesas? I wouldn't touch that with a stick!
Vroutek spíš přejde na FPGA. Beztak, všecky zajmavější věci se dají dělat akorát s FPGA. Na MCU je to akorát vopruz nebo neřešitelný problém.
12.04.2019 (16:03:02)  # IP X
RayeR (web) :
Jeden kamos pouziva v praci nake cipy od Cypressu s ARM jadrem + CPLD, tak ma pohromade to nejlepsi z obou svetu. Napr. kdyz potreboval 256 PWMek a pod. Proste si nadesignujes specificky periferie podle potreby, v tom jejich IDE to ani neni zadna raketova veda. Jen sou ty cipy trochu drazsi, ale v pristroji za pul mega naprosto nicotna polozka...
13.04.2019 (17:53:29)  # IP X
VroutekB:
Až mi někdo začne platit půl mega za každý bastl, tak možná budu uvažovat o používání divných předražených součástek od Cypressu. **02
Přezdívka:
Heslo:
Text: