56
Brzi prenos i obrada podataka korišćenjem TMS320F28335 DSC-a Izveštaj za projekat iz predmeta Mikrokontroleri Projekat koji je realizovan podrazumeva AD konverziju podataka, njihov prikaz na hyper terminal, i to na način da procesor što manje učestvuje u tom prenosu kako bi bio maksimalno rasterećen. Ovo je ostvareno korišćenjem DMA kontrolera i McBSP prenosa podataka. Za slanje podataka na hyper terminal iskorišćen je SCI. 2012 Jelena Zdravković 12822, Miloš Lazić 13166 Marko Jelenković 12590 i Igor Stojanović 12777 Univerzitet u Nišu Elektronski fakultet februar 2012

Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

  • Upload
    buibao

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i obrada podataka korišćenjem TMS320F28335 DSC-a Izveštaj za projekat iz predmeta Mikrokontroleri Projekat koji je realizovan podrazumeva AD konverziju podataka, njihov prikaz na hyper terminal, i to na način da procesor što manje učestvuje u tom prenosu kako bi bio maksimalno rasterećen. Ovo je ostvareno korišćenjem DMA kontrolera i McBSP prenosa podataka. Za slanje podataka na hyper terminal iskorišćen je SCI.

2012

Jelena Zdravković 12822, Miloš Lazić 13166 Marko Jelenković 12590 i Igor Stojanović 12777

Univerzitet u Nišu Elektronski fakultet

februar 2012

Page 2: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

2

Sadržaj

Uvod ..................................................................................................................................... 4

Karakteristike TMS320F28335 ............................................................................................... 6

Mamorijska magistrala (Harvard arhitektura) ............................................................................ 6

Periferijska magistrala ................................................................................................................. 6

Memorijsak mapa ........................................................................................................................ 8

Sigurnost ...................................................................................................................................... 9

Periferijski interrupt ekspandor (PIE) .......................................................................................... 9

Watchdog .................................................................................................................................. 10

Taktovanje periferija ................................................................................................................. 10

Periferije .................................................................................................................................... 10

Analog-to-Digital Converter (ADC) ....................................................................................... 11

Autokonverzija .......................................................................................................................... 12

ADC preskaler ............................................................................................................................ 15

ADC frekvencija uzorkovanja ..................................................................................................... 16

Režim niske potrošnje ............................................................................................................... 17

Funkcija prebrisavanja .............................................................................................................. 17

ADC kalibracija ........................................................................................................................... 17

Interni/eksterni izvor referentnog napona ............................................................................... 17

Kratak pregled ADC registara .................................................................................................... 19

ADC konfiguracija ...................................................................................................................... 21

Direct Memory Access (DMA) .............................................................................................. 25

DMA magistrala ......................................................................................................................... 25

Adresni pokazivač i kontrola prenosa ....................................................................................... 25

Odlike ADC sinhronizacije.......................................................................................................... 27

Kratak pregled DMA registara ................................................................................................... 28

DMA konfiguracija ..................................................................................................................... 30

Multichannel Buffered Serial Port (McBSP) .......................................................................... 35

Page 3: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

3

McBSP pakovanje podataka ...................................................................................................... 38

McBSP taktovanje ..................................................................................................................... 39

McBSP Prijem ............................................................................................................................ 40

McBSP Predaja .......................................................................................................................... 41

McBSP Interrupt i DMA ............................................................................................................ 42

Kratak pregled McBSP registra .................................................................................................. 43

McBSP konfiguracija .................................................................................................................. 44

Serial Communications Interface (SCI) ................................................................................. 46

Arhitektura SCI modula ............................................................................................................. 49

SCI programabilni format podataka .......................................................................................... 49

SCI komunikacioni format ......................................................................................................... 50

Sekvenca prijema podatka ........................................................................................................ 50

Sekvence slanja podatka ........................................................................................................... 51

SCI Baud rete proračun ............................................................................................................. 52

Kratak pregled SCI registara ...................................................................................................... 53

SCI konfiguracija ........................................................................................................................ 54

Reference ............................................................................................................................ 56

Page 4: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

4

Uvod

U današnjoj tehnologiji se sve više javlja potreba za korišćenjem brzih i pouzdanih

kontrolera koji pored toga mogu da se odazovu potrebi za malom potrošnjom. Ovakva vrsta

kontrolera se najčešće realizuje tako da u sebi sadrži procesore specijalne namene i širok spektar

naprednih periferija koje omogućavaju povezivanje sa velikim brojem podsistema. Kontroler

koji je korišćen za realizaciju ovog projekta je DSC (Digital Signal Controller) firme Texas

Instruments, familije TMS320F2833x. Kontroler je smešten na kontrolnoj kartici

TMDSCNCD28335PGF R1.0 koja je utaknuta u razvojni sistem Peripheral Explorer.

Projekat koji je realizovan podrazumeva AD konverziju podataka, njihov prikaz na hyper

terminal, i to na način da procesor što manje učestvuje u tom prenosu kako bi bio maksimalno

rasterećen. Ovo je ostvareno korišćenjem DMA kontrolera i McBSP prenosa podataka. Za slanje

podataka na hyper terminal iskorišćen je SCI.

Blok šema realizovanog sistema

Analogni ulaz u AD konvertor je simuliran korišćenjem potenciometra koji se nalazi na

razvojnom sistemu. AD konvertor je podešen tako da odmerava signal frekvencijom 2.5 MHz.

Rezultati konverzije se smeštaju u bafer koji se sastoji od 16 registara veličine 16 bitova. AD

konvertor radi u kontinualnom modu što znači da se koriste dva sekvencera koji su kaskadno

povezani i da se nakon ispunjavanja svih registra bafera, novi ciklus AD konverzije automatski

startuje. Za AD konverziju se koristi samo kanal ADCINA0. Kada se ispune sva 16 registara

Page 5: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

5

bafera, AD konvertor šalje triger signal DMA kontroleru. DMA kontroler je podešen tako da

očekuje triger signal AD konvertora na kanalu CH1. Nakon trigerovanja od strane AD

konvertora, DMA kontroler prebacuje podatke iz bafera AD konvertora u RAM memoriju.

Prenos podataka se vrši u jednom ciklusu gde je DMA kontroler podešen tako da nakon svake

prenete reči inkrementira izvorišnu i odredišnu adresu. Nakon prebacivanja podataka iz AD

konvertora u RAM memoriju, DMA šalje iste podatke preko kanala CH2 ka McBSP. Prenos

podataka inicira McBSP slanjem triger signala DMA kontroleru na kanal CH2. McBSP prihvata

podatke u bafer za slanje DXR1. McBSP je podešen tako da simulira komunikaciju izmeĎu dva

procesora izborom loopback režima rada. McBSP predajnik je podešen da generiše

sinhronizacione signale (MFSX, MCLKX). Prenos podataka se vrši na taj način što se u okviru

frejma šalje jedna reč veličine 16 bitova. Nakon što McBSP prijemnik primi podatak, on šalje

triger signal DMA kontroleru preko kanala CH3. Kada DMA primi triger signal od McBSP-a, on

preuzima podatke iz McBSP DRR1 bafera i prebacuje ih RAM memoriju. Nakon toga se podaci

iz RAM memorije šalju preko SCI komunikacije na hyper terminal. SCI interfejs je podešen tako

da šalje podatke brzinom od 115200 kbps, sa neparnom parnošću. Prezentacija podataka se vrši

na taj način što se na hyper terminalu procentualno prikazuje dovedeni napon na ulaz AD

konvertora.

Terminalni prikaz normalizovanog ulaznog napona

Page 6: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

6

Karakteristike TMS320F28335

F2833x familija je član TMS320C2000 DSC platforme. C28x +FPU bazirani kontroleri

imaju istu 32bitnu fixed point arhitekturu kao i TI-ovi postojeći C28x DSC-ovi, ali takoĎe

poseduju jednostruku preciznost IEEE754 floating point jedinicu. Omogućava efikasno kodiranje

u C i C++ jeziku, što omogućava korisnicima razvoj sopstvenih programa za kontrolu sistema na

HLL jezicima. TakoĎe dozvoljava razvoj matematičkih algoritama upotrebom C/C++ jeziku.

Ovaj ureĎaj je efikasan pri izvršavanju aritmetičko intezivnih operacija kao i pri izvršavanju

kontrolnih zadataka koji se obično realizuju upotrebom mikrokontrolera. Ova karakteristika

otklanja potrebu za još jednim procesorom kod mnogih sisitema. 32x32 bitni MAC sa 64bitnom

procesnom moći omogućava kontroleru da se izbori sa numeričiki zahtevn operacijama. Ako se

na ovo doda brz odziv na prekid sa automatskim čuvanjem konteksta kritičnih registara, dobija

se ureĎaj koji je opslužuje veliki broj asinhronih dogaĎaja sa minimalnim kašnjenjem. UreĎaj

ima osmonivovsku protočnost sa protočnim pristupom memoriji. Protočnost omogućava

izvršavanje instrukcija pri velikoj brzini bez potrebe za skupim brzim memorijama. Specijalan

hardverski blok implementiran za predikciju grananja minimizira kašnjenje pri uslovnim

diskontinuitetima. Posebno skladištenje uslovnih operacija još više poboljšava performanse.

Mamorijska magistrala (Harvard arhitektura)

Kao što je slučaj kod mnogih DSC ureĎaja, veći broj magistrala se koristi za prenos podataka

izmeĎu memorija, periferija i CPU-a. C28X arhitektura memorijske magistrale sadrži magistralu

za čitanje instrukcija i magistrale za čitanje i upis podataka. Magistrala za čitanje instrukcija se

sastoji od 22 adresne linije i 32 linije za podatke. Magistrale za upis i čitanje podatak sastoje se

od po 32 adresne linije i 32 linije za podatke. 32 bitne magistrale za podatke omogućavaju

