16-bitový mikrokontrolér MC9S12NE64

Komentáře

Transkript

16-bitový mikrokontrolér MC9S12NE64
SEMESTRÁLNÍ PRÁCE Z 31SCS
16-bitový mikrokontrolér MC9S12NE64
Jakub Frolec
1. Úvod
Mikroprocesor MC9S12NE64 je pokročilý 16-bitový mikrokontroler vyráběný v 80 a 112 pinových plastových
SMD pouzdrech. Procesor patří do úspěšné řady mikrokontrolérů HCS12 firmy Freescale, jednoho z nástupců
polovodičové divize Motoroly. Tato řada obsahuje přes 20 různých mikrokontrolérů lišících se navzájem
vestavěnými periferiemi, pamětí a velikostí pouzder. Možné periferie mikrokontrolerů HCS12 zahrnují:
•
•
•
•
•
•
•
•
•
Paměť Flash
Paměť EEPROM
A/D či D/A převodníky
PWM modulátory
LCD drivery
USB 2.0 rozhraní
CAN rozhraní
10Mb/100Mb Ethernet
Sériová rozhraní (SPI, SCI, I2C)
Řada HCS12 vychází z předešlé řady M68HC12 a instrukční sada řady HCS12 je rozšířením instrukční sady
M68HC11. Zdrojový kód pro M68HC11 lze tedy beze změn přeložit i na novějších mikrokontrolérech řady
HCS12.
Mikrokontrolér MC9S12NE64 jsem pro tuto semestrální práci vybral z několika důvodů: Jako jediný zástupce 16bitových mikrokontolérů Freescale nabízí MC9S12NE64 ethernetové rozhraní. Navíc jsem s tímto procesorem
získal zkušenosti již v roce 2005, kdy jsem jako samostatnou práci v rámci předmětu 34MPC (Ing. Rozehnal)
navrhl, realizoval a odladil demonstrační jednotku schopnou komunikovat přes Ethernet.
1
Obr. 1: Přehled některých mikrokontrolérů řady HCS12. Zdroj: [1]
2. Základní vlastnosti mikrokontroléru MC9S12NE64
Mikrokontrolér MC9S12NE64 se vyznačuje zejména těmito parametry:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
CPU řady HCS12 (CPU12)
8 KB RAM
64 KB Flash
Multiplexní rozhraní pro připojení externí paměti
Ethernetové rozhraní
o MAC a PHY
o 100 Mb/s i 10 Mb/s
o Poloduplexní i plně duplexní provoz
o Autonegotiation
A/D převodník
o 10 bitů, 8 kanálů
2×SCI (standardní asynchronní sériové porty)
SPI
I2 C
16-bitový časovač
Ladicí rozhraní BDM
Generátor hodin a resetu s PLL
o Max. frekvence hodin 50 MHz
Napájení 3,3 V
o Vestavěný 2,5 V regulátor pro digitální část
Pouzdra:
o 80-pinové TQFP-EP
o 112-pinové LQFP
2
3. Blokové schéma mikrokontroléru a rozmístění vývodů
Blokové schéma mikrokontroléru MC9S12NE64 je na obr. 2. Můžeme zde rozeznat procesorové jádro CPU12 a
všechny periferie: RAM, Flash, regulátor napětí pro digitální část, generátor hodin a resetu, interface pro připojení
vnějších pamětí, A/D převodník, časovač, 2 sériové porty, SPI, I2C, blok Ethernetu – MAC i fyzické rozhraní,
modul pro ladění.
Obr. 2: Blokové schéma mikrokontroléru MC9S12NE64. Zdroj: [2]
3
Na obr. 3 a 4 vidíme rozmístění vývodů obou variant pouzdra – jak 112 pinového, tak 80 pinového s chladicí
ploškou. U 80 pinového pouzdra chybí zejména vývody rozhraní pro připojení vnějších pamětí, proto je možné
tuto verzi procesoru provozovat pouze s vnitřní pamětí.
Obr. 3: Rozložení vývodů – 112 pinové pouzdro. Zdroj: [2]
Obr. 4: Rozložení vývodů – 80 pinové pouzdro. Zdroj: [2]
4
4. Vlastnosti procesorového jádra CPU12
Procesorové jádro všech mikrokontrolerů řady HCS12 je stejné. Jedná se o plně 16-bitový procesor typu CISC
von Neumannovy architektury označovaný jako CPU12. Modul mapování pamětí umožňuje procesoru používat
virtuální adresní prostor velikosti 64 kB, do kterého může uživatel v určitých mezích libovolně mapovat blok
řídicích a I/O registrů, na čipu vestavěných pamětí RAM, Flash a EEPROM (EEPROM ovšem u MC9S12NE64
není implementována), jakož i externích pamětí. Část adresního prostoru může být stránkována, čímž vzroste
adresovatelná paměťová kapacita až na 1 MB.
4.1. Registry jádra
Přímo v jádře CPU12 se nacházejí následující uživatelsky přístupné registry: Dva 8-bitové akumulátory A a B,
které mohou být sloučeny do jednoho 16-bitového akumulátoru D, dále dva 16b indexové registry X, Y, ukazatel
zásobníku SP, ukazatel vykonávané instrukce PC (oba 16b) a stavový/řídicí registr CCR..
Obr. 5: Mapa registrů procesorového jádra. Zdroj: [2]
4.2. Instrukční sada
Jak již bylo zmíněno, jádro mikrokontroléru MC9S12NE64 je typu CISC, instrukční sada je tedy značně rozsáhlá.
K dispozici máme zejména instrukce pro:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Načtení dat z paměti do registrů jádra (LDAA, LDAB, LDS…)
Uložení dat z registrů do paměti (STAB, STX…)
Přesuny operandů mezi registry (TFR, TAB, TSX, EXG…)
Přesuny dat mezi místy v paměti (MOVB, MOVW)
Sčítání a odečítání (ADDA, ABA, SUBB, SBA, INC, DEC…)
Násobení a dělení (MUL, EMUL, FDIV, DIVS…)
Násobení s akumulací (EMACS)
Booleovské logické operace (ANDA, ORAB, EORA…)
Porovnávání a testování hodnoty (CMPA, TST, CPX…)
Nastavení, vymazání, negaci, doplněk (CLR, NEG, COM, CLRB…)
Posuv a rotaci (LSLA, LSR, ASLD, RORB…)
Bitovou manipulaci (BCLR, BSET…)
Určení minima a maxima (MIND, EMAXM…)
Práci se zásobníkem (PSHA, PULC, PSHX, PULY….)
Větvení, cykly a přerušení (BSR, CALL, JMP, JSR, RTC, IBEQ, DBNE, SWI, RTI…)
Implementaci fuzzy logiky (MEM, REVW, WAV…)
Tabulkovou interpolaci (TBL, ETBL)
5
Tyto instrukce jsou rozšířením instrukční sady starší řady mikrokontolérů M68HC11. Velká část instrukcí zabírá
pouze 1 až 2 B v paměti. Procesory CPU12 v řadě HCS12 využívají třístupňovou 16-bitovou instrukční frontu pro
rychlejší vykonávání programu.
4.3. Přerušení
Jádro CPU12 disponuje možností zpracovat až 128 zdrojů přerušení. Každému zdroji přerušení je přiřazen
16-bitový vektor přerušení. Zdroje přerušení bývají typicky jednotlivé periferie mikrokontroléru, jehož je CPU12
součástí. Jednotlivá přerušení se obvykle dají povolit nebo zakázat při konfigurování příslušné periferie. Globálně
pak lze zakázat/povolit všechna přerušení nastavením/vymazáním bitu I v CCR registru. Kromě hardwarových
přerušení lze vyvolat i sofrwarová přerušení instrukcí SWI nebo TRAP. Tabulka vektorů přerušení je pevně
umístěna v nejvyšších 256 B adresního prostoru, což defaultně odpovídá vestavěné paměti Flash popř. externí
paměti (samozřejmě je možné do tohoto umístění přemapovat i paměť RAM…).
5. Periferie v mikrokontroléru MC9S12NE64
Mikrokontroléry Freescale řady HCS12 obvykle mají na čipu integrovánu řadu periferií. Většina z nich
zprostředkovává nějaký druh vstupu či výstupu. Protože by bylo značně prostorově a finančně nehospodárné
vyhradit každému signálu každé periferie vlastní pin, jsou u mikrokontrolérů piny obvykle sdíleny mezi více
periferními zařízeními. Nejčastějším řešením přitom je, když funkce pinu alternuje mezi univerzálním digitálním
vstupem/výstupem a signálem některé specializované periferie (např. A/D převodníku, řadiče ethernetu apod.).
Vstup a výstup dat veškerých I/O periferií a jejich konfigurování se realizuje zápisy a čtením vyhrazených registrů
v bloku paměťově mapovaných registrů (ten je sám o sobě také vestavěnou periferií, spolu s pamětí RAM a
Flash).
5.1. Paměti
Mikrořadič MC9S12NE64 na čipu obsahuje kromě jiného několik bloků pamětí, které lze v jistých mezích
libovolně mapovat do virtuálního adresního prostoru. Jedná se o 8 KB 16-bitové datové paměti RAM, ze které je
možno stejně rychle číst slova začínající jak sudou, tak lichou adresou. RAM dovoluje samozřejmě i 8b přístup.
Dále nalezneme na čipu 64 KB 16-bitové paměti programu Flash. Paměť EEPROM obvyklou u některých
zástupců rodiny HCS12 mikrokontrolér MC9S12NE64 postrádá, ale část paměti Flash je možno programově
přepisovat za běhu, i když je jinak chráněna proti zápisu kódem. Takto lze chybějící EEPROM nahradit.
Posledním paměťovým zařízením je 1KB blok paměťově mapovaných registrů.
5.2. Univerzální I/O
Mikrokontroler MC9S12NE64 ve 112-pinovém pouzdře je vybaven celkem deseti 8-bitovými I/O porty (A, B, E,
G, H, J, K, L, S, T). Zápisy a čtení do těchto portů jsou realizovány jako zápisy a čtení do 8-bitových registrů
v bloku paměťově mapovaných registrů. Další sadou registrů je možno měnit směr přenosu dat u jednotlivých
pinů každého portu. U některých portů je možno aktivovat pull-up nebo pull-down rezistory na jednotlivých
pinech či měnit sílu buzení logických úrovní v režimu výstupu (opět pomocí speciálních paměťově mapovaných
registrů). Porty G, H a J mají také možnost reagovat na změnu úrovně na kterémkoli pinu vyvoláním přerušení.
Ačkoli veškeré řídicí a I/O registry portů jsou osmibitové, u některých portů jsou vyvedeny z prostorových
důvodů jen některé piny (viz obr. 6). Ještě horší je situace u 80-pinového pouzdra, kde např. porty A, B a K chybí
úplně.
5.3. Modul generování hodin a resetu
Mikrořadič NE64 obsahuje modul pro generování hodinového signálu a různých druhů resetu. Hodinový signál je
primárně vytvářen buďto Pierceovým nebo Colpittsovým krystalovým oscilátorem a může být násoben nebo
dělen fázovým závěsem PLL podle potřeby v širokém rozsahu. Obvod generování hodin hlídá kvalitu signálu
krystalového oscilátoru a v případě jejího výrazného poklesu generuje přerušení a začne vyrábět vlastní nouzový
hodinový signál nesynchronizovaný se signálem oscilátoru (vlastně se jedná o signál napětím řízeného oscilátoru
smyčky PLL, která vypadla ze synchronizace se signálem krystalového oscilátoru). Nejvyšší fekvence
6
krystalového oscilátoru je 25 MHz, nejvyšší výsledná hodinová frekvence jádra CPU12 po násobení PLL může
být 50 MHz.
Obvod generování resetu způsobuje reset mikrokontroléru po zapnutí, při příliš nízkém napájecím napětí a
obsluhuje externí reset. Jeho součástí je watchdog, který, je-li povolen, musí být programově „nulován“ během
zvoleného počtu cyklů, jinak dojde k resetu mikrokontroléru.
Obr. 6: Modul I/O portů (Port Integration Module) a sdílení jeho pinů s ostatními periferiemi. Zdroj: [2]
5.4. A/D převodník
Další zajímavou periferií mikrokontroléru MC9S12NE64 je integrovaný 10-bitový analogově-digitální převodník.
Převodník pracuje metodou postupné aproximace. Před S/H zesilovač převodníku je předřazen 8-kanálový
analogový multiplexer, díky němuž může modul převodníku provádět automatické sekvence měření na
jednotlivých kanálech. Konec měřicí sekvence může být oznámen vyvoláním přerušení. Převodník může pracovat
také v režimu nepřetržité sekvence A/D konverzí. Dále obvod poskytuje možnost nastavit dobu vzorkování
s ohledem na požadovanou rychlost a přesnost převodu. Pro 10-bitovou přesnost je doba jednoho převodu 7 µs.
Pro generování nízkého taktovacího kmitočtu převodníku z vysokého hodinového kmitočtu procesoru obsahuje
modul převodníku programovatelný předdělič. Kterýkoli z multiplexovaných analogových vstupů převodníku lze
nakonfigurovat jako externí spouštění převodu. Jednotlivé analogové vstupy převodníku lze také konfigurovat
jako další univerzální digitální vstupy a rozšířit tímto způsobem možnosti mikrokontroléru v případě, že A/D
převodník nehodláme využívat.
7
Obr. 7: Modul A/D převodníku. Vstupy ETRIG0 až ETRIG 3 nejsou u MC9S12NE64 vyvedeny. Zdroj: [2]
5.5. Modul programovatelného čítače/časovače
V řadiči NE64 je integrován také modul programovatelného čítače/časovače. Srdcem modulu je 16-bitový čítač
s programovatelným 7-bitovým předděličem systémových hodin. Pomocí 4 vstupů/výstupů opatřených
záchytnými/komparačními registry lze měřit časy příchodu externích událostí nebo naopak generovat výstupní
průběhy podle předem nastaveného časovacího schématu. Další součástí modulu je tzv. pulsní akumulátor. Opět
se jedná o 16-bitový čítač, který počítá vnější události (náběžné/sestupné hrany) na pinu TIM_IOC7. Modul
časovače může generovat několik různých přerušení, v závislosti na nastaveném provozním režimu. Pro
podrobnější informace odkazuji na [2].
5.6. Moduly sériových rozhraní
Mikrokontroléry řady HCS12 obvykle obsahují několik různých rozhraní pro sériovou komunikaci. Výjimkou
není ani typ NE64. Mezi jeho periferiemi nalezneme dva standardní plně duplexní asynchronní sériové porty
(označené zde jako SCI) a synchronní rozhraní SPI a I2C.
Asynchronní porty SCI komunikují pomocí pinů RxD a TxD. Formát dat se neliší od formátu dat ve
stejnojmenných vodičích sériového rozhraní počítačů PC (RS232). Po patřičné konverzi napěťových úrovní jsou
porty SCI přímo propojitelné se sériovým portem PC. Modul SCI obsahuje programovatelný dělič pro odvození
přenosové rychlosti, přičemž maximum je 38 400 Bd. Je možno zapnout paritní bit popř. změnit formát
výstupních impulsů, aby vyhovoval pro buzení infračervené LED (protokol IrDA). Modul SCI opět generuje řadu
přerušení, které dovolují událostmi buzené programování obsluhy tohoto rozhraní.
Synchronní sériová rozhraní SPI a I2C slouží k připojení celé řady vnějších periferií – pamětí EEPROM, fázových
závěsů, audio procesorů atd. Pro možnosti jejich nastavení odkazuji opět na [2], princip funkce a příklady obvodů
osazených těmito rozhraními lze nalézt na Internetu.
8
5.7. Ethernet – modul MAC a modul fyzického rozhraní
Nejneobvyklejší periférií mikrokontroléru MC9S12NE64 je bezesporu ethernetové rozhraní. Na čipu se skládá ze
dvou samostatných modulů – Media Acces Controlleru (MAC) a fyzické vrstvy (PHY). Přitažlivost
mikrokontroléru NE64 spočívá právě v přítomnosti obou částí rozhraní (zatímco jiné obvody mívají nezřídka na
čipu pouze MAC). Díky tomu je připojení tohoto mikrořadiče k síti velmi jednoduché a není třeba mnoho
vnějších součástek. Stačí ethernetový transformátor, několik málo rezistorů a kondenzátorů. Použité řešení
umožňuje dosáhnout všech vlastností běžné síťové karty pro PC:
•
•
•
•
•
•
•
Plně duplexní/poloduplexní provoz
10/100 Mbit/s
Autonegotiation
Programově volitelná MAC adresa
Přijímá jak unicast, tak broadcast a multicast pakety
Lze přepnout do promiskuitního módu
Loopback mód
Fyzická část rozhraní disponuje adaptivní ekvalizací, korekcí driftu nuly a dalšími vlastnostmi nezbytnými pro
efektivní provoz v ethernetové síti s přenosovou rychlostí 100 Mb/s.
Část MAC je zodpovědná za zaobalení vysílaných dat do ethernetových záhlaví a zápatí a předání fyzické části.
Podobně přijatá data jsou kontrolována a ethernetová záhlaví zahozena. Aby se zabránilo ztrátě dat při příjmu,
používá MAC střídavě dva buffery alokované v paměti RAM. V jednom se data zpracovávají programem, do
druhého jsou zároveň data přijímána. Vysílací buffer se taktéž nachází v paměti RAM, ale je pouze jeden. Každý
z těchto tří bufferů může být dlouhý max. 1,5 KB. Dohromady je to 4,5 KB, což je více než polovina systémové
paměti. Z tohoto nepříliš příznivého poměru lze usoudit, že mikrokontrolér NE64 se příliš nehodí pro rychlé a
paměťově náročné datové přenosy, avšak pro přenos krátkých oddělených dat zcela vyhoví.
Obr. 8: Ethernetové rozhraní – modul MAC. Zdroj: [2]
Fyzická část (PHY) rozděluje, kóduje a moduluje ethernetové rámce získané z MAC a pomocí budičů je odesílá
přes externí signálový transformátor do ethernetové sítě. Podobně na příjmu demoduluje, rekonstruuje a dekóduje
data a předává je jednotce MAC. Fyzická část ethernetového rozhraní také ovládá diody LED indikující stav
spojení – rychlost (10/100 Mb/s), duplex, aktivitu linky a kolize. Součásti MAC a PHY spolu komunikují po
9
standardizované sběrnici MII. Ta je u mikrokontroléru NE64 vyvedena a je tedy možno ke kontroléru připojit až
32 externích jednotek PHY, pokud by vestavěná PHY z nějakého důvodu v dané aplikaci nevyhovovala.
Obr. 9: Ethernetové rozhraní – modul PHY (fyzická část). Zdroj: [2]
6. Vývojový SW a HW
Pravděpodobně nejvýkonnější (a nejdražší) vývojovou platformou pro práci s mikrokontroléry Freescale obecně
je spojení software Code Warrior vyvíjeného přímo firmou Freescale (viz [4]) a hardwarového
programátoru/debuggeru Cyclone Pro od firmy P&E Micro (viz [5]). Programátor se připojuje k počítači USB
kabelem nebo přes Ethernet a k programovanému procesoru pomocí čtyřvodičového debugovacího rozhraní BDM
používaného proprietárně firmou Freescale. Cyclone Pro mimo jiné umožňuje uchovat programovaný firmware ve
své vnitřní paměti a poté programovat další mikrokontroléry již bez nutnosti připojení k počítači.
Obr. 10: Programátor a debugger Cyclone Pro. Zdroj: [5]
10
7. Realizovaný přípravek s mikrokontrolérem MC9S12NE64
S popisovaným mikrokontrolérem jsem v roce 2005 realizoval v rámci předmětu 34MPC demonstrační přípravek,
který měl být využit při výuce navazujícího předmětu (k tomu ovšem nedošlo, Ing. Rozehnal, který vyučoval
34MPC a který měl vyučovat i zamýšlený návazný předmět, z FEL odešel). Provedl jsem návrh schematu podle
specifikace, návrh desky plošného spoje, osazení, oživení, nutné úpravy volně šiřitelných TCP/IP driverů pro
tento mikrokontrolér a připsal jsem kód pro ovládání jednotky přes sériový port a pro posílání ukázkových dat
pomocí UDP protokolu. Fotografie hotové desky jsou na obr. 11 a 12, schéma na obr. 13.
Obr. 11: Osazená deska demonstračního přípravku s mikrokontrolérem MC9S12NE64
Obr. 12: Osazená deska přípravku – detail mikrokontroléru
11
Obr. 13: Schéma zapojení demonstračního přípravku s mikrokontrolérem MC9S12NE64
12
8. Závěr
V této práci jsem se pokusil shrnout něktré vlastnosti mikrokontroléru MC9S12NE64 vyráběného firmou
Freescale, který považuji za zajímavý obzvláště díky možnosti jednoduše dosáhnout propojení do sítě ethernet a
tím de facto ovládat zařízení tímto obvodem vybavené na dálku z celého světa. Mikrokontrolér se může uplatnit
v zařízeních inteligentního dálkového sběru a zpracování dat, centralizovaného řízení vzdálených procesů bez
nutnosti budovat speciální síťovou infrastrukturu a podobně. Motivem mého rozhodnutí byly také zkušenosti,
které jsem s tímto mikrokontrolérem na FEL získal pod vedením dnes již bývalého asistenta Katedry
mikroelektroniky Ing. Rozehnala.
Použitá literatura
[1] http://www.freescale.com/files/archives/doc/roadmap/16BITMCURD.pdf
[2] http://www.freescale.com/files/microcontrollers/doc/data_sheet/MC9S12NE64V1.pdf
[3] http://www.freescale.com/files/microcontrollers/doc/ref_manual/S12CPUV2.pdf
[4] http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=CWS-H12-STDED-CX
[5] http://www.pemicro.com/products/product_viewDetails.cfm?product_id=1&CFID=926629&CFTOKEN=14672049
13

