Choď na obsah Choď na menu

UART PIC16F1824

Modul EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter) je sériové I / O komunikačné periférie. Obsahuje všetky generátory hodín, posuvné registre a dátové vyrovnávacie pamäte potrebné na vykonanie vstupného alebo výstupného sériového dátového prenosu nezávisle od vykonania programu zariadenia. EUSART, tiež známy ako sériové komunikačné rozhranie (SCI), je možné nakonfigurovať ako plne duplexný asynchrónny systém alebo ako polovičný duplexný synchrónny systém. Režim Full-Duplex je vhodný na komunikáciu s periférnymi systémami, ako sú terminály CRT a osobné počítače. Poloduplexný synchrónny režim je určený na komunikáciu s periférnymi zariadeniami, ako sú integrované obvody A / D alebo D / A, sériové EEPROM alebo iné mikrokontroléry. Tieto zariadenia zvyčajne nemajú interné hodiny na generovanie prenosovej rýchlosti a vyžadujú externý hodinový signál poskytovaný hlavným synchrónnym zariadením. Modul EUSART obsahuje nasledujúce funkcie: • Full-duplexný asynchrónny prenos a príjem • Dvojznakový vstupný buffer • Jednoznakový výstupný buffer • Programovateľná 8-bitová alebo 9-bitová dĺžka znaku • Detekcia adresy v 9-bitovom režime • Vstupná vyrovnávacia pamäť detekcia chyby prekročenia • detekcia chyby rámovania prijatých znakov • synchrónny master s polovičným duplexom • synchrónny syntezátor s polovičným duplexom • programovateľná polarita hodín v synchrónnych režimoch • prevádzka v režime spánku Modul EUSART implementuje nasledujúce ďalšie funkcie, takže je ideálne vhodný pre použitie v sieti Local Interconnect Network. Systémy zbernice (LIN): • Automatická detekcia a kalibrácia prenosovej rýchlosti • Prebudenie pri prerušení signálu • 13-bitový prenos prerušeného znaku Blokové schémy vysielača a prijímača EUSART sú znázornené na obrázkoch 26-1 a 26-2. Činnosť modulu EUSART je riadená prostredníctvom troch registrov: • Stav a riadenie vysielania (TXSTA) • Stav a kontrola príjmu (RCSTA) • Riadenie prenosovej rýchlosti (BAUDCON). Tieto registre sú podrobne uvedené v registroch 26-1, 26-26 a Registrovať 26-3, resp. Ak sekcia prijímača alebo vysielača nie je povolená, môže sa na vstup a výstup na všeobecné účely použiť zodpovedajúci kolík RX alebo TX. 26.1 EUSART asynchrónny režim EUSART vysiela a prijíma údaje pomocou štandardného formátu non-return-to-zero (NRZ). NRZ sa implementuje s dvoma úrovňami: stav značky VOH, ktorý predstavuje dátový bit „1“, a stav priestoru VOL, ktorý predstavuje dátový bit „0“. NRZ odkazuje na skutočnosť, že po sebe vysielané dátové bity rovnakej hodnoty zostávajú na výstupnej úrovni tohto bitu bez návratu na neutrálnu úroveň medzi každým bitovým prenosom. Port prenosu NRZ je v stave značky nečinný. Každý prenos znakov pozostáva z jedného štartovacieho bitu, za ktorým nasleduje osem alebo deväť dátových bitov, a je vždy ukončený jedným alebo viacerými stop bitmi. Start bit je vždy medzera a stop bity sú vždy značky. Najbežnejší dátový formát je 8 bitov. Každý prenášaný bit pretrváva po dobu 1 / (prenosová rýchlosť). Na odvodenie štandardných frekvencií prenosovej rýchlosti z systémového oscilátora sa používa 8-bitový / 16-bitový generátor prenosovej rýchlosti na čipu. Príklady konfigurácií prenosovej rýchlosti nájdete v tabuľke 26-5. EUSART vysiela a prijíma LSb ako prvý. Vysielač a prijímač EUSART sú funkčne nezávislé, ale zdieľajú rovnaký dátový formát a prenosovú rýchlosť. Parita nie je hardvérom podporovaná, ale je možné ju implementovať v softvéri a uložiť ako deviaty dátový bit. 26.1.1 EUSART ASYNCHRÓNNY VYSIELAČ Bloková schéma vysielača EUSART je znázornená na obrázku 26-1. Srdcom vysielača je sériový posuvný register (TSR), ktorý nie je priamo prístupný pomocou softvéru. TSR získava svoje údaje z vysielacej medzipamäte, čo je register TXREG. 26.1.1.1 Povolenie vysielača Vysielač EUSART je povolený pre asynchrónne operácie konfiguráciou nasledujúcich troch riadiacich bitov: • TXEN = 1 • SYNC = 0 • SPEN = 1 Všetky ostatné riadiace bity EUSART sa považujú za predvolené. Nastavenie bitu TXEN registra TXSTA umožňuje obvody vysielača EUSART. Vymazanie bitu SYNC registra TXSTA nakonfiguruje EUSART na asynchrónnu prevádzku. Nastavenie bitu SPEN registra RCSTA umožňuje EUSART a automaticky konfiguruje vstupno-výstupný pin TX / CK ako výstup. Ak je kolík TX / CK zdieľaný s analógovou perifériou, musí byť analógová I / O funkcia deaktivovaná vymazaním zodpovedajúceho bitu ANSEL. 26.1.1.2 Prenos údajov Prenos sa iniciuje zápisom znaku do registra TXREG. Ak je toto prvý znak alebo bol predchádzajúci znak z TSR úplne vyprázdnený, dáta v TXREG sa okamžite prenesú do registra TSR. Pokiaľ TSR stále obsahuje celý alebo časť predchádzajúceho znaku, dáta nového znaku sa uchovávajú v TXREG, kým sa neprenesie bit Stop predchádzajúceho znaku. Čakajúci znak v TXREG sa potom prenesie do TSR v jednom TCY bezprostredne po vysielaní stop bitov. Prenos štartovacieho bitu, dátových bitov a sekvencie stop bitov začína okamžite po prenose dát do TSR z TXREG. 26.1.1.3 Príznak prerušenia vysielania Bitový príznak prerušenia TXIF registra PIR1 sa nastaví vždy, keď je povolený vysielač EUSART a v TXREG nie je zadržaný žiadny znak na prenos. Inými slovami, bit TXIF je jasný iba vtedy, keď je TSR zaneprázdnený znakom a keď je do TXREG zaradený nový rad na prenos. Bit príznaku TXIF sa nevymaže okamžite po zápise TXREG. TXIF nadobúda platnosť v druhom cykle inštrukcie po vykonaní zápisu. Polling TXIF bezprostredne po zápise TXREG vráti neplatné výsledky. Bit TXIF je iba na čítanie, nemožno ho nastaviť alebo vymazať softvérom. Prerušenie TXIF je možné povoliť nastavením bitu povoleného bitu TXIE prerušenia v registri PIE1. Bit príznaku TXIF sa však nastaví vždy, keď je TXREG prázdny, bez ohľadu na stav povoleného bitu TXIE. Ak chcete pri prenose údajov použiť prerušenie, bit TXIE nastavte, iba ak je k dispozícii viac údajov na odoslanie. Pri zápise posledného znaku prenosu do TXREG zrušte bit umožňujúci prerušenie TXIE. 26.1.1.4 Stav TSR Bit TRMT registra TXSTA označuje stav registra TSR. Toto je bit iba na čítanie. Bit TRMT sa nastaví, keď je register TSR prázdny, a vymaže sa, keď sa znak prenesie do registra TSR z TXREG. Bit TRMT zostáva čistý, kým sa všetky bity nepresunú z registra TSR. S týmto bitom nie je spojená žiadna logika prerušenia, takže užívateľ musí tento bit dopytovať, aby zistil stav TSR. 26.1.1.5 Vysielanie 9-bitových znakov EUSART podporuje 9-bitový prenos znakov. Keď je nastavený bit TX9 v registri TXSTA, EUSART posunie deväť bitov pre každý prenesený znak. Bit TX9D registra TXSTA je deviatym a najdôležitejším dátovým bitom. Pri prenose 9-bitových údajov musí byť dátový bit TX9D zapísaný pred zápisom ôsmich bitov najmenšieho významu do TXREG. Všetkých deväť bitov dát sa prenesie do posuvného registra TSR okamžite po zápise TXREG. Pre použitie s viacerými prijímačmi je k dispozícii špeciálny 9-bitový režim adresy. Viac informácií o režime adries nájdete v časti 26.1.2.7 „Detekcia adries“. 26.1.1.6 Nastavenie asynchrónneho prenosu: 1. Inicializujte pár registrov SPBRGH, SPBRGL a bity BRGH a BRG16, aby ste dosiahli požadovanú prenosovú rýchlosť (pozri časť 26.3 „Generátor prenosovej rýchlosti EUSART (BRG)“). 2. Povoľte asynchrónny sériový port vymazaním bitu SYNC a nastavením bitu SPEN. 3. Ak je požadovaný 9-bitový prenos, nastavte riadiaci bit TX9. Nastavený deviaty dátový bit bude znamenať, že osem dátových bitov s najmenším významom je adresa, keď je prijímač nastavený na detekciu adresy. 4. Povoľte prenos nastavením riadiaceho bitu TXEN. To spôsobí nastavenie prerušovacieho bitu TXIF. 5. Ak sú požadované prerušenia, nastavte bit povolenia prerušenia TXIE registra PIE1. Prerušenie nastane okamžite za predpokladu, že sú tiež nastavené bity GIE a PEIE v registri INTCON. 6. Ak je zvolený 9-bitový prenos, mal by sa deviaty bit načítať do dátového bitu TX9D. 7. Vložte 8-bitové dáta do registra TXREG. Spustí sa prenos. 26.1.2 EUSART ASYNCHRÓNNY PRIJÍMAČ Asynchrónny režim sa zvyčajne používa v systémoch RS-232. Bloková schéma prijímača je znázornená na obrázku 26-2. Dáta sú prijímané na kolíku RX / DT a riadia blok obnovy dát. Blok na obnovu dát je v skutočnosti vysokorýchlostný radič pracujúci pri 16-násobku prenosovej rýchlosti, zatiaľ čo sériový prijímač posuvného registra (RSR) pracuje pri bitovej rýchlosti. Keď je posunutých všetkých osem alebo deväť bitov znaku, okamžite sa prenesú do dvojmiestnej pamäte FIFO (First-In-First-Out). Vyrovnávacia pamäť FIFO umožňuje príjem dvoch celých znakov a začiatok tretieho znaku predtým, ako softvér musí začať obsluhovať prijímač EUSART. Registre FIFO a RSR nie sú priamo prístupné softvérom. Prístup k prijatým údajom je cez register RCREG. 26.1.2.1 Povolenie prijímača Prijímač EUSART je povolený pre asynchrónnu prevádzku konfiguráciou nasledujúcich troch riadiacich bitov: • CREN = 1 • SYNC = 0 • SPEN = 1 Všetky ostatné riadiace bity EUSART sa považujú za predvolené. Nastavenie bitu CREN registra RCSTA umožňuje obvody prijímača EUSART. Vymazanie bitu SYNC registra TXSTA nakonfiguruje EUSART na asynchrónnu prevádzku. Nastavenie bitu SPEN registra RCSTA umožňuje EUSART. Programátor musí nastaviť zodpovedajúci bit TRIS, aby nakonfiguroval I / O pin TX / CK ako vstup. 26.1.2.2 Prijímanie dát Okruh obnovy dát prijímača iniciuje príjem znakov na zostupnej hrane prvého bitu. Prvý bit, známy tiež ako štartovací bit, je vždy nula. Obvod obnovy dát počíta jeden a pol bitu času do stredu štartovacieho bitu a overuje, či je bit stále nula. Ak nie je nula, obvod na obnovu dát preruší príjem znakov bez vygenerovania chyby a pokračuje v hľadaní zostupnej hrany štartovacieho bitu. Ak je overenie počiatočného bitu úspešné, potom obvod na obnovenie údajov počíta celý bitový čas do stredu nasledujúceho bitu. Bit je potom vzorkovaný väčšinovým detekčným obvodom a výsledná hodnota „0“ alebo „1“ je posunutá do RSR. Toto sa opakuje, kým sa nevyberú všetky dátové bity a neposunú sa do RSR. Meria sa jeden konečný čas bitu a vzorkuje sa úroveň. Toto je stop bit, ktorý je vždy „1“. Ak obvod na obnovenie údajov vzorkuje „0“ v polohe stop bitu, potom je pre tento znak nastavená chyba rámovania, inak sa chyba rámovania pre tento znak vymaže. Ďalšie informácie o chybách pri zarámovaní nájdete v časti 26.1.2.4 „Príjem chyby rámovania“. Okamžite po prijatí všetkých dátových bitov a stop bitu sa znak v RSR prenesie do EUSART príjmu FIFO a nastaví sa bit príznaku prerušenia RCIF v registri PIR1. Vrchný znak vo FIFO sa prenesie z FIFO načítaním registra RCREG. 26.1.2.3 Prijatie prerušenia Bit bitov príznaku prerušenia RCIF v registri PIR1 sa nastaví vždy, keď je povolený prijímač EUSART a v prijímacom FIFO je neprečítaný znak. Príznakový bit prerušenia RCIF je iba na čítanie, nemožno ho nastaviť alebo vymazať softvérom. Prerušenia RCIF sú povolené nastavením všetkých nasledujúcich bitov: • RCIE prerušenie aktivácie bitu registra PIE1 • PEIE periférne prerušenie aktivácie bitu registra INTCON • GIE globálne prerušenie aktivácie bitu registra INTCON Bit príznaku prerušenia RCIF bude nastavený, keď vo FIFO je neprečítaný znak bez ohľadu na stav bitov umožňujúcich prerušenie. 26.1.2.4 Prijímacia chyba rámovania Každý znak v prijímacej vyrovnávacej pamäti FIFO má zodpovedajúcu stavovú chybu rámcovej chyby. Chyba rámovania naznačuje, že bit Stop nebol v očakávanom čase viditeľný. K chybovému stavu rámovania sa pristupuje cez bit FERR registra RCSTA. Bit FERR predstavuje stav horného neprečítaného znaku v prijímanom FIFO. Preto musí byť bit FERR prečítaný pred načítaním RCREG. Bit FERR je iba na čítanie a vzťahuje sa iba na horný neprečítaný znak v prijímanom FIFO. Chyba zarámovania (FERR = 1) nevylučuje príjem ďalších znakov. Nie je potrebné vyčistiť bit FERR.  Čítanie nasledujúceho znaku z vyrovnávacej pamäte FIFO spôsobí posun FIFO na ďalší znak a ďalšiu zodpovedajúcu chybu rámovania. Bit FERR je možné vynútiť vymazaním vymazaním bitu SPEN z registra RCSTA, ktorý resetuje EUSART. Vymazanie bitu CREN registra RCSTA nemá vplyv na bit FERR. Samotná chyba rámovania negeneruje prerušenie. 26.1.2.5 Chyba prekročenia príjmu Príjem vyrovnávacej pamäte FIFO môže obsahovať dva znaky. Chyba prekročenia sa vygeneruje, ak sa pred prístupom k FIFO prijme tretí znak ako celok. Keď sa to stane, nastaví sa bit OERR registra RCSTA. Znaky, ktoré sú už vo vyrovnávacej pamäti FIFO, je možné čítať, ale až do odstránenia chyby nebudú prijaté žiadne ďalšie znaky. Chyba musí byť odstránená buď vymazaním bitu CREN z registra RCSTA, alebo resetovaním EUSART vymazaním bitu SPEN z registra RCSTA. 26.1.2.6 Príjem 9-bitových znakov EUSART podporuje príjem 9-bitových znakov. Keď je nastavený bit RX9 registra RCSTA, EUSART posunie deväť bitov do RSR pre každý prijatý znak. Bit RX9D registra RCSTA je deviatym a najdôležitejším dátovým bitom horného neprečítaného znaku v prijímanom FIFO. Pri čítaní 9-bitových dát z prijímacieho vyrovnávacieho zásobníka FIFO je potrebné načítať dátový bit RX9D pred načítaním ôsmich najmenej dôležitých bitov z RCREG. 26.1.2.7 Detekcia adresy Špeciálny režim detekcie adresy je k dispozícii pre použitie, keď viac prijímačov zdieľa rovnaké prenosové vedenie, ako napríklad v systémoch RS-485. Detekcia adresy je povolená nastavením bitu ADDEN registra RCSTA. Detekcia adresy vyžaduje príjem 9-bitových znakov. Keď je povolená detekcia adresy, do prijímacieho bufferu FIFO sa prenesú iba znaky s deviatou sadou dátových bitov, čím sa nastaví prerušovací bit RCIF. Všetky ostatné znaky budú ignorované. Po prijatí znaku adresy používateľský softvér zistí, či sa adresa zhoduje s jeho vlastnou. Po zhode adries musí užívateľský softvér zakázať detekciu adries vymazaním bitu ADDEN predtým, ako dôjde k ďalšiemu bitu Stop.  Keď užívateľský softvér zistí koniec správy, určený použitým protokolom správy, softvér uvedie prijímač späť do režimu detekcie adresy nastavením bitu ADDEN. 26.1.2.8 Nastavenie asynchrónneho príjmu: 1. Inicializujte pár registrov SPBRGH, SPBRGL a bity BRGH a BRG16, aby ste dosiahli požadovanú prenosovú rýchlosť (pozri časť 26.3 „Generátor prenosovej rýchlosti EUSART (BRG)“). 2. Vymažte bit ANSEL pre pin RX (ak je k dispozícii). 3. Povolením sériového portu nastavte bit SPEN. Bit SYNC musí byť pri asynchrónnej prevádzke voľný. 4. Ak sú požadované prerušenia, nastavte bit RCIE registra PIE1 a bity GIE a PEIE registra INTCON. 5. Ak je požadovaný 9-bitový príjem, nastavte bit RX9. 6. Povoľte príjem nastavením bitu CREN. 7. Príznakový bit prerušenia RCIF sa nastaví, keď sa znak prenesie z RSR do prijímacej vyrovnávacej pamäte. Prerušenie sa vygeneruje, ak bol tiež nastavený bit aktivácie prerušenia RCIE. 8. Čítaním registra RCSTA získate chybové hlásenia a ak je povolený príjem 9-bitových údajov, deviaty dátový bit. 9. Získajte prijatých osem najmenej dátových bitov z prijímacej vyrovnávacej pamäte prečítaním registra RCREG. 10. Ak dôjde k prekročeniu, vymažte príznak OERR vymazaním aktivačného bitu prijímača CREN. 26.1.2.9 Nastavenie režimu detekcie 9-bitovej adresy Tento režim by sa zvyčajne používal v systémoch RS-485. Ak chcete nastaviť asynchrónny príjem s povolením detekcie adresy: 1. Inicializujte pár registrov SPBRGH, SPBRGL a bity BRGH a BRG16, aby ste dosiahli požadovanú prenosovú rýchlosť (pozri časť 26.3 „Generátor prenosovej rýchlosti EUSART (BRG)“). 2. Vymažte bit ANSEL pre pin RX (ak je k dispozícii). 3. Povolením sériového portu nastavte bit SPEN. Bit SYNC musí byť pri asynchrónnej prevádzke voľný. 4. Ak sú požadované prerušenia, nastavte bit RCIE registra PIE1 a bity GIE a PEIE registra INTCON. 5. Povoľte 9-bitový príjem nastavením bitu RX9. 6. Povoľte detekciu adries nastavením bitu ADDEN. 7. Povoľte príjem nastavením bitu CREN. 8. Príznakový bit prerušenia RCIF sa nastaví, keď sa znak s deviatou sadou bitov prenesie z RSR do prijímacej vyrovnávacej pamäte. Prerušenie sa vygeneruje, ak bol tiež nastavený bit aktivácie prerušenia RCIE. 9. Prečítajte si register RCSTA, aby ste dostali chybové hlásenia. Deviaty dátový bit bude nastavený vždy. 10. Získajte prijatých osem najmenej dôležitých dátových bitov z prijímacej vyrovnávacej pamäte načítaním registra RCREG. Softvér určí, či ide o adresu zariadenia. 11. Ak dôjde k prekročeniu, vymažte príznak OERR vymazaním aktivačného bitu prijímača CREN. 12. Ak bolo zariadenie adresované, vymažte bit ADDEN, aby ste povolili všetky prijaté dáta do prijímacej vyrovnávacej pamäte a vygenerovali prerušenia. 26.2 Presnosť hodín s asynchrónnym chodom Továreň kalibruje výstup interného bloku oscilátora (INTOSC). Frekvencia INTOSC sa však môže pohybovať ako VDD alebo zmeny teploty, čo má priamy vplyv na asynchrónnu prenosovú rýchlosť. Na nastavenie rýchlosti prenosovej rýchlosti je možné použiť dve metódy, obe však vyžadujú nejaký zdroj referenčných hodín. Prvá (preferovaná) metóda používa register OSCTUNE na úpravu výstupu INTOSC. Úprava hodnoty v registri OSCTUNE umožňuje jemné zmeny rozlíšenia zdroja systémových hodín. Ďalšie informácie nájdete v časti 5.2.2 „Interné zdroje hodín“. Druhá metóda upravuje hodnotu v generátore prenosovej rýchlosti. Toto je možné vykonať automaticky pomocou funkcie Auto-Baud Detect (pozrite časť 26.3.1 „Auto-Baud Detect“). Pri nastavovaní generátora prenosovej rýchlosti nemusí byť dosť jemné rozlíšenie na kompenzáciu postupnej zmeny frekvencie periférnych hodín.