izvršavanje 32bitnih operacije u jednom ciklusu. Arhitektura sa većim brojem magistrala,

uobičajeno nazvana Harvard magistrala, omogućava C28x da pribavi instrukciju, očita vrednost

podata i upiše vrednost u jednom ciklusu. Sve periferije i memorije priključene na memorijsku

magistralu će imati prioritetni pristup memoriji. Generalno, prioritet pristupa memorijskoj

magistrali može da se sumira na sledeći način:

Najviši prioritet: upis podataka; upis instrukcija; čitanje podataka; čitanje instrukcija

Najniži prioritet: pribavljanje instrukcija.

Periferijska magistrala

Da bi se omogućila migracija periferija izmeĎu različitih TI DSC familija ureĎaja, 2833x

ureĎaji su usvojili standard za periferijsku magistralu. Most periferijske magistrale multipleksira

različite magistrale koje pretvaraju proceorsku memerijsku magistralu u jednu magistralu koja se

Page 7: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

7

sastoji od 16 adresnih linija i 16 ili 32 liije za podatke i pridružene kontrolne podatke. Podražane

su 3 verzije periferijske magistrale. Jedna verzija podržava samo 16 bitni pristup ( tzv.

periferijski frejm 2). Druga verzija podržava i 16 bitni i 32 bitni pristup (periferijski frejm 1).

Treća verzija podržava DMApristup kao i 16 bitne i 32 bitne pristupe ( periferijski frejm 3).

Blok dijagram

Page 8: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

8

Memorijsak mapa

Memorijska mapa

Page 9: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

9

Sigurnost

UreĎaj podržava visok nivo sigurnosti da bi se zaštitio sofrver od inverznog inženjeringa.

Sigurnost podrazumeva 128 bitnu šifru koju korisnik upisuje u flash. Jedan sigurnosni modul se

koristi da se zaštiti flash kroz OTP i L0/L1/L2/L3 SARAM blokovi. Mogućnost postavljanja

šifre sprečava ne autorizovane korisnike od ispitivanje sadržaja memorije preko JTAG porta,

izvršavanje koda sa eksternih memorija ili pokušaja da se boot loaduje neki ne željeni sofrtver

koji moži da otkrije zaštićene memorijske sadržaje. Da bi se obezbedio pristup osiguranim

blokovima, korisnik mora da upiše tačnu 128 bitnu KEY vrednost koja se podudara sa vrednošću

skladništenoj u lokaciji za šifru u flash memoriji. Kao dodatak CSM emulaciona logika zaštite

koda (ECSL) je implementirana da bi se sprečili ne autorizovani korisnici od manipulacije sa

kodom. Svaki pristup podacima ili kodu u flashu, koristničkoj OTP, L0, L1, L2 ili L3 memoriji

dok je emulator konektovan će pokrenuti ECSL i prekinuti konekciju sa emulatorom. Da bi se

dozvolila emulacija osiguranog koda, dok postoji CSM zaštita pristup memoriji, korisnik mora

da upiše tačnu vrednostu u nižih 64bita KEY registra, koja odgovara vrednosti sladištenoj u nižih

64 bita na lokaciji rezervisanoj za šifru u flash memoriji. Treba primetiti da dummy očitavanja

svih 128 bitov šifre iz fash-a moraju biti izvedeni. U koliko nižih 64 bita na lokaciji za šifru su

sve jedninice (ne programirano), onda KEY vrednost ne mora da se slaže.

Periferijski interrupt ekspandor (PIE)

PIE blok služi da multripleksira brojne izvore prekida u manji set prekidnih ulaza. PIE blok

može da podrži do 96 periferijskih prekida. Na 2833X, 58 od mogućih 96 prekida koriste

periferije. 96 prekida su grupisani u blokove od po 8 i svaka grupa se vodi na jednu od 12 CPU

linija za prekide. Svaki od 96 prekida je pordžan od strane svog sopstvenog vektora skladištenog

u definisanom RAM bloku koji može biti prepisan od strane korisnika. Vektor se automatski

pribavlja od CPU-a zbog opsluživenja prekida. potrebno je 8 CPU ciklusa da se pribavi vektor i

sačuva sadržaj kritičnih CPU registara što će reći da CPU može da odgovori brzo na prekide.

Prioritet prekida se može kontrolisati hardverski i softverski.Svaki pojedinačni prekid može se

dozvoliti ili zabraniti u okviru PIE bloka.

UreĎaj podržava 8 maskirajućih prekida. Svaki od prekida može se selektovati sa rastućom i

opadajućom ivicom ili i sa rastućom i opadajućom ivicom i svaki može biti zabranjen ili

dozvoljen (uključuju XNMI). XINT1, XINT2, XNMI takoĎe sadrže 16 bitni brojač naviše koji

se resetuje na nulu kada se detektuje validna ivica prekida. XINT3 do XINt7 prekidi mogu

prihvatiti ulaz sa GPIO32 do GPIO64 pina.

UreĎaj se može taktovati eksternim oscilatorom ili kristalom priključenim na kolo internog

oscilatora. ObezbeĎen je PLL koji podžava do 10 vrednosti delitelja. PLL odnosi mogu biti

Page 10: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

10

promenjeni za vreme izvršavanja programa što omogućava korisniku da se vrati na operativnu

frekvenciju ako je zahtevan mod niske potrošnje. PLL blok se može podesiti da radi u bypass

modu.

Watchdog

UreĎaj sadrži watchdog tajmer. Korisnički program mora redovno da resetuje brojač

watchdog-a u okviru odreĎenog vremenskog perioda; U suprotnom watchdog će resetovati

procesor. Wachdog se može onemogućiti ukoliko nije neopodan.

Taktovanje periferija

Takt do svake zasebne periferije može biti dozvoljen ili zabranjen da bi se umanjula

potrošnja ukoliko periferija nije u upotrebi. TakoĎe sistemski takt do serijskih

portova(isključujući I2C i eCAN) i ADC blokove može se skalirati u odnosu na procesorski takt.

Ovo omogućava da tajming periferija bude odvojen od većeg takta procesora.

Periferije

Integisane periferije na 2833x ureĎaju su pobrojane u sedećem delu:

Šestoknalni DMA

3 32-bitna CPU tajmera

Do 6 ePWM modula

Do 6 eCAP modula

Do 2 eQEP

Napredni ADC modul

Do 2 eCAN modula

Do 3 SCI modula

1 SPI modul

I2C modul

Do 2 McBSP porta

Eksterni interfejs (XINTF)

Page 11: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

11

Analog-to-Digital Converter (ADC)

TMS 320F28335 poseduje 12 bitni protočni analogno digitalni konvertor. Sastoji se od 16

kanala koji se mogu konfigurisati kao 2 nezavisna 8 kanalna modula za potrebe ePWM modula.

Dva nezavisna somokanalna modula se mogu kaskadno povezati kako bi se dobio jedan 16

kanalni modul. Pored toga što postoji više kanala i dva sekvencera, postoji samo jedan ADC

modul.

Blok dijagram AD konvertora

Svaki modul ima mogućnost izbora jednog od 8 dostupnih kanala predko analognog

multipleksera.U kaskadnom režimu auto sekvencer radi kao 16 kanalni sekvencer. Nakon sveke

konverzije vrednost selektovanog kanala se smešta u njemu pridruženi ADCRESULT registar.

Auto sekvenciranje omogućava sisitemu da vrši konverziju istog kanala više puta omogućavajući

na taj način primenu algoritama za oversampling.

AD konvertor ima sledeće osobine :

12 bitno ADC jezgro sa ugraĎenim dvostrukim S/H kolom.

Istovremeno uzorkovanje ili sekvencijalno uzorkovenje.

Page 12: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

12

Analogni ulaz 0-3V.

Brza konverzija do 12,5 MHz.

16 kanalni multipleksirani ulazi.

Auto sekvenciranje omogućava do 16 auto konverzija u jednom ciklusu. Svaka

konverzija se može programirati za 1 do 16 kanala.

Sekvencer može da radi kao 2 nezavisna modula sa po 8 stanja ili jedan modul sa 16

stanja.

16 registara za smeštanje rezultata.

Višestruki trigeri za pokretanje konverzije

- S/W softversko startovanje

- ePWM 1-6

- GPIO XINT2

Fleksibilna kontrola prekida omogućava zahtev za prekid na svaki završetak sekvence ili

svaki drugi završetak sekvence.

Sekvencer može da radi u start/stop režimu omogućavajući višestruke vremenske trigere

da sinhhronišu konverzije.

ePWM trigeri mogu da rade nezavisno u režimu sa dva sekvencera.

S/H akvizicioni vremenski prozor se može odvojeno podešavati.

Autokonverzija

ADC sekvencer se satoji od 2 nezavisna sekvencera sa 8 stanja (SEQ1 i SEQ2) koja se mogu

kaskadno povezati radi formiranja jednog sekvencera sa 16 stanja. Reč „stanje“ se odnosi na broj

autokonverzija koje se mogu izvršiti od strane sekvencera. U oba slučaja AD konvertor može

autosekvencrati niz autokonverzija. To znači da svaki put kada AD konvertor primi zahtev za

početak konverzije može obaviti više konverzija automatski. Za svaku konveziju jedan od

dostupnih 16 ulaza se selektuje pomoću analognog mutipleksera.

AD konvertor takoĎe može raditi u simultanom režimu. Za svaku konverziju (ili par

konverzija u simultanom režimu ), trenutna vrednost CONVxx bitskog polja odreĎuje koji će pin

( ili par pinova ) biti uzorkovan i konvertovan. U režimu sekvencijalnog uzorkovanja sva 4 bita

CONVxx definišu ulazni pin. MSB definiše kom je S/H baferu ulazni pin pridružen, a tri LSB-a

definišu ofset. Na primer, ukoliko CONVxx sadrži 0101b, ADCINA5 je selektovani ulazni pin.

Ukoliko je vrednost 1011b, ADCINB3 je selektovani ulazni pin. U simultanom režimu

