brzi prenos podataka
DESCRIPTION
Prenos podatakaTRANSCRIPT
-
Brzi prenos i obrada podataka korienjem TMS320F28335 DSC-a Izvetaj za projekat iz predmeta Mikrokontroleri Projekat koji je realizovan podrazumeva AD konverziju podataka, njihov prikaz na hyper terminal, i to na nain da procesor to manje uestvuje u tom prenosu kako bi bio maksimalno rastereen. Ovo je ostvareno korienjem DMA kontrolera i McBSP prenosa podataka. Za slanje podataka na hyper terminal iskorien je SCI.
2012
Jelena Zdravkovi 12822, Milo Lazi 13166 Marko Jelenkovi 12590 i Igor Stojanovi 12777
Univerzitet u Niu Elektronski fakultet
februar 2012
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
2
Sadraj
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
Reim niske potronje ............................................................................................................... 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 korienjem 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 proraun ............................................................................................................. 52
Kratak pregled SCI registara ...................................................................................................... 53
SCI konfiguracija ........................................................................................................................ 54
Reference ............................................................................................................................ 56
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
4
Uvod
U dananjoj tehnologiji se sve vie javlja potreba za korienjem brzih i pouzdanih kontrolera koji pored toga mogu da se odazovu potrebi za malom potronjom. Ovakva vrsta kontrolera se najee realizuje tako da u sebi sadri procesore specijalne namene i irok spektar naprednih periferija koje omoguavaju povezivanje sa velikim brojem podsistema. Kontroler koji je korien za realizaciju ovog projekta je DSC (Digital Signal Controller) firme Texas Instruments, familije TMS320F2833x. Kontroler je smeten 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 nain da procesor to manje uestvuje u tom prenosu kako bi bio maksimalno rastereen. Ovo je ostvareno korienjem DMA kontrolera i McBSP prenosa podataka. Za slanje podataka na hyper terminal iskorien je SCI.
Blok ema realizovanog sistema
Analogni ulaz u AD konvertor je simuliran korienjem potenciometra koji se nalazi na razvojnom sistemu. AD konvertor je podeen tako da odmerava signal frekvencijom 2.5 MHz. Rezultati konverzije se smetaju u bafer koji se sastoji od 16 registara veliine 16 bitova. AD konvertor radi u kontinualnom modu to znai 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 korienjem TMS320F28335 DSC-a
5
bafera, AD konvertor alje triger signal DMA kontroleru. DMA kontroler je podeen tako da oekuje 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 vri u jednom ciklusu gde je DMA kontroler podeen tako da nakon svake prenete rei inkrementira izvorinu i odredinu 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 podeen tako da simulira komunikaciju izmeu dva procesora izborom loopback reima rada. McBSP predajnik je podeen da generie sinhronizacione signale (MFSX, MCLKX). Prenos podataka se vri na taj nain to se u okviru frejma alje jedna re veliine 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 podeen tako da alje podatke brzinom od 115200 kbps, sa neparnom parnou. Prezentacija podataka se vri na taj nain to se na hyper terminalu procentualno prikazuje dovedeni napon na ulaz AD konvertora.
Terminalni prikaz normalizovanog ulaznog napona
-
Brzi prenos i podataka korienjem 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 postojei C28x DSC-ovi, ali takoe
poseduju jednostruku preciznost IEEE754 floating point jedinicu. Omoguava efikasno kodiranje
u C i C++ jeziku, to omoguava korisnicima razvoj sopstvenih programa za kontrolu sistema na
HLL jezicima. Takoe dozvoljava razvoj matematikih algoritama upotrebom C/C++ jeziku.
Ovaj ureaj je efikasan pri izvravanju aritmetiko intezivnih operacija kao i pri izvravanju
kontrolnih zadataka koji se obino realizuju upotrebom mikrokontrolera. Ova karakteristika
otklanja potrebu za jo jednim procesorom kod mnogih sisitema. 32x32 bitni MAC sa 64bitnom
procesnom moi omoguava kontroleru da se izbori sa numeriiki zahtevn operacijama. Ako se
na ovo doda brz odziv na prekid sa automatskim uvanjem konteksta kritinih registara, dobija
se ureaj koji je opsluuje veliki broj asinhronih dogaaja sa minimalnim kanjenjem. Ureaj
ima osmonivovsku protonost sa protonim pristupom memoriji. Protonost omoguava
izvravanje instrukcija pri velikoj brzini bez potrebe za skupim brzim memorijama. Specijalan
hardverski blok implementiran za predikciju grananja minimizira kanjenje pri uslovnim
diskontinuitetima. Posebno skladitenje uslovnih operacija jo vie poboljava performanse.
Mamorijska magistrala (Harvard arhitektura)
Kao to je sluaj kod mnogih DSC ureaja, vei broj magistrala se koristi za prenos podataka
izmeu memorija, periferija i CPU-a. C28X arhitektura memorijske magistrale sadri 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 omoguavaju
izvravanje 32bitnih operacije u jednom ciklusu. Arhitektura sa veim brojem magistrala,
uobiajeno nazvana Harvard magistrala, omoguava C28x da pribavi instrukciju, oita vrednost
podata i upie vrednost u jednom ciklusu. Sve periferije i memorije prikljuene na memorijsku
magistralu e imati prioritetni pristup memoriji. Generalno, prioritet pristupa memorijskoj
magistrali moe da se sumira na sledei nain:
Najvii prioritet: upis podataka; upis instrukcija; itanje podataka; itanje instrukcija
Najnii prioritet: pribavljanje instrukcija.
Periferijska magistrala
Da bi se omoguila migracija periferija izmeu razliitih TI DSC familija ureaja, 2833x
ureaji su usvojili standard za periferijsku magistralu. Most periferijske magistrale multipleksira
razliite magistrale koje pretvaraju proceorsku memerijsku magistralu u jednu magistralu koja se
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
7
sastoji od 16 adresnih linija i 16 ili 32 liije za podatke i pridruene kontrolne podatke. Podraane
su 3 verzije periferijske magistrale. Jedna verzija podrava samo 16 bitni pristup ( tzv.
periferijski frejm 2). Druga verzija podrava i 16 bitni i 32 bitni pristup (periferijski frejm 1).
Trea verzija podrava DMApristup kao i 16 bitne i 32 bitne pristupe ( periferijski frejm 3).
Blok dijagram
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
8
Memorijsak mapa
Memorijska mapa
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
9
Sigurnost
Ureaj podrava visok nivo sigurnosti da bi se zatitio sofrver od inverznog inenjeringa.
Sigurnost podrazumeva 128 bitnu ifru koju korisnik upisuje u flash. Jedan sigurnosni modul se
koristi da se zatiti flash kroz OTP i L0/L1/L2/L3 SARAM blokovi. Mogunost postavljanja
ifre spreava ne autorizovane korisnike od ispitivanje sadraja memorije preko JTAG porta,
izvravanje koda sa eksternih memorija ili pokuaja da se boot loaduje neki ne eljeni sofrtver
koji moi da otkrije zatiene memorijske sadraje. Da bi se obezbedio pristup osiguranim
blokovima, korisnik mora da upie tanu 128 bitnu KEY vrednost koja se podudara sa vrednou
skladnitenoj u lokaciji za ifru u flash memoriji. Kao dodatak CSM emulaciona logika zatite
koda (ECSL) je implementirana da bi se spreili ne autorizovani korisnici od manipulacije sa
kodom. Svaki pristup podacima ili kodu u flashu, koristnikoj 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 zatita pristup memoriji, korisnik mora
da upie tanu vrednostu u niih 64bita KEY registra, koja odgovara vrednosti sladitenoj u niih
64 bita na lokaciji rezervisanoj za ifru u flash memoriji. Treba primetiti da dummy oitavanja
svih 128 bitov ifre iz fash-a moraju biti izvedeni. U koliko niih 64 bita na lokaciji za ifru su
sve jedninice (ne programirano), onda KEY vrednost ne mora da se slae.
Periferijski interrupt ekspandor (PIE)
PIE blok slui da multripleksira brojne izvore prekida u manji set prekidnih ulaza. PIE blok
moe da podri do 96 periferijskih prekida. Na 2833X, 58 od moguih 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 pordan od strane svog sopstvenog vektora skladitenog
u definisanom RAM bloku koji moe biti prepisan od strane korisnika. Vektor se automatski
pribavlja od CPU-a zbog opsluivenja prekida. potrebno je 8 CPU ciklusa da se pribavi vektor i
sauva sadraj kritinih CPU registara to e rei da CPU moe da odgovori brzo na prekide.
Prioritet prekida se moe kontrolisati hardverski i softverski.Svaki pojedinani prekid moe se
dozvoliti ili zabraniti u okviru PIE bloka.
Ureaj podrava 8 maskirajuih prekida. Svaki od prekida moe se selektovati sa rastuom i
opadajuom ivicom ili i sa rastuom i opadajuom ivicom i svaki moe biti zabranjen ili
dozvoljen (ukljuuju XNMI). XINT1, XINT2, XNMI takoe sadre 16 bitni broja navie koji
se resetuje na nulu kada se detektuje validna ivica prekida. XINT3 do XINt7 prekidi mogu
prihvatiti ulaz sa GPIO32 do GPIO64 pina.
Ureaj se moe taktovati eksternim oscilatorom ili kristalom prikljuenim na kolo internog
oscilatora. Obezbeen je PLL koji podava do 10 vrednosti delitelja. PLL odnosi mogu biti
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
10
promenjeni za vreme izvravanja programa to omoguava korisniku da se vrati na operativnu
frekvenciju ako je zahtevan mod niske potronje. PLL blok se moe podesiti da radi u bypass
modu.
Watchdog
Ureaj sadri watchdog tajmer. Korisniki program mora redovno da resetuje broja
watchdog-a u okviru odreenog vremenskog perioda; U suprotnom watchdog e resetovati
procesor. Wachdog se moe onemoguiti ukoliko nije neopodan.
Taktovanje periferija
Takt do svake zasebne periferije moe biti dozvoljen ili zabranjen da bi se umanjula
potronja ukoliko periferija nije u upotrebi. Takoe sistemski takt do serijskih
portova(iskljuujui I2C i eCAN) i ADC blokove moe se skalirati u odnosu na procesorski takt.
Ovo omoguava da tajming periferija bude odvojen od veeg takta procesora.
Periferije
Integisane periferije na 2833x ureaju su pobrojane u sedeem 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 korienjem TMS320F28335 DSC-a
11
Analog-to-Digital Converter (ADC)
TMS 320F28335 poseduje 12 bitni protoni 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 vie kanala i dva sekvencera, postoji samo jedan ADC modul.
Blok dijagram AD konvertora
Svaki modul ima mogunost izbora jednog od 8 dostupnih kanala predko analognog
multipleksera.U kaskadnom reimu auto sekvencer radi kao 16 kanalni sekvencer. Nakon sveke
konverzije vrednost selektovanog kanala se smeta u njemu pridrueni ADCRESULT registar.
Auto sekvenciranje omoguava sisitemu da vri konverziju istog kanala vie puta omoguavajui
na taj nain primenu algoritama za oversampling.
AD konvertor ima sledee osobine :
12 bitno ADC jezgro sa ugraenim dvostrukim S/H kolom.
Istovremeno uzorkovanje ili sekvencijalno uzorkovenje.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
12
Analogni ulaz 0-3V.
Brza konverzija do 12,5 MHz.
16 kanalni multipleksirani ulazi.
Auto sekvenciranje omoguava do 16 auto konverzija u jednom ciklusu. Svaka
konverzija se moe programirati za 1 do 16 kanala.
Sekvencer moe da radi kao 2 nezavisna modula sa po 8 stanja ili jedan modul sa 16
stanja.
16 registara za smetanje rezultata.
Viestruki trigeri za pokretanje konverzije
- S/W softversko startovanje
- ePWM 1-6
- GPIO XINT2
Fleksibilna kontrola prekida omoguava zahtev za prekid na svaki zavretak sekvence ili
svaki drugi zavretak sekvence.
Sekvencer moe da radi u start/stop reimu omoguavajui viestruke vremenske trigere
da sinhhroniu konverzije.
ePWM trigeri mogu da rade nezavisno u reimu sa dva sekvencera.
S/H akvizicioni vremenski prozor se moe odvojeno podeavati.
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 izvriti od strane sekvencera. U oba sluaja AD konvertor moe
autosekvencrati niz autokonverzija. To znai da svaki put kada AD konvertor primi zahtev za
poetak konverzije moe obaviti vie konverzija automatski. Za svaku konveziju jedan od
dostupnih 16 ulaza se selektuje pomou analognog mutipleksera.
AD konvertor takoe moe raditi u simultanom reimu. Za svaku konverziju (ili par
konverzija u simultanom reimu ), trenutna vrednost CONVxx bitskog polja odreuje koji e pin
( ili par pinova ) biti uzorkovan i konvertovan. U reimu sekvencijalnog uzorkovanja sva 4 bita
CONVxx definiu ulazni pin. MSB definie kom je S/H baferu ulazni pin pridruen, a tri LSB-a
definiu ofset. Na primer, ukoliko CONVxx sadri 0101b, ADCINA5 je selektovani ulazni pin.
Ukoliko je vrednost 1011b, ADCINB3 je selektovani ulazni pin. U simultanom reimu
uzorkovanja, MSB CONVxx registra se ne uzima u obzir. Svaki S/H bafer uzorkuje pridrueni
pin odreen ofsetom 3 LSB-a CONVxx registra. Na primer, u koliko CONxx sadri vrednost
0110b, ADCINA6 je uzorkovan pomou S/H A kola i ADCINB6 je uzorkovan pomou S/H
B kola. Ukoliko je vrednos 1001b, ADCINA1 je uzorkovan pomou S/H A kola i ADCINB1 je
uzorkovan pomou S/H B kola. Napon S/H A kola se prvo konvertuje a zatim napon S/H B
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
13
kola. Rezultat S/H A konverzije se smeta u tekui ADCRESULTn registar ( ADCRESULT0
za SEQ1, podrazumevajui da je sekvencer bio resetovan ). Rezultat S/H B konverzije se
smeta u naredni registar ( ADCRESULT1 za SEQ1, predpostavljajui da je sekvencer bio
resetovn). Pokaziva registara za smetanje rezultt se inkrementira za 2.
Sekvencijalni reim uzorkovanja S- Akvizicioni prozor, C1- Vreme upisa u registar
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
14
Simultani reim 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 reimu rada
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
15
Blok dijagram AD konvertora u simultanom reimu rada
ADC preskaler
Periferni takt HSPCLK se deli za vrednost odreenom ADCCLKPS [ 3:0 ] bitovima
ADCTRL3 registra. Dodatno deljenje faktorom 2 je omogueno CPS bitom ADCTRL1 registra.
AD konvertor se moe prilagoditi razliitim impedansama izvora kontrolom sampling/
acquisition perioda. Ovo je ostvareno ACQ_PS bitovima ADCTRL1 registra.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
16
ADC I S/H taktovanje
ADC frekvencija uzorkovanja
ADC modul sardi 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 odgovarajuih podeavanja.
Blokovi taktnog signala
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
17
Reim niske potronje
AD konvertor omoguava izbor tri odvojena izvora napajanja kontrolisana ADCTRL3
registrom. Omoguena su tri reima napajanja: ADC je ukljuen, ADC je u neaktivnom stanju,
ADC je iskljuen.
Opcije napajanja
Funkcija prebrisavanja
U normalnom reimu sekvenceri omoguavaju selektovanje ADC kanalai smetanje njihovih
rezultatu u registre, sekvencijalno. Nakon izvravanja definisanog broja konverzija rad AD
konvertora se prekida. Sa omoguenom funkcijom prebrisavanja nakon zavravanja definisanog
broja konverzija AD konvertor automatski startuje novi ciklus konverzija i rezultate smeta 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 izvrila 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
moe koristiti spoljanji izvor referentnog napona. ADC prihvata napone od 2.048V, 1.5V ili
1.024V na ADCREF pinu. Registrom ADCREFSEl se odreuje koji e izvor biti korien.
Referentni izvor od 2.048V je izabran radi industrijskog standarda.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
18
Spoljanji izvor referentnog napona 2.048 V
-
Brzi prenos i podataka korienjem 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 korienjem 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 korienjem 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 korienjem 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 korienjem TMS320F28335 DSC-a
23
Direct Memory Access (DMA)
DMA modul predstavlja event-based (zasnovan na dogaaju) sistem, to znai da mu je potrebna pobuda od strane neke periferije kako bi zapoeo transfer podataka. Konfigurisanjem tajmera kao izvora pobude DMA sistema mogue je simulirati time-driven (pokrenut nakon nekog unapred definisanog vremena) sistem, ali sam DMA ne poseduje mehanizme za
periodino startovanje transfera podataka. Za svaki od est DMA kanala mogue je konfigutisati razliite izvore interrupt-a, a svaki kanal poseduje sopstveni nezavisni PIE interrupt kako bi CPU imao informaciju o tome kada je DMA transfer poeo ili se zavrio. Svi DMA kanali osim prvog su identini, a prvi kanal se razlikuje u tome to iam mounost da mu se dodeli vei prioritet nego drugim kanalima. Srce DMA sistema je adresna kontrolna logika koja dozvoljava
preureivanje 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 korienjem 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
Veliina rei: 16-bit ili 32-bit (McBSP je ogranien na 16 bita)
Propusnost od 4 ciklusa/rei (5 ciklusa/reo za McBSP itanje)
DMA blok dijagram
-
Brzi prenos i podataka korienjem 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 konani automat se sastoji od ugnjedenje petlje. Unutranja petlja prenosi pakete podataka kada je primljen interrupt od strane neke periferije. Paket predstavlja najmanju koliinu podataka koju je mogue premeti odjednom, a njegovu veliinu definie BURST_SIZE registar za svaki kanal. BURST_SIZE registar dozviljava da budu maksimalno 32 esnaestnobitne rei prenete u okviru jednog paketa. Spoljanja petlja, ija je veliina odreenja od strane TRANSFER_SIZE registra za svaki kanal, definie koliko se paketa se prenosi za vreme celokupnog transfera. TRANSFER_SIZE je 16-bit registar. Jedan CPU interrupt se generie (ako je dozvoljen) za svaki transfer. Ovaj interrupt se moe konfigutisati tako da se pojavljuje na poetku ili na kraju transfera, preko MODE.CHx[CHINTMODE] bita.
Svaki DMA kanal poseduje klonirani adresni pointer za adresu izvora i adresu odredita. Ovi pointeri, SRC_ADDR i DST_ADDR, mogu biti nezavisno kontrolisani za vreme operacije
konanog automata. Na poetku svakog prenosa klonirana verzija svakog pointera se kopira u odgovarajui aktivni registar. Za vreme petlje u kojoj se vri prenos paketa, nakon svake prenete rei, oznaena vrednost koja se nalazi u odgovarajuem BURST_STEP registru izvora i odredita 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 pokazivaa. Prvi metod je dodavanje oznaene vrednosti koja se nalazi u SRC/DST_TRANSFER_STEP registru odgovarajuem pokazivau. Druga je preko procesa koji se naziva umotavanje (wrapping), kod koje se wrap adresa uitava u aktivni adresni pokaziva. Kada se wrap procedura dogodi, SRC/DST_TRANSFER_STEP registar nema efekta.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
26
DMA dijagram stanja
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
27
Odlike ADC sinhronizacije
DMA prua 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 specifinom modu ADC e neprekidno raditi konverziju sekvenci ADC kanala bez resetovanja pokazivaa sekvencera na kraju svake sekvence. Obzirom da DMA nezna na koji ADC RESULT registar pokiziva sekvencera pokazuje kada primi trigger, postoji mogunost da DMA i ADC budu u raskoraku. Zbog toga kada je ADC konfigurisan u ovom modu on prua sinhronizacioni signal DMA-u na taj nain to se generie trigger na dogaaj svaki put kada sekvenca poinje od RESULT0 registra. DMA oekuje signal kako bi se poravnao sa warp rpocedurom ili poetkom prenosa. Ako ga ne dobije, pokree se procedura za resinhronizaciju:
1. Ponovo se napuni WRAP_COUNT registar sa WRAP_SIZE 2. Uita se u ADDR.active registar BEG_ADDR.active 3. Postavlja se SYNCERR bit u CONTROL registar
Ovo omoguava korienje vie bafera za skladitenje podataka i za DMA i ADC resinhronizaciju ako je ista neophodna.
Dijagram ADC sinhronizacije
Kao to se moe 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
nee poeti dok se ne primi prvi SYNC nakon to je RUN bit setovan. Svi periferni izvori prekida se ignoriu sve do prvog SYNC dogaaja.
-
Brzi prenos i podataka korienjem 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 veliinu paketa
0x1023 BURST_COUNT
Broja paketa
0x1024 SRC_BURST_STEP Registar za veliinu koraka paketa sa strane izvora
0x1025 DST_BURST_STEP Registar za veliinu koraka paketa sa strane odredita
0x1026 TRANSFER_SIZE
Registar veliine prenosa
0x1027 TRANSFER_COUNT
Broja za prenos
0x1028 SRC_TRANSFER_STEP
Registar za veliinu koraka prenosa sa strane izvora
0x1029 DST_TRANSFER_STEP
Registar za veliinu koraka prenosa sa strane odresita
0x102A SRC_WRAP_SIZE
Registar za veliinu wrap-a sa strane izvora
0x102B SRC_WRAP_COUNT Broja wrap-a sa strane izvora
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
29
0x102C SRC_WRAP_STEP
Registar za veliinu koraka wrap-a sa strane izvora
0x102D DST_WRAP_SIZE
Registar za veliinu wrap-a sa strane odredita
0x102E DST_WRAP_COUNT
Broja wrap-a sa strane odredita
0x102F DST_WRAP_STEP
Registar za veliinu koraka wrap-a sa strane odredita
0x1030 SRC_BEG_ADDR_SHADOW
Registar za klonirani poetak izvora i pokazivaa na trenutnu adresu
0x1032 SRC_ADDR_SHADOW
0x1034 SRC_BEG_ADDR
Registar za aktivni poetak izvora i pokazivaa na trenutnu adresu
0x1036 SRC_ADDR
0x1038 DST_BEG_ADDR_SHADOW Registar za klonirani poetak odredita i pokazivaa na trenutnu adresu
0x103A DST_ADDR_SHADOW
0x103C DST_BEG_ADDR
Registar za aktivni poetak odedita i pokazivaa na trenutnu adresu
0x103E DST_ADDR
0x103F Rezervisano
Rezervisano
Registri drugog DMA kanala
0x1040 Isto kao i gore
0x105F
Registri treeg 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 korienjem TMS320F28335 DSC-a
30
Registri estog DMA kanala
0x10C0 Isto kao i gore
0x10DF
-
Brzi prenos i podataka korienjem 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
-
Brzi prenos i podataka korienjem 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 korienjem 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 korienjem 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 korienjem TMS320F28335 DSC-a
35
Multichannel Buffered Serial Port (McBSP)
Multi Channel Buffered Serial Port (McBSP) predstavlja sinhroni serijski komunikacioni
kanal brzu razmenu podataka izmeu F2833x i eksternih serijskih ureaja. 2833x ureaj obezbeuje do dva brza McBSP-a. Nezavisni signal takta (CLK(R/X)) resivera i transmitera moe biti generisan od strane F2833x (master mod) ili nekog eksternog ureaja (slave mod). Maksimalna brzina prenosa podataka je 20 Mhz.
Sinhronizacioni signal frame-a (FS(R/X)) ukazuje na poetak nove sekvence podataka (frame). Frame sadri izmeu 1 i 128 rei (ili kanala), dok re moe biti veliine 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) moe biti ukljuena u prenos.
Svaki McBsp interfejs se sastoji od est elektrinih 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 korienjem TMS320F28335 DSC-a
36
McBSP blok dijagram
U tabeli koja sledi su prikazani elektrini signali McBSP interfejsa. Smer taktnog signala zavisi od podeavanja McBSP da radi kao master ureaj (izlaz) ili kao slave ureaj (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 korienjem TMS320F28335 DSC-a
37
McBSP je takoe povezan sa CPU i DMA preko etiri unutranjih signala dogaaja:
MRINT: McBSP - Interrupt signal prijema
MXINT: McBSP - Interrupt signal predaje
REVT: Prijemni sinhronizacioni dogaaj ka DMA
XEVT: Predajni sinhronizacioni dogaaj 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 pomerakih registara (XSR1, XSR2). Slino, primljeni podaci sa DR pina se pomeraju u prijemne pomerake registre (RSR1, RSR2) i komiraju u prijemne bafer registre (RBR1,RBR2). Sadraj 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 duina rei 8, 12, ili 16 bita. Za rei vee duine ovi registri su potrebni za uvanje bitova najvee teine.
Neke od karakteristika McBSP-a su:
Full duplex komunikacija
Double-buffered predaja i triple-buffered prijem, koji omoguavaju neprestan tok podataka
Nezavisno taktovanje i pakovanje za predeju i prijem
alje interrupt-e ka CPU i alje DMA dogaaje ka DMA kontroleru
128 kanala za predaju i prijem
Multikanalna selekcija modova koji omoguavaju ili zabranjuju blokovski prenos za svaki kanal
Podrka 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 ureaji o AC97 kompatibilni ureaji sa mogunou viefaznog pakovanja o I2C kompatibilni ureaji o SPI ureaji
Promenjiva veliina podataka : 8, 12, 16, 20, 24, i 32 bita
A-law i u-law hardverska kompresija/ekspanzija
-
Brzi prenos i podataka korienjem 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
razliitim vremenima (takti signali MCLKX i MCLKR). Prenos pakovanih podataka kree 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 vie rei. Broj rei je moe biti od 1 do 128 rei. Re se moe sastojati od odreenog 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 razliita podeavanja za broj bitova u rei i broja rei u okviru za svaku fazu posebno.
Bit i Re
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
39
Jo jedan od modova koji poseduje McBSP je multikanalni (multi-channel) mod, u kome je mogue iz okvira izvui samo enjene rei. Kao primer sledi slika na kojoj kodek alje 32 rei po okviru, ali F2833 ita sam rei 0, 5 i 27 iz svakog okvira.
Multikanalna selekcija
McBSP taktovanje
Rei 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 kontrolie rastuom i opadajuom ivicom taktnog signala prijemnika i predajnika.
McBSP taktovanje
Prijemniki taktni signal (CLKR) kontrolie prenos od DR pina ka RSR-ovima, predajniki takti signal (CLKX) kontrolie prenos od XSR-a ka DX pinu. Treba napomenuti da McBSP ne moe da radi na frekvenciji veoj od polovine LSPCLK.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
40
McBSP Prijem
Proces koji sledi objanjava 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 odgovarajue kanjenje podataka koje je selektovano RDATDLY bitovima registra RCR2.
McBSP prihvata bitove podataka sa DR pina i pomera ih u prijemni pomeraki registar(e). Ako je duina rei 16 bita ili manje, koristi se samo RSR1, a ako je duina rei vea od 16 bita, koriste se RSR1 i RSR2, gde RSR2 sadri bitove najvee teine.
Kada se primi cela re, McBSP kopira sadraj prijemnog pomerakog registra u prijemni buffer, pod uslovom da RBR1 nije ve pun. Ako je duina rei 16 bita ili manje, koristi se samo RBR1, a ako je duina rei vea od 16 bita, koriste se RBR1 i RBR2, gde RBR2 sadri bitove najvee teine.
McBSP kopira sadraj 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 duina rei 16 bita ili manje, koristi se samo DRR1, a ako je duina rei vea od 16 bita, koriste se DRR1 i DRR2, gde DRR2 sadri bitove najvee teine.
CPU i DMA kontroler vre itanje podataka iz prijemnog registra za podatke. Kada je DRR1 proitan, RRDY se isti i inicijalizuje se nivo kopiranje iz RBR u DRR.
Prijem podataka
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
41
McBSP Predaja
Sekcija koja sledi objanjava 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 duina rei 16 bita ili manje, koristi se samo DRX1, a ako je duina rei vea od 16 bita, koriste se DRX1 i DRX2, gde DRX2 sadri bitove najvee teine.
Kada je novi podatak upisan u DXR1, McBSP kopira sadraj predajnog registra za podatke u predajni pomeraki registar. Pored toga, predajnikov ready bit (XRDY) se setuje. On upuuje da je predajnik spreman da primi nove podatke sa CPU-a ili DMA kontrolera. Ako je duina rei 16 bita ili manje, koristi se samo XRX1, a ako je duina rei vea od 16 bita, koriste se XRX1 i XRX2, gde XRX2 sadri bitove najvee teine.
McBSP eka predajni frame-synchronization impuls u interni FSX.
Kada impuls stigne, McBSP upacuje odgovarajue kanjenje podataka koje je selektovano XDATDLY bitovima registra XCR2.
McBSP pomera bitove podataka iz predajnog pomerakog registra na DX pin.
Predaja podataka
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
42
McBSP Interrupt i DMA
McBSP alje obavetenje o vanim dogaajima 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 dogaaj prijema od McBSP-a ka DMA, okinut kada su podaci primljeni u DRR.
XEVT Sinhronizacioni dogaaj predaje od McBSP-a ka DMA, okinut kada je DXR spreman da primi nove podatke.
-
Brzi prenos i podataka korienjem 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 korienjem 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 korienjem 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 korienjem TMS320F28335 DSC-a
46
Serial Communications Interface (SCI)
Serijski komunikaconi interfejs (SCI) je dvoiani asinhroni serijski port poznat kao UART.
SCI modul podrava digitalnu komunikaciju izmeu 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 opsluivanjem 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 dolo do prekida u komunikaciji, parnost i greke okvira. Bitska brzina je programabilna i
kontrolisana 16 bitnim registrom.
SCI CPU interfejs
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
47
Svojstva SCI modula su sledea:
Dva eksterna pina:
- SCITXD: SCI transmisioni izlazni pin
- SCIRXD: SCI prijemni ulazni pin
Bitska brzina programabilna sa 64k razliitih vrednosti
Format podataka:
- Jedan startni bit
- Programabilna duina rei od 1 do 8 bitova
- Opciono parna/ neparna parnost
- Jedan ili dva stop bita
etiri markera greke: parnost, prekoraenje, detekcija prekida komunikacije
Dva reima buenja 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 smetenih u registarskom polju poevi od adrese 7050h
Hardverska logika za automatsku detekcju bitske brzine
16 nivovski predajno-prijemni FIFO
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
48
Serijski komunikacioni interfejs
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
49
Arhitektura SCI modula
Glavni elementi koji se koriste u Full-duplex reimu rada su:
Predajnik (TX) i njegovi glavni registri
- SCITXBUF - Predajni bafer registar. Sadri podatak ( upisan od strane
CPU ) koje treba preneti
- TXSHF registar predajni pomeraki 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 pomeraki refistar. Pomera podatak sa SCIRX
pina, jeddan bit po ciklusu
- SCIRXBUF Prijemni registar podatka. Sadri podatak koji e biti
proitan od strane CPU. Podatak od procesora poiljaoca se smeta 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 reimu rada)
Osnovna jedinica podatka se naziva karakter i duine je od 1 do 8 bitova. Svaki karakter podatka
je formiranod jednog poetnog bita, jednog ili dva stop bita i opciono bita parnosti i adrese.
Karakter podatka sa ovim bitovima se naziva okvir.
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
50
Tipini SCI format podataka
SCI komunikacioni format
SCI asinhroni komunikaconi format koristi jednu ili dve komunikacione linije. Prijemnik
zapoinje 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 zapoinje
ponovno nadgledanje startng bita. Za bitove koji slede startni bit procesor odreuje vrednost
pomou tri uzorka na sredini bitskog intervala. Ovi uzorci se javljau na 4, 5 i 6 SCICLK
intervalu, i odreivanje vrednosti bita je zasnovano na veinskoj 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 logike jedinice kako bi se dozvolio rad prijemnika.
2. Pdataka pristie 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 korienjem TMS320F28335 DSC-a
51
4. Program ita SCIRXBUF; marke RXRDY se automatski brie
5. Sledei bajt podatka pristie na SCIRXD pin; Detekstuje se startni bit
6. Bit RXENA se postavlja na nulu kako bi se onemoguio rad prijemnika. Prodaci
prisiu u RXSHF ali se ne prenose do prijemnog bafer refistra.
SCI RX signali u komunikacionom reimu
Sekvence slanja podatka
Sekvenca slanja podataka je sledea:
1. Bit TXENA se postavlja na 1 ime se omoguava 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 sledei 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 zavrava. Poinje prenos drugog karaktera
6. Bit TXENA se postavlja na nulu kako bi se onemoguuio rad predajnika; SCI
zavrava slanje tekueg karaktera
7. Prens drugog karektera je zavren. Predajnik je prazan i spreman za novi karakter
-
Brzi prenos i podataka korienjem TMS320F28335 DSC-a
52
SCI TX signali u komunikacionom reimu
SCI Baud rete proraun
Interno generisan takt je odreen perifernim taktom LSPCLK. SCI koristi 16 bitnu vrednost
registra za izbor bitske brzine. U sledeoj tabeli su date vrednosti za tipine SCI bitske brzine.
-
Brzi prenos i podataka korienjem 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 vii bitovi baud registra
SCILBAUD SCI-A nii 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 vii bitovi baud registra
SCILBAUD SCI-B nii 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 korienjem 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 korienjem TMS320F28335 DSC-a
55
SciaRegs.SCITXBUF = c;
}
#endif
-
Brzi prenos i podataka korienjem 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