Оди до главна содржина
Učilnica FRI 25/26
  • Дома
  • Календар
  • More
Македонски ‎(mk)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Моментално користите гостински пристап
Најави се
Učilnica FRI 25/26
Дома Календар
Прошири ги сите Затвори ги сите
  1. Контролна табла
  2. or
  3. 11. vaja - DMA in serijski vmesnik
  4. 11. naloga: Neposredni dostop do pomnilnika (DMA)

11. naloga: Neposredni dostop do pomnilnika (DMA)

Услови за завршување
Due: понеделник, 19 јануари 2026, 23:55
Enoto USART3 oz- DBGU uporabljajte tako, da bo nize znakov sprejemala in oddajala s pomočjo DMA prenosov. Osnovne nastavitve enot USART3 oz. DBGU ostanejo enake kot pri nalogi z USART oziroma DBGU (podprograma _INIT). Pri tem dodatno napišite naslednje podprograme:

- Podprogram RCV_DMA, ki nastavi DMA krmilnik tako, da je pripravljen na sprejem naslednjih N znakov. Naslov polja, v katerega naj se znaki zapisujejo, naj dobi podprogram v registru R0, vrednost parametra N pa naj se prenese v podprogram preko registra R1. Parameter N ima lahko vrednost med 1 in 80. Če je vrednost parametra večja oziroma manjša, jo omejite na navedeni interval.

- Podprogram SND_DMA, ki nastavi DMA krmilnik tako, da je pripravljen na oddajo znakov. Naslov niza naj se prenese v podprogram preko registra R0, dolžina niza pa preko registra R1.

- Podprogram CHANGE, ki zamenja velike in male črke v nizu znakov. Naslov izvornega niza dobi podprogram v registru R0, naslov ponornega niza v registru R1, dolžino obeh nizov pa v registru R2.

V glavnem programu po začetnih nastavitvah (_INIT) pokličite podprogram SND_DMA, ki odda začetni niz znakov. Nato pokličite še RCV_DMA, kjer počakajte, da se DMA prenos zaključi. S klicem podprograma CHANGE zamenjajte velike in male črke v sprejetem nizu. Rezultat pošljite nazaj v PC s pomočjo SND_DMA.

Nalogo lahko rešite tudi na STM32H7 sistemu. Serijska povezava že deluje preko USB kabla in ni potrebno posebno povezovanje.
Dokumentacija je podana posebej.

FRI-SMS: Delo z lokalno testno prevezavo (Local Loopback, brez kabla):
V glavnem programu po začetnih nastavitvah (DEBUG_INIT) pokličite podprogram RCV_DMA in sprožite sprejem niza znakov. Nato pokličite podprogram RCV_DMA in sprožite oddajo niza znakov. Počakajte da se DMA oddaja niza znakov zaključi. Zaradi lokalne prevezave se bodo oddani znaki hkrati tudi sprejeli, zato preverite še, ali se je sprejem tudi zaključil (zastavica ENDRX). S klicem podprograma CHANGE zamenjajte velike in male črke v sprejetem nizu in jih vpišite v niz, ki se bo oddal v naslednji iteraciji.
Моментално користите гостински пристап (Најави се)
Преземи мобилна апликација
Powered by Moodle
Obvestilo o avtorskih pravicah