uzorkovanja, MSB CONVxx registra se ne uzima u obzir. Svaki S/H bafer uzorkuje pridruženi

pin odreĎen ofsetom 3 LSB-a CONVxx registra. Na primer, u koliko CONxx sadrži vrednost

0110b, ADCINA6 je uzorkovan pomoću S/H – A kola i ADCINB6 je uzorkovan pomoću S/H –

B kola. Ukoliko je vrednos 1001b, ADCINA1 je uzorkovan pomoću S/H – A kola i ADCINB1 je

uzorkovan pomoću S/H – B kola. Napon S/H – A kola se prvo konvertuje a zatim napon S/H – B

Page 13: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

13

kola. Rezultat S/H – A konverzije se smešta u tekući ADCRESULTn registar ( ADCRESULT0

za SEQ1, podrazumevajući da je sekvencer bio resetovan ). Rezultat S/H – B konverzije se

smešta u naredni registar ( ADCRESULT1 za SEQ1, predpostavljajući da je sekvencer bio

resetovn). Pokazivač registara za smeštanje rezultt se inkrementira za 2.

Sekvencijalni režim uzorkovanja – S- Akvizicioni prozor, C1- Vreme upisa u registar

Page 14: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

14

Simultani režim sekvenciranja – S- akvizicioni prozor, C1- vreme upisa rezultata A kanala u

registar, C2- vreme upisa rezultata B kanala u registar

Blok dijagram AD konvertora u sekvencijalnom režimu rada

Page 15: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

15

Blok dijagram AD konvertora u simultanom režimu rada

ADC preskaler

Periferni takt HSPCLK se deli za vrednost odreĎenom ADCCLKPS [ 3:0 ] bitovima

ADCTRL3 registra. Dodatno deljenje faktorom 2 je omogućeno CPS bitom ADCTRL1 registra.

AD konvertor se može prilagoditi različitim impedansama izvora kontrolom sampling/

acquisition perioda. Ovo je ostvareno ACQ_PS bitovima ADCTRL1 registra.

Page 16: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

16

ADC I S/H taktovanje

ADC frekvencija uzorkovanja

ADC modul sardži nekoliko preskalerskih stepena kako bi se generisala željena frekvencija

AD konvertora. Na slici je prikazan izvor frekvencije ADC modula, a u tabeli su data dva

primera odgovarajućih podešavanja.

Blokovi taktnog signala

Page 17: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

17

Režim niske potrošnje

AD konvertor omogućava izbor tri odvojena izvora napajanja kontrolisana ADCTRL3

registrom. Omogućena su tri režima napajanja: ADC je uključen, ADC je u neaktivnom stanju,

ADC je isključen.

Opcije napajanja

Funkcija prebrisavanja

U normalnom režimu sekvenceri omogućavaju selektovanje ADC kanalai smeštanje njihovih

rezultatu u registre, sekvencijalno. Nakon izvršavanja definisanog broja konverzija rad AD

konvertora se prekida. Sa omogućenom funkcijom prebrisavanja nakon završavanja definisanog

broja konverzija AD konvertor automatski startuje novi ciklus konverzija i rezultate smešta u

registre na mesto reziltata konverzija predhodnih ciklusa.

ADC kalibracija

ADC_cal() rutina je programirana u TI rezervisanu OTP memoriju. Boot ROM automatski

poziva ADC_cal() rutnu kako bi se izvršila kalibracija AD konvertora. Tokom normalnog rada

ovaj proces se obavlja automatski tako da nije potrebna dodatna aktivnost korisnika.

Interni/eksterni izvor referentnog napona

Podrazumevano se koristi interni izvor referentnog napona. Ukoliko je potrebno korisnik

može koristiti spoljašnji izvor referentnog napona. ADC prihvata napone od 2.048V, 1.5V ili

1.024V na ADCREF pinu. Registrom ADCREFSEl se odreĎuje koji će izvor biti korišćen.

Referentni izvor od 2.048V je izabran radi industrijskog standarda.

Page 18: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

18

Spoljašnji izvor referentnog napona 2.048 V

Page 19: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

19

Kratak pregled ADC registara

Registar Opis

ADC kontrolni registri i registri podataka

ADCTRL1 ADC kontrolni registar 1

ADCTRL2 ADC kontrolni registar 2

ADCMAXCONV ADC maksimalni broj kanala konverzije

ADCCHSELSEQ1 ADC selekcioni registar 1 kanala

ADCCHSELSEQ2 ADC selekcioni registar 2 kanala

ADCCHSELSEQ3 ADC selekcioni registar 3 kanala

ADCCHSELSEQ4 ADC selekcioni registar 4 kanala

ADCASEQSR ADC autosekvencni statusni registar

ADCRESULT0 ADC bafer registar 0

ADCRESULT1 ADC bafer registar 1

ADCRESULT2 ADC bafer registar 2

ADCRESULT3 ADC bafer registar 3

ADCRESULT4 ADC bafer registar 4

ADCRESULT5 ADC bafer registar 5

ADCRESULT6 ADC bafer registar 6

ADCRESULT7 ADC bafer registar 7

ADCRESULT8 ADC bafer registar 8

ADCRESULT9 ADC bafer registar 9

ADCRESULT10 ADC bafer registar 10

ADCRESULT11 ADC bafer registar 11

ADCRESULT12 ADC bafer registar 12

ADCRESULT13 ADC bafer registar 13

ADCRESULT14 ADC bafer registar 14

ADCRESULT15 ADC bafer registar 15

ADCTRL3 ADC kontrolni registar 3

ADCST ADC statusni registar

ADCREFSEL ADC registar za izbor referentnog izvora

ADCOFFTRIM ADC offset trim registar

Page 20: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

20

ADC konfiguracija

ADC_CONFIG.h

/*

*****************************************************************************

* MODULE

*****************************************************************************

*/

#ifndef _ADC_CONFIG

#define _ADC_CONFIG

#define ADC_SUSMOD 0x0

#define ADC_ACQ_PS 7

#define ADC_CPS 0x0

#define ADC_CONT_RUN 0x1

#define ADC_SEQ_OVRD 0x1

#define ADC_SEQ_CASC 0x1

#define ADC_INT_ENA_SEQ1 0x1

#define ADC_INT_MOD_SEQ1 0x0

#define ADC_INT_ENA_SEQ2 0x0

#define ADC_INT_MOD_SEQ2 0x0

#define ADC_CLK_PS 0x5

#define ADC_SMODE_SEL 0x0

#define ADC_MAX_CONV1 0x8

#define ADC_MAX_CONV2 0x8

#define ADC_CONV00 0x0

#define ADC_CONV01 0x0

#define ADC_CONV02 0x0

#define ADC_CONV03 0x0

#define ADC_CONV04 0x0

#define ADC_CONV05 0x0

#define ADC_CONV06 0x0

#define ADC_CONV07 0x0

#define ADC_CONV08 0x0

#define ADC_CONV09 0x0

#define ADC_CONV10 0x0

#define ADC_CONV11 0x0

#define ADC_CONV12 0x0

#define ADC_CONV13 0x0

#define ADC_CONV14 0x0

#define ADC_CONV15 0x0

#define ADC_BAND_GAP AdcRegs.ADCTRL3.bit.ADCBGRFDN

/*

*****************************************************************************

* MODULE END

*****************************************************************************

*/

#endif

Page 21: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

21

ADC_FUNC.c

#ifndef _ADC_FUNCTION

#define _ADC_FUNCTION

/*

*************************************************************************************************

* INCLUDE FILES

*************************************************************************************************

*/

/*

*************************************************************************************************

* MACROs

*************************************************************************************************

*/

#define Adc_PowerDown() AdcRegs.ADCTRL3.bit.ADCPWDN = 0x0

#define Adc_Seq1Soc() AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1

#define Adc_Seq2Soc() AdcRegs.ADCTRL2.bit.SOC_SEQ2 = 0x1

#include "DSP2833x_Device.h"

#include "ADC_CONFIG.h"

#include "GLOBAL_DEFS.h"

/*

*************************************************************************************************

* FUNCTION PROTOTYPES

*************************************************************************************************

*/

extern void Adc_Init(void);

extern void Adc_Off(void);

extern void Adc_GpioSelect(void);

/*

*************************************************************************************************

* FUNCTION DEFINITIONS

*************************************************************************************************

*/

/*

*************************************************************************************************

* Adc_Init()

*************************************************************************************************

*/

void Adc_Init(void) {

AdcRegs.ADCTRL1.bit.SUSMOD = ADC_SUSMOD;

AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_ACQ_PS;

AdcRegs.ADCTRL1.bit.CPS = ADC_CPS;

AdcRegs.ADCTRL1.bit.CONT_RUN = ADC_CONT_RUN;

AdcRegs.ADCTRL1.bit.SEQ_OVRD = ADC_SEQ_OVRD;

AdcRegs.ADCTRL1.bit.SEQ_CASC = ADC_SEQ_CASC;

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = ADC_INT_ENA_SEQ1;

AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = ADC_INT_MOD_SEQ1;

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2 = ADC_INT_ENA_SEQ2;

AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2 = ADC_INT_MOD_SEQ2;

AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;

AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CLK_PS;

AdcRegs.ADCTRL3.bit.SMODE_SEL = ADC_SMODE_SEL;

AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = ADC_MAX_CONV1;

AdcRegs.ADCMAXCONV.bit.MAX_CONV2 = ADC_MAX_CONV2;

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = ADC_CONV00;

AdcRegs.ADCCHSELSEQ1.bit.CONV01 = ADC_CONV01;

AdcRegs.ADCCHSELSEQ1.bit.CONV02 = ADC_CONV02;

Page 22: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

22

AdcRegs.ADCCHSELSEQ1.bit.CONV03 = ADC_CONV03;

AdcRegs.ADCCHSELSEQ2.bit.CONV04 = ADC_CONV04;

AdcRegs.ADCCHSELSEQ2.bit.CONV05 = ADC_CONV05;

AdcRegs.ADCCHSELSEQ2.bit.CONV06 = ADC_CONV06;

AdcRegs.ADCCHSELSEQ2.bit.CONV07 = ADC_CONV07;

AdcRegs.ADCCHSELSEQ3.bit.CONV08 = ADC_CONV08;

AdcRegs.ADCCHSELSEQ3.bit.CONV09 = ADC_CONV09;

AdcRegs.ADCCHSELSEQ3.bit.CONV10 = ADC_CONV10;

AdcRegs.ADCCHSELSEQ3.bit.CONV11 = ADC_CONV11;

AdcRegs.ADCCHSELSEQ4.bit.CONV12 = ADC_CONV12;

AdcRegs.ADCCHSELSEQ4.bit.CONV13 = ADC_CONV13;

AdcRegs.ADCCHSELSEQ4.bit.CONV14 = ADC_CONV14;

AdcRegs.ADCCHSELSEQ4.bit.CONV15 = ADC_CONV15;

}

