Brzi prenos podataka

Embed Size (px)

DESCRIPTION

Prenos podataka

Citation preview

  • 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