Upload
buibao
View
223
Download
0
Embed Size (px)
Citation preview
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 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
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
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
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
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
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
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
8
Memorijsak mapa
Memorijska mapa
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
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)
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.
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
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
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
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.
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
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.
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
18
Spoljašnji izvor referentnog napona 2.048 V
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
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
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;
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
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
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
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.
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
26
DMA dijagram stanja
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.
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
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
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
30
Registri šestog DMA kanala
0x10C0 Isto kao i gore
0x10DF
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;
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;
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
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
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
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)
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
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č
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.
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
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
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.
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
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
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
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
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
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
48
Serijski komunikacioni interfejs
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.
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.
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
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.
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
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);
Brzi prenos i podataka korišćenjem TMS320F28335 DSC-a
55
SciaRegs.SCITXBUF = c;
}
#endif
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