/*

*************************************************************************************************

* Adc_Off()

*************************************************************************************************

*/

void Adc_Off(void) {

AdcRegs.ADCTRL3.bit.ADCPWDN = 0x0;

ADC_BAND_GAP = 0x00;

}

/*

*************************************************************************************************

* Adc_GpioSelect()

*************************************************************************************************

*/

void Adc_GpioSelect(void)

{

EALLOW;

GpioCtrlRegs.GPAMUX1.all = 0;

GpioCtrlRegs.GPAMUX2.all = 0;

GpioCtrlRegs.GPBMUX1.all = 0;

GpioCtrlRegs.GPBMUX2.all = 0;

GpioCtrlRegs.GPCMUX1.all = 0;

GpioCtrlRegs.GPCMUX2.all = 0;

GpioCtrlRegs.GPADIR.all = 0;

GpioCtrlRegs.GPADIR.bit.GPIO9 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO11 = 1;

GpioCtrlRegs.GPBDIR.all = 0;

GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;

GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1;

GpioCtrlRegs.GPCDIR.all = 0;

EDIS;

}

#endif

Page 23: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

23

Direct Memory Access (DMA)

DMA modul predstavlja event-based (zasnovan na dogaĎaju) sistem, što znači da mu je

potrebna pobuda od strane neke periferije kako bi započeo transfer podataka. Konfigurisanjem

tajmera kao izvora pobude DMA sistema moguće je simulirati time-driven (pokrenut nakon

nekog unapred definisanog vremena) sistem, ali sam DMA ne poseduje mehanizme za

periodično startovanje transfera podataka. Za svaki od šest DMA kanala moguće je konfigutisati

različite izvore interrupt-a, a svaki kanal poseduje sopstveni nezavisni PIE interrupt kako bi CPU

imao informaciju o tome kada je DMA transfer počeo ili se završio. Svi DMA kanali osim prvog

su identični, a prvi kanal se razlikuje u tome što iam močućnost da mu se dodeli veći prioritet

nego drugim kanalima. Srce DMA sistema je adresna kontrolna logika koja dozvoljava

preureĎivanje bloka podataka za vreme transfera kao i ping-pong baferovanje.

Kratak pregled DMA:

6 kanala sa nezavisnim PIE interrupt-ima

Periferalni izvori interrupta

o ADC sekvencer 1 i ADC sekvencer 2

o McBSP-A i McBSP-B slanje i primanje

o XINT1-7 i XINT13

o CPU tajmeri

o ePWM1-6 ADCSOCA i ADSOCB signali

o Softver

Page 24: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

24

Izvori/destinacije podataka

o L4-L7 16K x 16 SARAM

o Sve XINTF zone

o Svi ADC registri za čuvanje podataka koji su sa memorijom povezani preko

magistrale

o McBSP-A I McBSP-B baferi za slanje i pijem

o ePWM1-6 / HRPWM1-6 Peripheral Frame 3 mapirani registry

Veličina reči: 16-bit ili 32-bit (McBSP je ograničen na 16 bita)

Propusnost od 4 ciklusa/reči (5 ciklusa/rečo za McBSP čitanje)

DMA blok dijagram

Page 25: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

25

DMA magistrala

Arhitektura DMA magistrale se sastoji od 22-bit adresne magistrale, 32-bit magistrale za

čitanje podataka, i 32-bit magistrale za upis podataka. Memoriske i registarske lokacije su

povezane na DMA magistralu preko interfejsa koji mogu deliti resurse sa memorijom CPU-a ili

magistralom periferija.Slede resursi koji su povezani na DMA magistralu:

XINTF zone 0, 6 i 7

L4 SARAM

L5 SARAM

L6 SARAM

L7 SARAM

ADC memorijski mapirani rezultati za čuvanje rezultata

McBSP-A i McBSP-B registri za prijem podataka (DRR2/DRR1) i registri za slanje

podataka (DXR2/DXR1)

ePWM1-6/HRPWM1-6 registar kada je mapiran na Peripheral Frame 3

Adresni pokazivač i kontrola prenosa

DMA konačni automat se sastoji od ugnježdenje petlje. Unutrašnja petlja prenosi pakete

podataka kada je primljen interrupt od strane neke periferije. Paket predstavlja najmanju količinu

podataka koju je moguće premeti odjednom, a njegovu veličinu definiše BURST_SIZE registar

za svaki kanal. BURST_SIZE registar dozviljava da budu maksimalno 32 šesnaestnobitne reči

prenete u okviru jednog paketa. Spoljašnja petlja, čija je veličina odreĎenja od strane

TRANSFER_SIZE registra za svaki kanal, definiše koliko se paketa se prenosi za vreme

celokupnog transfera. TRANSFER_SIZE je 16-bit registar. Jedan CPU interrupt se generiše (ako

je dozvoljen) za svaki transfer. Ovaj interrupt se može konfigutisati tako da se pojavljuje na

početku ili na kraju transfera, preko MODE.CHx[CHINTMODE] bita.

Svaki DMA kanal poseduje klonirani adresni pointer za adresu izvora i adresu odredišta. Ovi

pointeri, SRC_ADDR i DST_ADDR, mogu biti nezavisno kontrolisani za vreme operacije

konačnog automata. Na početku svakog prenosa klonirana verzija svakog pointera se kopira u

odgovarajući aktivni registar. Za vreme petlje u kojoj se vrši prenos paketa, nakon svake prenete

reči, označena vrednost koja se nalazi u odgovarajućem BURST_STEP registru izvora i

odredišta dodaje se aktivnom SRC/DST_ADDR registru. Za vreme ciklusa prenosa, nakon

svakog prenosa paketa, postoje dve metode koje se mogu koristiti za modifikovanje aktivnog

adresnog pokazivača. Prvi metod je dodavanje označene vrednosti koja se nalazi u

SRC/DST_TRANSFER_STEP registru odgovarajućem pokazivaču. Druga je preko procesa koji

se naziva umotavanje (wrapping), kod koje se wrap adresa učitava u aktivni adresni pokazivač.

Kada se wrap procedura dogodi, SRC/DST_TRANSFER_STEP registar nema efekta.

Page 26: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

26

DMA dijagram stanja

Page 27: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

27

Odlike ADC sinhronizacije

DMA pruža hardverske motode za sinhronizaciju interrupt-a ADC sekvencera 1 (SEQ1INT)

kada radi u modu neprekidne konverzije i kada je dozvoljena funkcija zamene kod sekvencera. U

ovom specifičnom modu ADC će neprekidno raditi konverziju sekvenci ADC kanala bez

resetovanja pokazivača sekvencera na kraju svake sekvence. Obzirom da DMA nezna na koji

ADC RESULT registar pokizivač sekvencera pokazuje kada primi trigger, postoji mogućnost da

DMA i ADC budu u raskoraku. Zbog toga kada je ADC konfigurisan u ovom modu on pruža

sinhronizacioni signal DMA-u na taj način što se generiše trigger na dogaĎaj svaki put kada

sekvenca počinje od RESULT0 registra. DMA očekuje signal kako bi se poravnao sa warp

rpocedurom ili početkom prenosa. Ako ga ne dobije, pokreće se procedura za resinhronizaciju:

1. Ponovo se napuni WRAP_COUNT registar sa WRAP_SIZE

2. Učita se u ADDR.active registar BEG_ADDR.active

3. Postavlja se SYNCERR bit u CONTROL registar

Ovo omogućava korišćenje više bafera za skladištenje podataka i za DMA i ADC

resinhronizaciju ako je ista neophodna.

Dijagram ADC sinhronizacije

Kao što se može videti sa slike iznad, sinhronizacioni izvor se bira upisom u PERINTSEL bit

polju u MODE registru. Ako je SYNC opcija dozvoljena za izabrani kanal, prenos tog kanala

neće početi dok se ne primi prvi SYNC nakon što je RUN bit setovan. Svi periferni izvori

prekida se ignorišu sve do prvog SYNC dogaĎaja.

Page 28: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

28

Kratak pregled DMA registara

Adresa Akronim Opis

DMA kontrolni i statusni registri i registri moda

0x1000 DMACTRL

DMA kontrolni registar

0x1001 DEBUGCTRL

Debug kontrolni registar

0x1002 REVISION

Registar za reviziju preiferija

0x1003 Rezervisano

Rezervisano

0x1004 PRIORITYCTRL1

Registar 1 za kontrolu prioriteta

0x1005 Rezervisano

Rezervisano

0x1006 PRIORITYSTAT

Registar statusa prioriteta

0x1007 Rezervisano

Rezervisano

0x101F

Registri prvog DMA kanala

0x1020 MODE

Registar modova

0x1021 CONTROL

Kontrolni registar

0x1022 BURST_SIZE

Registar za veličinu paketa

0x1023 BURST_COUNT

Brojač paketa