Podobné dokumenty

platných sazeb

platných sazeb 47 kg C4-90/H Ø 900 mm 75 kg hladící talíř pr. 600mm pro zavlhlé betonové plochy hladící talíř pr. 900mm pro zavlhlé betonové plochy při zápůjčce kratší 15 dní účtováno očištění stroje

Více

MIKROPOČÍTAČE

MIKROPOČÍTAČE 6.2.1 Příkazy pro změnu stavu úloh .................................................................................... 3

Více

Niečo je zhnité v štáte dánskom 1

Niečo je zhnité v štáte dánskom 1 Model sociálnej siete je určený len na znázornenie vzťahov, nie je to vedecký dôkaz o kvalite alebo nekvalite štúdií. Z dostupných informácií vyplýva, že dánske štúdie, hoci boli publikované v rôzn...

Více

satelitski snimci

satelitski snimci jen jednu souèástku - trimr nebo cívku. Pokud budete mít ve svých zásobách krystal, který nebude odpírat kmitat v zapojení podle aplikaèního listu, mùžete oscilátor s T2 nezapojit a použít pùvodní ...

Více

Aerometrický systém

Aerometrický systém stejná i při faktu, že se letadla ve vyšších výškách musejí pohybovat rychleji vůči zemskému povrchu, protože s výškou klesá hustota vzduchu. Důležitost přesnosti měřených veličin navíc

Více

Recenze hifi jsou postaveny vždy na chatrných základech

Recenze hifi jsou postaveny vždy na chatrných základech Mohli bychom například říci, že maximální rozdíly (a to spíše přeháním) mezi kabely se jen blíží rozdílu, když komponentům předřadíme kvalitní síťový filtr. Onen rozdíl může dosahovat velikosti sly...

Více

VŠB - Technická univerzita Ostrava

VŠB - Technická univerzita Ostrava 8kanálovými 10 bitovými AD převodníky, 8 kanálovým generátorem PWM a rozhraním CAN 2.0. Procesory mají vestavěný tzv. SIM (System Integration Module), který se stará o mapování prostředkŧ, generová...

Více

Perspectives of Using Motorola 8-bit Microcontrollers for

Perspectives of Using Motorola 8-bit Microcontrollers for instrukcí. Novinkou je implementace FLASH paměti o kapacitě až 60KB, která podporuje programování přímo v aplikaci (nemusíme tedy používat speciální jednoúčelové programátory) a podstatně tím zkrac...

Více