0x1024 SRC_BURST_STEP Registar za veličinu koraka paketa sa

strane izvora

0x1025 DST_BURST_STEP Registar za veličinu koraka paketa sa

strane odredišta

0x1026 TRANSFER_SIZE

Registar veličine prenosa

0x1027 TRANSFER_COUNT

Brojač za prenos

0x1028 SRC_TRANSFER_STEP

Registar za veličinu koraka prenosa

sa strane izvora

0x1029 DST_TRANSFER_STEP

Registar za veličinu koraka prenosa

sa strane odresišta

0x102A SRC_WRAP_SIZE

Registar za veličinu wrap-a sa strane

izvora

0x102B SRC_WRAP_COUNT Brojač wrap-a sa strane izvora

Page 29: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

29

0x102C SRC_WRAP_STEP

Registar za veličinu koraka wrap-a

sa strane izvora

0x102D DST_WRAP_SIZE

Registar za veličinu wrap-a sa strane

odredišta

0x102E DST_WRAP_COUNT

Brojač wrap-a sa strane odredišta

0x102F DST_WRAP_STEP

Registar za veličinu koraka wrap-a

sa strane odredišta

0x1030 SRC_BEG_ADDR_SHADOW

Registar za klonirani početak izvora

i pokazivača na trenutnu adresu

0x1032 SRC_ADDR_SHADOW

0x1034 SRC_BEG_ADDR

Registar za aktivni početak izvora i

pokazivača na trenutnu adresu

0x1036 SRC_ADDR

0x1038 DST_BEG_ADDR_SHADOW Registar za klonirani početak

odredišta i pokazivača na trenutnu

adresu

0x103A DST_ADDR_SHADOW

0x103C DST_BEG_ADDR

Registar za aktivni početak odedišta

i pokazivača na trenutnu adresu

0x103E DST_ADDR

0x103F Rezervisano

Rezervisano

Registri drugog DMA kanala

0x1040 Isto kao i gore

0x105F

Registri trećeg DMA kanala

0x1060 Isto kao i gore

0x107F

Registri četvrtog DMA kanala

0x1080 Isto kao i gore

0x109F

Registri petog DMA kanala

0x1040 Isto kao i gore

0x105F

Page 30: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

30

Registri šestog DMA kanala

0x10C0 Isto kao i gore

0x10DF

Page 31: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

31

DMA konfiguracija DMA_CONFIG.c

/*

***********************************************************************************

* DMA_CONFIG

***********************************************************************************

*/

#ifndef _DMA_CONFIG

#define _DMA_CONFIG

#include "INCLUDES.h"

#include "DSP2833x_Device.h"

#include "DMA_CONFIG.h"

/*

***********************************************************************************

* GLOBAL FUNCTION PROTOTYPES

***********************************************************************************

*/

extern void DMA_Init(volatile uint *DMA_BUFF, volatile uint *McBSP_BUFF);

/*

***********************************************************************************

* GLOBAL FUNCTION DEFINITION

***********************************************************************************

*/

void DMA_Init(volatile uint *DMA_BUFF, volatile uint *McBSP_BUFF) {

uint i;

for (i=0; i<16; i++)

{

*(DMA_BUFF+i) = 0;

}

EALLOW;

DmaRegs.DMACTRL.bit.HARDRESET = 1;

asm (" nop");

DmaRegs.DEBUGCTRL.bit.FREE = 1;

/* CH1 */

/* SOURCE */

DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (ulong)DMA_CH1_SRC_BEG_ADDR;

DmaRegs.CH1.SRC_ADDR_SHADOW = (ulong)DMA_CH1_SRC_BEG_ADDR;

/* DESTINATION */

DmaRegs.CH1.DST_BEG_ADDR_SHADOW = (ulong)DMA_CH1_DST_BEG_ADDR;

DmaRegs.CH1.DST_ADDR_SHADOW = (ulong)DMA_CH1_DST_BEG_ADDR;

DmaRegs.CH1.BURST_SIZE.all = DMA_BURSTSIZE;

DmaRegs.CH1.SRC_BURST_STEP = DMA_SRCBURSTSTEP;

DmaRegs.CH1.DST_BURST_STEP = DMA_CH1_DSTBURSTSTEP;

DmaRegs.CH1.TRANSFER_SIZE = DMA_TRANSFERSIZE;

DmaRegs.CH1.SRC_TRANSFER_STEP = DMA_SRCTRANSFERSTEP;

DmaRegs.CH1.DST_TRANSFER_STEP = DMA_DSTTRANSFERSTEP;

DmaRegs.CH1.SRC_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH1.SRC_WRAP_STEP = DMA_WRAPSTEP;

Page 32: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

32

DmaRegs.CH1.DST_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH1.DST_WRAP_STEP = DMA_WRAPSTEP;

// Set up MODE Register:

DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_CH1_PERINTSEL;

DmaRegs.CH1.MODE.bit.PERINTE = DMA_PERINTE;

DmaRegs.CH1.MODE.bit.ONESHOT = DMA_ONESHOT;

DmaRegs.CH1.MODE.bit.CONTINUOUS = DMA_CONTINIOUS;

DmaRegs.CH1.MODE.bit.SYNCE = DMA_SYNCE;

DmaRegs.CH1.MODE.bit.SYNCSEL = DMA_SYNCSEL;

DmaRegs.CH1.MODE.bit.OVRINTE = DMA_OVRINTE;

DmaRegs.CH1.MODE.bit.DATASIZE = DMA_DATASIZE;

DmaRegs.CH1.MODE.bit.CHINTE = DMA_CHINTE;

/* CH2 */

DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = (ulong)DMA_CH2_SRC_BEG_ADDR;

DmaRegs.CH2.SRC_ADDR_SHADOW = (ulong)DMA_CH2_SRC_BEG_ADDR;

/* DESTINATION */

DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (ulong)DMA_CH2_DST_BEG_ADDR;

DmaRegs.CH2.DST_ADDR_SHADOW = (ulong)DMA_CH2_DST_BEG_ADDR;

DmaRegs.CH2.BURST_SIZE.all = DMA_BURSTSIZE;

DmaRegs.CH2.SRC_BURST_STEP = DMA_SRCBURSTSTEP;

DmaRegs.CH2.DST_BURST_STEP = DMA_CH2_DSTBURSTSTEP;

DmaRegs.CH2.TRANSFER_SIZE = DMA_TRANSFERSIZE;

DmaRegs.CH2.SRC_TRANSFER_STEP = DMA_SRCTRANSFERSTEP;

DmaRegs.CH2.DST_TRANSFER_STEP = DMA_DSTTRANSFERSTEP;

DmaRegs.CH2.SRC_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH2.SRC_WRAP_STEP = DMA_WRAPSTEP;

DmaRegs.CH2.DST_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH2.DST_WRAP_STEP = DMA_WRAPSTEP;

// Set up MODE Register:

DmaRegs.CH2.MODE.bit.PERINTSEL = DMA_CH2_PERINTSEL;

DmaRegs.CH2.MODE.bit.PERINTE = DMA_PERINTE;

DmaRegs.CH2.MODE.bit.ONESHOT = DMA_ONESHOT;

DmaRegs.CH2.MODE.bit.CONTINUOUS = DMA_CONTINIOUS;

DmaRegs.CH2.MODE.bit.SYNCE = DMA_McBSP_SYNCE;

DmaRegs.CH2.MODE.bit.SYNCSEL = DMA_SYNCSEL;

DmaRegs.CH2.MODE.bit.OVRINTE = DMA_OVRINTE;

DmaRegs.CH2.MODE.bit.DATASIZE = DMA_DATASIZE;

DmaRegs.CH2.MODE.bit.CHINTE = DMA_CHINTE;

/* CH3 */

DmaRegs.CH3.SRC_BEG_ADDR_SHADOW = (ulong)DMA_CH3_SRC_BEG_ADDR;

DmaRegs.CH3.SRC_ADDR_SHADOW = (ulong)DMA_CH3_SRC_BEG_ADDR;

/* DESTINATION */

DmaRegs.CH3.DST_BEG_ADDR_SHADOW = (ulong)DMA_CH3_DST_BEG_ADDR;

DmaRegs.CH3.DST_ADDR_SHADOW = (ulong)DMA_CH3_DST_BEG_ADDR;

DmaRegs.CH3.BURST_SIZE.all = DMA_BURSTSIZE;

DmaRegs.CH3.SRC_BURST_STEP = DMA_CH3_SRCBURSTSTEP;

DmaRegs.CH3.DST_BURST_STEP = DMA_CH3_DSTBURSTSTEP;

DmaRegs.CH3.TRANSFER_SIZE = DMA_TRANSFERSIZE;

DmaRegs.CH3.SRC_TRANSFER_STEP = DMA_SRCTRANSFERSTEP;

DmaRegs.CH3.DST_TRANSFER_STEP = DMA_DSTTRANSFERSTEP;

DmaRegs.CH3.SRC_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH3.SRC_WRAP_STEP = DMA_WRAPSTEP;

Page 33: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

33

DmaRegs.CH3.DST_WRAP_SIZE = DMA_WRAPSIZE;

DmaRegs.CH3.DST_WRAP_STEP = DMA_WRAPSTEP;

// Set up MODE Register:

DmaRegs.CH3.MODE.bit.PERINTSEL = DMA_CH3_PERINTSEL;

DmaRegs.CH3.MODE.bit.PERINTE = DMA_PERINTE;

DmaRegs.CH3.MODE.bit.ONESHOT = DMA_ONESHOT;

DmaRegs.CH3.MODE.bit.CONTINUOUS = DMA_CONTINIOUS;

DmaRegs.CH3.MODE.bit.SYNCE = DMA_McBSP_SYNCE;

DmaRegs.CH3.MODE.bit.SYNCSEL = DMA_SYNCSEL;

DmaRegs.CH3.MODE.bit.OVRINTE = DMA_OVRINTE;

DmaRegs.CH3.MODE.bit.DATASIZE = DMA_DATASIZE;

DmaRegs.CH3.MODE.bit.CHINTE = DMA_CHINTE;

DmaRegs.CH1.CONTROL.bit.RUN = 1;

DmaRegs.CH2.CONTROL.bit.RUN = 1;

DmaRegs.CH3.CONTROL.bit.RUN = 1;

EDIS;

}

#endif

Page 34: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

34

DMA_CONFIG.h

/*

*********************************************************************************

* DMA_CONFIG

*********************************************************************************

*/

#ifndef _DMA_CONFIG_

#define _DMA_CONFIG_

#define DMA_CHINTE 0

#define DMA_DATASIZE 0

#define DMA_SYNCSEL 0

#define DMA_SYNCE 1

#define DMA_McBSP_SYNCE 0

#define DMA_CONTINIOUS 1

#define DMA_ONESHOT 1

#define DMA_PERINTE 1

#define DMA_OVRINTE 0

#define DMA_CH1_PERINTSEL 1

#define DMA_CH2_PERINTSEL 14

#define DMA_CH3_PERINTSEL 15

#define DMA_BURSTSIZE 15

#define DMA_SRCBURSTSTEP 1

#define DMA_CH3_SRCBURSTSTEP 0

#define DMA_CH1_DSTBURSTSTEP 1

#define DMA_CH2_DSTBURSTSTEP 0

#define DMA_CH3_DSTBURSTSTEP 1

#define DMA_TRANSFERSIZE 0

#define DMA_SRCTRANSFERSTEP 0

#define DMA_DSTTRANSFERSTEP 0

#define DMA_WRAPSIZE 0

#define DMA_WRAPSTEP 0

#define DMA_CH1_SRC_BEG_ADDR &AdcMirror.ADCRESULT0

#define DMA_CH1_DST_BEG_ADDR &DMA_BUFF[0]

#define DMA_CH2_SRC_BEG_ADDR &DMA_BUFF[0]

#define DMA_CH2_DST_BEG_ADDR &McbspaRegs.DXR1.all

#define DMA_CH3_SRC_BEG_ADDR &McbspaRegs.DRR1.all

#define DMA_CH3_DST_BEG_ADDR &McBSP_BUFF[0]

#endif

Page 35: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

35

Multichannel Buffered Serial Port (McBSP)

Multi Channel Buffered Serial Port (McBSP) predstavlja sinhroni serijski komunikacioni

kanal brzu razmenu podataka izmeĎu F2833x i eksternih serijskih ureĎaja. 2833x ureĎaj

obezbeĎuje do dva brza McBSP-a. Nezavisni signal takta (CLK(R/X)) resivera i transmitera

može biti generisan od strane F2833x (master mod) ili nekog eksternog ureĎaja (slave mod).

Maksimalna brzina prenosa podataka je 20 Mhz.

Sinhronizacioni signal frame-a (FS(R/X)) ukazuje na početak nove sekvence podataka

(frame). Frame sadrži izmeĎu 1 i 128 reči (ili kanala), dok reč može biti veličine 8, 12, 16, 20,

24, 32 bita. Seriski protok podataka je dostupan na “Data Transmit” (DX) i “Data Receive” (DR)

pinovima. Hardverska kompresija i tehnika ekspandovanja po standardima “A - law” (SAD i

Japan) ili “u - law” (Evropa) može biti uključena u prenos.

Svaki McBsp interfejs se sastoji od šest električnih signala, i idu šest pina po kanalu:

MDX: predaja podataka

MDR: prijem podataka

MCLKX: takt predaje

MCLKR: takt prijema

MFSX: sinhronizacija predaje frame-ova

MFSR: sinhronizacija prijema frame-ova

Page 36: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

36

McBSP blok dijagram

U tabeli koja sledi su prikazani električni signali McBSP interfejsa. Smer taktnog signala

zavisi od podešavanja McBSP da radi kao master ureĎaj (izlaz) ili kao slave ureĎaj (ulaz).

McBSP – A McBSP – B Opis signala

MCLKRA MCLKRB Taktni signal prijemnika

MCLKXA MCLKXB Taktni signal predajnika

MFSRA MFSRB Prijemnikov Frame-Sync impulsni signal

MFSXA MFSXB Predajnikov Frame-Sync impulsni signal

MDRA MDRB Ulaz podataka (prijemnik)

MDXA MDXB Izlaz podataka (predajnik)

Page 37: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

37

McBSP je takoĎe povezan sa CPU i DMA preko četiri unutrašnjih signala dogaĎaja:

MRINT: McBSP - Interrupt signal prijema

MXINT: McBSP - Interrupt signal predaje

REVT: Prijemni sinhronizacioni dogaĎaj ka DMA

XEVT: Predajni sinhronizacioni dogaĎaj ka DMA

CPU i DMA kontroler komuniciraju sa McBSP preko 16-bit registara, dostupnim preko

interne periferijske magistrale. CPU ili DMA kontroler upisuju podatke koji se trebaju poslati u

registre za slanje podataka (DXR1, DXR2). Podaci upisani u u DXR-ove se pomeraju na DX

preko predajnih pomeračkih registara (XSR1, XSR2). Slično, primljeni podaci sa DR pina se

pomeraju u prijemne pomeračke registre (RSR1, RSR2) i komiraju u prijemne bafer registre

(RBR1,RBR2). Sadržaj RBR-a se nakon toga kopira u DDR-ove iz kojih CPU i DMA kontroler

mogu da čitaju isti.

DRR2, RBR2, RSR2, DXR2, i XSR2 se ne koriste ako je dužina reči 8, 12, ili 16 bita. Za reči

veće dužine ovi registri su potrebni za čuvanje bitova najveće težine.

Neke od karakteristika McBSP-a su:

Full – duplex komunikacija

Double-buffered predaja i triple-buffered prijem, koji omogućavaju neprestan tok

podataka

Nezavisno taktovanje i pakovanje za predeju i prijem

Šalje interrupt-e ka CPU i šalje DMA dogaĎaje ka DMA kontroleru

128 kanala za predaju i prijem

Multikanalna selekcija modova koji omogućavaju ili zabranjuju blokovski prenos za

svaki kanal

Podrška za eksterno generisanja taktnih signala i sinhronizacionih signala pakovanja

Programabilni generator uzorkovanja za interno gernerisanje i kontrolu taktnih signala i

sinhronizacionih signala pakovanja

Poseduje direktne interfejse ka

o T1/E1

o IOM-2 kompatibilni ureĎaji

o AC97 kompatibilni ureĎaji sa mogućnošću višefaznog pakovanja

o I2C kompatibilni ureĎaji

o SPI ureĎaji

Promenjiva veličina podataka : 8, 12, 16, 20, 24, i 32 bita

A-law i u-law hardverska kompresija/ekspanzija

Page 38: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

38

McBSP pakovanje podataka

Obzirom da je McBSP sinhroni serijski komunikacioni interfejs, svi bitovi su vremenski

sinhronizovanji sa taktnim signalom (CLK). Prijemnik i predajnik se mogu upravljati po

različitim vremenima (takti signali MCLKX i MCLKR). Prenos pakovanih podataka kreće nakon

sinhronizacionog signala pakovanja (“FS”). Prijemnik i predajnik mogu koristiti nezavisne

sinhronizacione signale pakovanja (predajnik: “MFSX”, prijemnik: “MFSR”).

Reč i pakovanje ili okvir (frame)

Frame se sastoji od više reči. Broj reči je može biti od 1 do 128 reči. Reč se može sastojati od

odreĎenog broja bitova, a dozvoljene vrednosti su: 8, 12, 16, 20, 24, ili 32 bita. Kao dodatak,

postoji opcija za inicijalizaciju rada McBSP-a u “jednofaznom (single phase)” i “dvofaznom

(dual phase)” modu. U dvofaznom modu mogu se koristiti različita podešavanja za broj bitova u

reči i broja reči u okviru za svaku fazu posebno.

Bit i Reč

Page 39: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

39

Još jedan od modova koji poseduje McBSP je multikanalni (multi-channel) mod, u kome je

moguće iz okvira izvući samo ženjene reči. Kao primer sledi slika na kojoj kodek šalje 32 reči po

okviru, ali F2833 čita sam reči 0, 5 i 27 iz svakog okvira.

Multikanalna selekcija

McBSP taktovanje

Reči se pomeraju bit po bit sa DR pina ka RSR-ovima ili od XSR-a ka DX pinu. Vreme za

koje se pomeri svaki bit se kontroliše rastućom i opadajućom ivicom taktnog signala prijemnika i

predajnika.

McBSP taktovanje

Prijemnički taktni signal (CLKR) kontroliše prenos od DR pina ka RSR-ovima, predajnički

takti signal (CLKX) kontroliše prenos od XSR-a ka DX pinu. Treba napomenuti da McBSP ne

može da radi na frekvenciji većoj od polovine LSPCLK.

Page 40: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

40

McBSP Prijem

Proces koji sledi objašnjava kako podaci putuju od DR pina do CPU-a ili DMA kontrolera.

McBSP čeka da primi frame-synchronization impuls u interni FSR.

Kada impuls stigne, McBSP upacuje odgovarajuće kašnjenje podataka koje je

selektovano RDATDLY bitovima registra RCR2.

McBSP prihvata bitove podataka sa DR pina i pomera ih u prijemni pomerački

registar(e). Ako je dužina reči 16 bita ili manje, koristi se samo RSR1, a ako je dužina

reči veća od 16 bita, koriste se RSR1 i RSR2, gde RSR2 sadrži bitove najveće težine.

Kada se primi cela reč, McBSP kopira sadržaj prijemnog pomeračkog registra u prijemni

buffer, pod uslovom da RBR1 nije već pun. Ako je dužina reči 16 bita ili manje, koristi se

samo RBR1, a ako je dužina reči veća od 16 bita, koriste se RBR1 i RBR2, gde RBR2

sadrži bitove najveće težine.

McBSP kopira sadržaj prijemnog buffer-a u prijemni registar za podatke, pod uslovom da

DRR1 nije već pun. Kada DDR1 primi nove podatke prijemnikov ready bit (RRDY) se

postavlja u SPCR1. Ovo ukasuje da su primljeni podaci spremni za čitanje od strane

CPU-a i DMA kontrolera. Ako je dužina reči 16 bita ili manje, koristi se samo DRR1, a

ako je dužina reči veća od 16 bita, koriste se DRR1 i DRR2, gde DRR2 sadrži bitove

najveće težine.

CPU i DMA kontroler vrše čitanje podataka iz prijemnog registra za podatke. Kada je

DRR1 pročitan, RRDY se čisti i inicijalizuje se nivo kopiranje iz RBR u DRR.

Prijem podataka

Page 41: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

41

McBSP Predaja

Sekcija koja sledi objašnjava osnovni proces predaje kod McBSP-a.

CPU i DMA kontroler upisuju podatke u predajni redistar za podatke. Kada je DXR1

napunjen, predajnikov ready bit (XRDY) se čisti u SPCR2 i ukasuje da predajnik nije

spreman za nove podatke. Ako je dužina reči 16 bita ili manje, koristi se samo DRX1, a

ako je dužina reči veća od 16 bita, koriste se DRX1 i DRX2, gde DRX2 sadrži bitove

najveće težine.

Kada je novi podatak upisan u DXR1, McBSP kopira sadržaj predajnog registra za

podatke u predajni pomerački registar. Pored toga, predajnikov ready bit (XRDY) se

setuje. On upućuje da je predajnik spreman da primi nove podatke sa CPU-a ili DMA

kontrolera. Ako je dužina reči 16 bita ili manje, koristi se samo XRX1, a ako je dužina

reči veća od 16 bita, koriste se XRX1 i XRX2, gde XRX2 sadrži bitove najveće težine.

McBSP čeka predajni frame-synchronization impuls u interni FSX.

Kada impuls stigne, McBSP upacuje odgovarajuće kašnjenje podataka koje je

selektovano XDATDLY bitovima registra XCR2.

McBSP pomera bitove podataka iz predajnog pomeračkog registra na DX pin.

Predaja podataka

Page 42: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

42

McBSP Interrupt i DMA

McBSP šalje obaveštenje o važnim dogaĎajima CPU-u i DMA kontroleru preko internih

signala koji su prikazani u tabeli koja sledi.

Interni signal Opis

RINT Prijemnikov interrupt od McBSP-a ka CPU, zasnovan na

odabranom stanju u prijemniku.

XINT Predajnikov interrupt od McBSP-a ka CPU, zasnovan na

odabranom stanju u prijemniku.

REVT Sinhronizacioni dogaĎaj prijema od McBSP-a ka DMA,

okinut kada su podaci primljeni u DRR.

XEVT Sinhronizacioni dogaĎaj predaje od McBSP-a ka DMA,

okinut kada je DXR spreman da primi nove podatke.

Page 43: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

43

Kratak pregled McBSP registra

Registar Opis

McBSP kontrolni registri i registri podataka

DRR2 Prijemni registar 2 podataka (high)

DRR1 Prijemni registar 1 podataka (low)

DXR2 Predajni registar 2 podataka (high)

DSR1 Predajni registar 1 podataka (low)

SPCR2 Registar 2 za kontrolu serijskog porta

SPCR1 Registar 1 za kontrolu serijskog porta

RCR2 Registar 2 za kontrolu prijema

RCR1 Registar 1 za kontrolu prijema

XCR2 Registar 2 za kontrolu predaje

XCR1 Registar 1 za kontrolu predaje

SRGR2 Registar 2 generatora uzorkovanja

SRGR1 Registar 1 generatora uzorkovanja

Multichannel kontrolni registri

MCR2 Multichannel kontrolni registar 2

MCR1 Multichannel kontrolni registar 1

RCERx Registar za dozvolu prijemnih kanala iz opsega x (0-127)

XCERx Registar za dozvolu predajnih kanala iz opsega x (0-127)

PCR Registar kontrole pina

XCERB Registar za dozvolu predajnih kanala iz opsega B (16-31)

MFFINT Registar za dozvolu prekida

Page 44: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

44

McBSP konfiguracija McBSP_CONFIG.c

/*

***********************************************************************************

* McBSP_CONFIG

***********************************************************************************

*/

#ifndef _MCBSPc

#define _MCBSPc

#include "DSP2833x_Device.h"

#include "MCBSP_CONFIG.h"

/*

***********************************************************************************

* GLOBAL FUNCTION PROTOTYPES

***********************************************************************************

*/

extern void DSP28x_usDelay(Uint32 Count);

/*

***********************************************************************************

* GLOBAL FUNCTION DEFINITION

***********************************************************************************

*/

void McBSP_init(void)

{

EALLOW;

McbspaRegs.RCR1.bit.RFRLEN1 = McBSP_RFRLEN1;

McbspaRegs.RCR1.bit.RWDLEN1 = McBSP_RWDLEN1;

McbspaRegs.RCR2.bit.RPHASE = McBSP_RPHASE;

McbspaRegs.RCR2.bit.RCOMPAND = McBSP_RCOMPAND;

McbspaRegs.RCR2.bit.RFIG = McBSP_RFIG;

McbspaRegs.RCR2.bit.RDATDLY = McBSP_RDATDLY;

McbspaRegs.XCR1.bit.XWDLEN1 = McBSP_XWDLEN1;

McbspaRegs.XCR1.bit.XFRLEN1 = McBSP_XFRLEN1;

McbspaRegs.XCR2.bit.XPHASE = McBSP_XPHASE;

McbspaRegs.XCR2.bit.XCOMPAND = McBSP_XCOMPAND;

McbspaRegs.XCR2.bit.XFIG = McBSP_XFIG;

McbspaRegs.XCR2.bit.XDATDLY = McBSP_XDATDLY;

McbspaRegs.SPCR1.bit.DLB = McBSP_DBL;

McbspaRegs.MFFINT.all = McBSP_MFFINT;

McbspaRegs.SRGR1.bit.FWID = McBSP_FWID;

McbspaRegs.SRGR2.bit.FPER = McBSP_FPER;

McbspaRegs.SRGR1.bit.CLKGDV = McBSP_CLKGDV;

McbspaRegs.SRGR2.bit.CLKSM = McBSP_CLKSM;

McbspaRegs.PCR.bit.FSXM = McBSP_FSXM;

McbspaRegs.PCR.bit.CLKXM = McBSP_CLKXM;

McbspaRegs.SPCR2.bit.GRST = McBSP_GRST;

DSP28x_usDelay(1000);

McbspaRegs.SPCR2.bit.XRST = McBSP_XRST;

McbspaRegs.SPCR1.bit.RRST = McBSP_RRST;

McbspaRegs.SPCR2.bit.FRST = McBSP_FRST;

EDIS;

}

#endif

Page 45: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

45

McBSP_CONFIG.h

/*

*********************************************************************************

* McBSP_CONFIG

*********************************************************************************

*/

#ifndef _MCBSP

#define _MCBSP

#define McBSP_RFRLEN1 0

#define McBSP_RWDLEN1 2

#define McBSP_RPHASE 0

#define McBSP_RCOMPAND 0

#define McBSP_RFIG 0

#define McBSP_RDATDLY 1

#define McBSP_XFRLEN1 0

#define McBSP_XWDLEN1 2

#define McBSP_XPHASE 0

#define McBSP_XCOMPAND 0

#define McBSP_XFIG 0

#define McBSP_XDATDLY 1

#define McBSP_DBL 1

#define McBSP_MFFINT 0

#define McBSP_FWID 0

#define McBSP_CLKGDV 0

#define McBSP_CLKSM 1

#define McBSP_FPER 1

#define McBSP_FSXM 1

#define McBSP_CLKXM 1

#define McBSP_GRST 1

#define McBSP_XRST 1

#define McBSP_RRST 1

#define McBSP_FRST 1

#endif

Page 46: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

46

Serial Communications Interface (SCI)

Serijski komunikaconi interfejs (SCI) je dvožičani asinhroni serijski port poznat kao UART.

SCI modul podržava digitalnu komunikaciju izmeĎu CPU i drugih asinhronih periferija koje

koriste standardni not-return-to-zero format ( NZR format ). SCI prijemnik i predajnik poseduju

16 nivovski FIFO kako bi se smanjila potreba za stalnim opsluživanjem modula, i svaki poseduje

sopstvene bitove za prekide i dozvolu rada. Mogu raditi nezavisno u half-duplex komunikaciji ili

paralelno u full duplex-komunikaciji. Kako bi se ostvario intefritet podataka SCI proverava da li

je došlo do prekida u komunikaciji, parnost i greške okvira. Bitska brzina je programabilna i

kontrolisana 16 bitnim registrom.

SCI CPU interfejs

Page 47: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

47

Svojstva SCI modula su sledeća:

Dva eksterna pina:

- SCITXD: SCI transmisioni izlazni pin

- SCIRXD: SCI prijemni ulazni pin

Bitska brzina programabilna sa 64k različitih vrednosti

Format podataka:

- Jedan startni bit

- Programabilna dužina reči od 1 do 8 bitova

- Opciono parna/ neparna parnost

- Jedan ili dva stop bita

Četiri markera greške: parnost, prekoračenje, detekcija prekida komunikacije

Dva režima buĎenja procesora: IDLE-Line i adresni bit

Half-ili full- duplex operacije

Dvostruko baferovani prijem i predaja

Prenos i predaja se mogu ostvariti putem prekida ili prozivanja statusnih markera

Posebni bitovi za dozvolu prekida prijemnika i predajnika

NZR format

13 SCI kontrolnih registara smeštenih u registarskom polju počevši od adrese 7050h

Hardverska logika za automatsku detekcju bitske brzine

16 nivovski predajno-prijemni FIFO

Page 48: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

48

Serijski komunikacioni interfejs

Page 49: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

49

Arhitektura SCI modula

Glavni elementi koji se koriste u Full-duplex režimu rada su:

Predajnik (TX) i njegovi glavni registri

- SCITXBUF - Predajni bafer registar. Sadrži podatak ( upisan od strane

CPU ) koje treba preneti

- TXSHF registar – predajni pomerački registra. Prihvata podatke od

registra SCITXBUF i pomera podatak na SCITXD pin, jedan bit po ciklusu.

Prijemnik (RX) i njegovi glavni registri

- RXSHF registar – Prijemni pomerački refistar. Pomera podatak sa SCIRX

pina, jeddan bit po ciklusu

- SCIRXBUF – Prijemni registar podatka. Sadrži podatak koji će biti

pročitan od strane CPU. Podatak od procesora pošiljaoca se smešta u RXSHF

registar i zatim u SCIRXBUF registari SCIRXEMU.

Programabilni Baud generator

Memorijsko preslikani kontrolni statusni registri

SCI programabilni format podataka

SCI podatak prijemnika i predajnika je u NZR formatu. NZR format podataka se sastoji od:

Jedan startni bit

Jedan do osam bitova podataka

Parna/neparna parnost ili bez bita parnosti

Jedan ili dva stop bita

Dodatni bit za razlikovanje podatka adresa (samo u adresnom režimu rada)

Osnovna jedinica podatka se naziva karakter i dužine je od 1 do 8 bitova. Svaki karakter podatka

je formiranod jednog početnog bita, jednog ili dva stop bita i opciono bita parnosti i adrese.

Karakter podatka sa ovim bitovima se naziva okvir.

Page 50: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

50

Tipični SCI format podataka

SCI komunikacioni format

SCI asinhroni komunikaconi format koristi jednu ili dve komunikacione linije. Prijemnik

započinje operaciju prijema nakon ispravnog start bita. Ispravna start bit se identifikuje sa četiri

interna SCICLK perioda bita nule. Ukoliko neki od bitova nije nula onda procesor započinje

ponovno nadgledanje startng bita. Za bitove koji slede startni bit procesor odreĎuje vrednost

pomoću tri uzorka na sredini bitskog intervala. Ovi uzorci se javljau na 4, 5 i 6 SCICLK

intervalu, i odreĎivanje vrednosti bita je zasnovano na većinskoj logici ( 2 od 3).

SCI asinhroni komunikacioni format

Sekvenca prijema podatka

U nastavku je data sekvenca aktivnosti prilikom prijema podatka:

1. Bit markera RXENA je u stanju logičke jedinice kako bi se dozvolio rad prijemnika.

2. Pdataka pristiže na SCIRXD pin, startni bit je detektovan.

3. Podatak se pomera iz RXSHF-a u prijemni bafer registar SCIRXBUF; zahteva se

prekid. Marker RXRDY se postavlja na jedinicu kako bi se signalizirao prijem novog

karaktera.

Page 51: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

51

4. Program čita SCIRXBUF; marke RXRDY se automatski briše

5. Sledeći bajt podatka pristiže na SCIRXD pin; Detekstuje se startni bit

6. Bit RXENA se postavlja na nulu kako bi se onemogućio rad prijemnika. Prodaci

prisižu u RXSHF ali se ne prenose do prijemnog bafer refistra.

SCI RX signali u komunikacionom režimu

Sekvence slanja podatka

Sekvenca slanja podataka je sledeća:

1. Bit TXENA se postavlja na 1 čime se omogućava slanje podataka

2. U SCITXBUF se upisuje podatak i bit TXRDY se automatski postavlja na nulu

3. SCI prenosi podatke u TXSHF registar. Predajnik je spreman za sledeći karakter

(TXRDY se postavlja na 1), i zahteva prekid.

4. Program upisuje drugi karakter u SICTXBUF nakon što se TXRDY postavlja na

jedinicu

5. Prenos prvo karaktera se završava. Počinje prenos drugog karaktera

6. Bit TXENA se postavlja na nulu kako bi se onemogućuio rad predajnika; SCI

završava slanje tekućeg karaktera

7. Prens drugog karektera je završen. Predajnik je prazan i spreman za novi karakter

Page 52: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

52

SCI TX signali u komunikacionom režimu

SCI Baud rete proračun

Interno generisan takt je odreĎen perifernim taktom LSPCLK. SCI koristi 16 bitnu vrednost

registra za izbor bitske brzine. U sledećoj tabeli su date vrednosti za tipične SCI bitske brzine.

Page 53: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

53

Kratak pregled SCI registara

Registar Opis

SCI kontrolni registri i registri podataka

SCI-A

SCICCR SCI-A komunikacioni kontrolni registar

SCICTL1 SCI-A kontrolni registar 1

SCIHBAUD SCI-A viši bitovi baud registra

SCILBAUD SCI-A niži bitovi baud registra

SCICTL2 SCI-A kontrolni registar

SCIRXST SCI-A prijemni status registar

SCIRXEMU SCI-A prijemni emulacioni registar

SCIRXBUF SCI-A prijemni registar podataka

SCITXBUF SCI-A predajni registar podataka

SCIFFTX SCI-A FIFO predajni registar

SCIFFRX SCI-A FIFO prijemni registar

SCIFFCT SCI-A FIFO kontrolni registar

SCIPRI SCI-A kontrolni registar prioriteta

SCI-B SCICCR SCI-B komunikacioni kontrolni registar

SCICTL1 SCI-B kontrolni registar 1

SCIHBAUD SCI-B viši bitovi baud registra

SCILBAUD SCI-B niži bitovi baud registra

SCICTL2 SCI-B kontrolni registar

SCIRXST SCI-B prijemni status registar

SCIRXEMU SCI-B prijemni emulacioni registar

SCIRXBUF SCI-B prijemni registar podataka

SCITXBUF SCI-B predajni registar podataka

SCIFFTX SCI-B FIFO predajni registar

SCIFFRX SCI-B FIFO prijemni registar

SCIFFCT SCI-B FIFO kontrolni registar

SCIPRI SCI-B kontrolni registar prioriteta

Page 54: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

54

SCI konfiguracija

SCI_CONFIG.h #ifndef _SCI_CONFIG

#define _SCI_CONFIG

#define SCI_STOP_BITS 0

#define SCI_PARITY_ENABLE 1

#define SCI_PARITY_ODD 0

#define SCI_LOOP 0

#define SCI_ADDR 0

#define SCI_CHAR 7

#define SCI_RX_ERR_INT_EN 0

#define SCI_TXWAKE 0

#define SCI_SLEEP 0

#define SCI_TXENA 1

#define SCI_RXENA 1

#define SCI_RX_INT_ENA 0

#define SCI_TX_INT_ENA 0

#define SCI_FFENA 0

#define SCI_SOFT_FREE 3

#define SCI_TX_RDY SciaRegs.SCICTL2.bit.TXEMPTY

#endif

#ifndef _SCI_CONFIGc

#define _SCI_CONFIGc

#include "DSP2833x_Device.h"

#include "SCI_CONFIG.h"

extern void Sci_Init(void);

extern void Sci_Display(unsigned char c);

extern void InitSciaGpio();

void Sci_Init(void) {

EALLOW;

SciaRegs.SCICCR.bit.STOPBITS = SCI_STOP_BITS;

SciaRegs.SCICCR.bit.PARITYENA = SCI_PARITY_ENABLE;

SciaRegs.SCICCR.bit.PARITY = SCI_PARITY_ODD;

SciaRegs.SCICCR.bit.LOOPBKENA = SCI_LOOP;

SciaRegs.SCICCR.bit.ADDRIDLE_MODE = SCI_ADDR;

SciaRegs.SCICCR.bit.SCICHAR = SCI_CHAR;

SciaRegs.SCICTL1.bit.RXERRINTENA = SCI_RX_ERR_INT_EN;

SciaRegs.SCICTL1.bit.TXWAKE = SCI_TXWAKE;

SciaRegs.SCICTL1.bit.SLEEP = SCI_SLEEP;

SciaRegs.SCICTL1.bit.TXENA = SCI_TXENA;

SciaRegs.SCICTL1.bit.RXENA = SCI_RXENA;

SciaRegs.SCIHBAUD = 0x0000;

SciaRegs.SCILBAUD = 0x0028;

SciaRegs.SCICTL2.bit.TXINTENA = SCI_TX_INT_ENA;

SciaRegs.SCICTL2.bit.RXBKINTENA = SCI_RX_INT_ENA;

SciaRegs.SCIFFTX.bit.SCIFFENA = SCI_FFENA;

SciaRegs.SCICTL1.bit.SWRESET = 1;

GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;

GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;

EDIS;

}

void Sci_Display(unsigned char c) {

while (!SCI_TX_RDY);

Page 55: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

55

SciaRegs.SCITXBUF = c;

}

#endif

Page 56: Brzi prenos i obrada - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Seminar works MCU/Brzi prenos podataka/Brzi prenos... · za čitanje instrukcija i magistrale za čitanje i upis podataka

Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a

56

Reference

[1] Texas Instruments, TMS320F28335, TMS320F28334, TMS320F28332 TMS320F28235,

TMS320F28234, TMS320F28232 Digital Signal Controllers (DSCs), SPRS439J, 2012

[2] Texas Instruments, TMS320x2833x Analog-to-Digital Converter (ADC) Module,

SPRU812A, 2007

[3] Texas Instruments, TMS320x2833x, 2823x Direct Memory Access (DMA) Module,

SPRUFB8D, 2011

[4] Texas Instruments, TMS320F2833x/2823x Multichannel Buffered Serial Port (McBSP),

SPRUFB7B, 2011

[5] Texas Instruments, TMS320x2833x, 2823x Serial Communications Interface (SCI),

SPRUFZ5A, 2009