ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVY´CH SYSTE´MU ˚ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
´ LNI´ VY´VOJOVA ´ DESKA PRO UNIVERZA ˇ ADY PIC18F MIKROKONTROLERY R
´ PRA´CE DIPLOMOVA MASTER’S THESIS
AUTOR PRA´CE AUTHOR
BRNO 2009
Bc. DAVID JEZˇ
ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVY´CH SYSTE´MU ˚ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
´ LNI´ VY´VOJOVA ´ DESKA PRO UNIVERZA ˇ ADY PIC18F MIKROKONTROLERY R UNIVERSAL DEVELOPMENT BOARD FOR PIC18F MICROCONTROLLER FAMILY
´ PRA´CE DIPLOMOVA MASTER’S THESIS
AUTOR PRA´CE
Bc. DAVID JEZˇ
AUTHOR
VEDOUCI´ PRA´CE SUPERVISOR
BRNO 2009
´ CLAV SˇIMEK Ing. VA
Abstrakt Tato práce popisuje návrh univerzální vývojové desky pro různé typy mikrokontrolérů a jednotného rozhraní pro modul mikrokontroléru k desce. Věnuje se jak popisu rozhraní a návrhu, tak také přehledu mikrokontrolérů Microchip PIC, použitelných s vývojovou deskou a vlastnostem typu PIC 18F4550. Práce dále zmiňuje podobné typy ostatních výrobců. Práce uvádí návrh vývojové desky a jejích komponent od blokového schéma přes schéma zapojení až k návrhu desek plošných spojů a vytvoření 3D modelů desek.
Abstract My work describes design of the universal development board usefull with a various types of microcontrollers and the unified interfaces for the microcontroller’s module board. It introduce the design and the interface and list of the Microchip PIC microcontrollers which can be used with development board. It also describes the features of the PIC 18F4550 microcontroller and means about an different types of anothers manufactures. There is also describe of the design, creating the schemes of the boards, printed circuit boards and 3D visualization models in my work.
Klíčová slova vývojová deska, mikrokontroléry Microchip PIC18F, PIC18F4550
Keywords evelopment board, Microchip PIC18F microcontrollers, PIC18F4550
Citace David Jež: Univerzální vývojová deska pro mikrokontrolery řady Pic18F, diplomová práce, Brno, FIT VUT v Brně, 2009
Univerzální vývojová deska pro mikrokontrolery řady Pic18F Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Václava Šimka. ....................... David Jež 2. června 2009
Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce, panu Ing. Václavovi Šimkovi, za odborné rady, vedení a ochotnou pomoc př vzniku této práce. Dále svému otci, Ing. Milanu Ježovi, za pomoc s jazykovou úpravou.
c David Jež, 2009.
Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
Zadání diplomové práce/5879/2008/xjezda00
Vysoké učení technické v Brně – Fakulta informačních technologií Ústav počítačových systémů
Akademický rok 2008/2009
Zadání diplomové práce Řešitel: Obor: Téma: Kategorie:
Jež David, Bc. Počítačové systémy a sítě Univerzální vývojová deska pro mikrokontrolery řady Pic18F Počítačová architektura
Pokyny: 1. Prostudujte dokumentaci k řadě mikrokontrolerů Pic18F. Zaměřte se především na typ Pic18F4550. 2. Seznamte se s problematikou návrhu desek plošných spojů. 3. Vytvořte blokové schéma univerzální vývojové desky a výměnného procesorového modulu s jednotným rozhraním. 4. Konzultujte s vedoucím výběr vhodných komponent a sadu periferií, které budou na vývojové desce implementovány. 5. V programu Eagle nebo KiCAD navrhněte schéma zapojení a posléze vytvořte desku plošných spojů. 6. Demonstrujte funkčnost navržené vývojové desky na vzorové aplikaci. Literatura: • Dle pokynů vedoucího. Při obhajobě semestrální části diplomového projektu je požadováno: • Splnění bodů 1 – 4 zadání.
Podrobné závazné pokyny pro vypracování diplomové práce naleznete na adrese http://www.fit.vutbr.cz/info/szz/ Technická zpráva diplomové práce musí obsahovat formulaci cíle, charakteristiku současného stavu, teoretická a odborná východiska řešených problémů a specifikaci etap, které byly vyřešeny v rámci ročníkového a semestrálního projektu (30 až 40 % celkového rozsahu technické zprávy). Student odevzdá v jednom výtisku technickou zprávu a v elektronické podobě zdrojový text technické zprávy, úplnou programovou dokumentaci a zdrojové texty programů. Informace v elektronické podobě budou uloženy na standardním nepřepisovatelném paměťovém médiu (CD-R, DVD-R, apod.), které bude vloženo do písemné zprávy tak, aby nemohlo dojít k jeho ztrátě při běžné manipulaci.
Vedoucí: Datum zadání: Datum odevzdání:
Šimek Václav, Ing., UPSY FIT VUT 22. září 2008 26. května 2009
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií Ústav počítačových systémů a sítí 612 66 Brno, Božetěchova 2
doc. Ing. Zdeněk Kotásek, CSc. vedoucí ústavu
Obsah 1 Úvod
5
2 Přehled typových řad mikrokontrolérů 2.1 Mikrokontroléry firmy Microchip . . . . . . . . 2.2 Mikrokontroléry Microchip PIC18F . . . . . . . 2.3 Mikrokontrolér Microchip PIC18F4550 . . . . . 2.4 Prostředky pro vývoj, simulaci a programování 2.5 Ostatní mikrokontroléry . . . . . . . . . . . . . 2.5.1 Microchip . . . . . . . . . . . . . . . . . 2.5.2 Atmel . . . . . . . . . . . . . . . . . . . 2.5.3 Freescale . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
7 7 8 9 11 12 12 13 13
3 Popis univerzální vývojové desky a jejích komponent 3.1 Celkový pohled na univerzální vývojovou desku . . . . . 3.2 Návrh modulu mikrokontroléru . . . . . . . . . . . . . . 3.3 Návrh základní desky . . . . . . . . . . . . . . . . . . . 3.3.1 LCD display . . . . . . . . . . . . . . . . . . . . 3.3.2 Maticová klávesnice . . . . . . . . . . . . . . . . 3.3.3 PS/2 rozhraní . . . . . . . . . . . . . . . . . . . . 3.3.4 SPI – Ethernet kontrolér Microchip ENC28J60 . 3.3.5 Zvukové rozhraní . . . . . . . . . . . . . . . . . . 3.3.6 Rozšiřující konektor . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
15 15 16 19 21 22 23 24 25 27
. . . . . . . . . . . . . .
29 29 29 30 31 31 31 31 32 33 33 33 34 35 36
4 Návrh zapojení vývojové desky 4.1 Návrh elektrotechnických schémat . . . . . . . 4.2 Návrh základní desky . . . . . . . . . . . . . . 4.2.1 Zdrojová část . . . . . . . . . . . . . . . 4.2.2 USB rozhraní . . . . . . . . . . . . . . . 4.2.3 Konektor pro maticovou klávesnici . . . 4.2.4 Konektor rozhraní PS/2 . . . . . . . . . 4.2.5 Konektor pro znakový LCD display . . 4.2.6 Ethernetové rozhraní . . . . . . . . . . . 4.2.7 Sériové rozhraní RS-232 . . . . . . . . . 4.2.8 Oddělení sběrnic s úrovněmi 5 V a 3,3 V 4.2.9 Slot pro MMC/SD kartu . . . . . . . . . 4.2.10 SPI – Ethernet kontrolér ENC28J60 . . 4.2.11 Zvukový kodek WM8731 . . . . . . . . 4.2.12 Propojovací konektory . . . . . . . . . . 1
. . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
4.3
Návrh modulu mikrokontroléru . . . . . . . . . . . . . . . . . . . . . . . . .
37
5 Závěr
38
A Obsah přiloženého CD
40
B Schéma základní desky
41
C DPS základní desky
45
D Rozmístění součástek na DPS základní desky
48
E Soupis součástek pro základní desku
49
F Schéma modulu mikrokontroléru PIC18F4550
52
G DPS modulu mikrokontroléru
54
H Rozmístění součástek na DPS modulu mikrokontroléru
56
I
58
Soupis součástek pro modul mikrokontroléru
J 3D modely osazených DPS
59
K LCD display a maticová klávesnice
61
2
Seznam obrázků 2.1 2.2
Zapojení vývodů mikrokontroléru PIC 18F4550 . . . . . . . . . . . . . . . . Vnitřní architektura mikrokontroléru PIC 18F4550 . . . . . . . . . . . . . .
9 14
3.1 3.2 3.3 3.4 3.5
Systém univerzální vývojové desky . . . . . Blokové schéma modulu mikrokontroléru . . Blokové schéma základní desky . . . . . . . Blokový diagram Ethernet kontroléru . . . . Blokové schéma zvukového kodeku WM8731
. . . . .
15 17 20 24 26
4.1
Typické zapojení kontroléru ENC28J60
. . . . . . . . . . . . . . . . . . . .
34
B.1 Schéma základní desky – zdroj, 5 V větev, I/O konektory . . . . . . . . . . B.2 Schéma základní desky – 3,3 V větev, SPI rozhraní . . . . . . . . . . . . . . B.3 Schéma základní desky – sběrnice, audio rozhraní . . . . . . . . . . . . . . .
42 43 44
C.1 DPS základní desky – strana součástek . . . . . . . . . . . . . . . . . . . . . C.2 DPS základní desky – strana spojů . . . . . . . . . . . . . . . . . . . . . . .
46 47
D.1 Rozmístění součástek na DPS základní desky . . . . . . . . . . . . . . . . .
48
F.1 Schéma modulu mikrokontroléru PIC18F4550 . . . . . . . . . . . . . . . . .
53
G.1 DPS modulu mikrokontroléru – strana součástek . . . . . . . . . . . . . . . G.2 DPS modulu mikrokontroléru – strana spojů . . . . . . . . . . . . . . . . .
54 55
H.1 Rozmístění součástek na DPS modulu mikrokontroléru – strana součástek . H.2 Rozmístění součástek na DPS modulu mikrokontroléru – strana spojů . . .
56 57
J.1 J.2
3D model základní desky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3D model modulu mikrokontroléru PIC18F4550 . . . . . . . . . . . . . . . .
59 60
K.1 Provedení LCD displaye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.2 Provedení maticové klávesnice . . . . . . . . . . . . . . . . . . . . . . . . . .
61 62
3
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Seznam tabulek 2.1
Rodina mikrokontrolérů PIC 18F2455/2550/4455/4550 . . . . . . . . . . . .
9
3.1
Zapojení vývodů stereo konektoru jack 3,5mm stereo . . . . . . . . . . . . .
27
4
Kapitola 1
Úvod
Ve své diplomové práci popisuji návrh univerzální vývojové desky pro mikrokontroléry. Univerzální proto, neboť je navržena tak, aby umožnila použití širokého spektra konkrétních typů mikrokontrolérů od různých výrobců v jediném univerzálním vývojovém systému. Tím se významně liší od standardně používaných vývojových desek různých výrobců, které bývají zaměřeny pouze na jednotlivé konkrétní typy jediného výrobce, případně vzájemně ekvivalentních mikrokontrolérů stejného typu. Tyto vývojové desky potom tvoří pokaždé unikátní systém s vlastní zvolenou sadu periférií. Naproti tomu můj návrh používá princip jednotné základní desky osazené napájením, perifériemi a rozhraním pro případné rozšiřování, společné pro všechny typy mikrokontrolérů a modulu mikrokontroléru, což je adaptér pro připojení různých typů mikrokontrolérů k základní desce. Univerzální vývojová deska je tedy tvořena oběma částmi. Díky tomu je potom možno např. zkoušet obsluhu stejných periférií na různých typech z odlišných rodin mikrokontrolérů, případně navrhovat vestavěné systémy pro optimální součástku. Změna konkrétního typu mikrokontroléru v tomto případě znamená pouze vytvořit nový modul (nebo upravit modul pro nejvíce podobný typ,) což tvoří jen malou část návrhu. Není tedy nutno pro každý nový typ navrhovat od základů novou vývojovou desku, což šetří jak čas, tak náklady potřebné pro vývoj. Univerzální vývojovou desku jsem nezaměřil pouze pro mikrokontroléry PIC od firmy Microchip, o nichž píši ve své práci, ale také pro součástky ostatních výrobců. Nicméně právě pro vývoj zařízení s mikrokontroléry typu PIC je má deska zvlášť výhodná z toho důvodu. Firma Microchip vyrábí mnoho různých typů mikrokontrolérů a při vývoji aplikace za použití mnou navržené desky je možno zkoušet právě nejvhodnější typ pro vyvíjenou aplikaci. Není tedy nutno setrvávat u jakéhokoliv staršího, případně pro zvolenou aplikaci 5
zbytečně univerzálního (a v mnoha případech také dražšího) typu součástky pouze z důvodu vlastnictví jediného vývojového systému. Práci jsem rozdělil do více kapitol. V kapitole 2 se věnuji přehledu typů mikrokontrolérů. Popisuji zde typové řady mikrokontrolérů PIC od firmy Microchip, konkrétněji se věnuji řadě PIC18F a zejména vlastnostem typu PIC18F4550. Dále píši o podobných (co se použití týče) typech ostatních firem. Též zde zmiňuji problém vývojového prostředí a demonstračních aplikací. Kapitola 3 popisuje problematiku návrhu univerzální vývojové desky jako celku, modularizaci a popisuje dílčí komponenty. Píši v ní též o problémech a omezeních, které bylo třeba při navrhování obou částí brát v úvahu. V kapitole 4 popisuji detailně fáze návrhu zapojení základní desky a modulu pro mikrokontrolér PIC18F4550, princip činnosti dílčích bloků, účel jednotlivých součástek a odvolávám se zde na schémata, která uvádím v přílohách. V závěru (kapitola 5) shrnuji dosažený stav návrhu, vyřešené body, a věnuji se prostoru pro další vývoj a možná vylepšení svého vývojového systému. Do příloh jsem zařadil schémata zapojení obou částí univerzální vývojové desky, obrazy jednotlivých stran desek plošných spojů, osazovací plány, seznam součástek a konečně také 3D modely základní desky a modulu pro mikrokontrolér PIC18F4550. Při řešení své diplomové práce jsem kromě použitých pramenů, uvedených v seznamu literatury, čerpal také ze svých zkušeností s nejjednoduššími mikrokontroléry PIC, získané při řešení bakalářské práce. Diplomová práce tak pro mě byla jejím velice volným pokračováním. Naproti tomu diplomová práce přímo navazuje na semestrální projekt, ze kterého vychází. V semestrální části jsem se věnoval výběru komponent a použitých periferií, uvedl problémy, které bude třeba řešit a navrhl bloková schémata výsledného systému. Tato část je využita v kapitolách 2, 3 a tyto kapitoly jsou navíc o proti semestrální části (v případě kapitoly 3 podstatně) rozšířeny. Následující kapitoly již vznikly při realizaci blokových schémat a následném návrhu zapojení v letním semestru.
6
Kapitola 2
Přehled typových řad mikrokontrolérů 2.1
Mikrokontroléry firmy Microchip
Mikrokontroléry PIC (Peripheral Interface Controller) jsou určeny jako obecné řídicí součástky a bývají používané pro svou jednoduchost i cenu v řadě zapojení. Můžeme mezi nimi najít jak klasické“ typy, jejichž jádro je tvořeno univerzálním procesorem typu ” RISC s harvardskou architekturou paměti doplněné vstupně výstupními porty a rozšiřujícími komponenty, které jsou v tomto přehledu historicky nejstaršími. Dále sem patří také typy, jejichž jádro je tvořeno procesorem typu DSP, a v neposlední řadě též typy s třicetidvoubitovým procesorem MIPS, který je použit v jejich jádru. Existuje spousta různých variant, přehled všech typů je možno najít na stránkách výrobce [2], od základních až po nejsložitější řadu. Jednotlivé řady je možno rozdělit do tří základních skupin: osmibitové • PIC10 • PIC12 • PIC16 • PIC18 šestnáctibitové • PIC24F • PIC24H • dsPIC30 • dsPIC33 třicetidvoubitové • PIC32
7
Typovou řadu PIC10 výrobce označuje jako základní, neboli Baseline. Jejími zástupci jsou nejmenší součástky s šesti nebo osmi vývody, které jsou vybaveny pouze základními I/O piny, pamětí do kapacity 64 B, jedním osmibitovým časovačem a maximálně dvěma A/D vstupy. Taktovací frekvence se typicky pohybuje do 4 MHz. Tato řada používá dvanáctibitové instrukce. Mezi součástkami PIC12 a PIC16 se již nacházejí zástupci pokročilé řady, označované jako Mid-Range. Typy této řady používají čtrnáctibitové instrukce, vyznačují se větší kapacitou pamětí programu i paměti RAM (až 368 B.) Také jsou vybaveny více typy rozhraní (jako jsou např. USART, SPI, I2 C), šestnáctibitovými časovači a rovněž mohou obsahovat další paměť typu EEPROM, označovanou jako DATA EEPROM. Tato paměť je přepisovatelná za běhu programu bez nutnosti externího programátoru, může být použita např. pro ukládání inicializačních parametrů, konstant či kratších tabulek. Tyto typy se vyskytují v pouzdrech od osmi do šestnácti vývodů. Typová řada PIC18 je nejvyšší řadou mezi osmibitovými mikrokontroléry. Protože jejím zástupcem je i dále popisovaný typ PIC18F4550, bude popsána podrobněji. Šestnáctibitová rodina obsahuje jak klasické mikrokontroléry, tak také typy s DSP jádrem. Dosahuje výpočetního výkonu až 40 MIPS, použitá pouzdra mají od 18 do 100 vývodů. Mezi další rozhraní patří sběrnice CAN a USB, v této řadě již existují i typy, obsahující USB HCI. Nové jsou zde též třicetidvoubitové časovače a třináctibitové A/D převodníky. Tato rodina dále umožňuje použít DMA řadič. Třicetidvoubitové typy jsou nejvyšší řadou mikrokontrolérů PIC, jsou založeny na jádře procesoru typu MIPS32, konkrétněji typu M4K. Paměť programu mívá kapacitu až 512 KB, paměť RAM potom až 32 KB. Pro zmíněné jádro existují třicetidvoubitové systémy, případně real-time operační systémy. Pouzdra mají od 64 do 100 vývodů.
2.2
Mikrokontroléry Microchip PIC18F
Popisované typy, jak jsem již uvedl, představují nejvyšší typovou řadu osmibitových mikrokontrolérů. Mohou dosahovat výpočetního výkonu až 16 MIPS při taktu 64 MHz. Tato řada používá šestnácti bitové instrukce, oproti starším řadám jsou vybaveny instrukcemi optimalizovanými pro jazyk C. Mezi další vlastnosti typů z řady PIC18F patří: • napájecí napětí v rozmezí 1.8 V – 5.5 V • V dostupné v pouzdrech od 18 do 100 vývodů • paměť programu o kapacitě až 128 KB, přímo přepisovatelná z aplikace • paměť RAM o kapacitě až 3 936 B • paměť EEPROM o kapacitě až 1 024 B • rozhraní IEEE 802.3 • rozhraní USB 2.0
8
RC6/TX/CK RC5/D+/VP RC4/D−/VM RD3/SPP3 RD2/SPP2 RD1/SPP1 RD0/SPP0 VUSB RC2/CCP1/P1A RC1/T1OSI/CCP 2(1)/UOE NC/ICPORTS(2) 44 43 42 41 40 39 38 37 36 35 34
44−Pin TQFP
PIC18F4455 PIC18F4550
33 32 31 30 29 28 27 26 25 24 23
12 13 14 15 16 17 18 19 20 21 22
1 2 3 4 5 6 7 8 9 10 11
NC/ICRST(2)/ICVPP(2) RC0/T1OSO/T13CKI OSC2/CLKO/RA6 OSC1/CLKI VSS VDD RE2/AN7/OESPP RE1/AN6/CK2SPP RE0/AN5/CK1SPP RA5/AN4/SS/HLVDIN/C2OUT RA4/T0CKI/C1OUT/RCV
NC/ICCK(2)/ICPGC(2) (2)/ICPGD(2) NC/ICDT RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD MCLR/VPP/RE3 RA0/AN0 RA1/AN1 RA2/AN2/VREF−/CVREF RA3/AN3/VREF+
RC7/RX/DT/SDO RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D VSS VDD RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2(1)/VPO
Obrázek 2.1: Zapojení vývodů mikrokontroléru PIC 18F4550
2.3
Mikrokontrolér Microchip PIC18F4550
Mikrokontrolér patří do nejvyšší osmibitové typové řady PIC18F, konkrétně do rodiny kompatibilních procesorů 18F2455/2550/4455/4550, jejichž rozdíly jsou shrnuty tabulka 2.1. Používá architekturu paměti podle harvardské koncepce, tedy oddělenou programovou a datovou paměť. Pro uložení konstant, případně různých parametrů, obsahuje též další paměť typu EEPROM, která je uživatelsky přístupná z programu.
model PIC18F2455 PIC18F2550 PIC18F4455 PIC18F4550
paměť programu flash instrukcí 24 K 12 288 32 K 16 384 24 K 12 288 32 K 16 384
paměť dat SRAM EEPROM 2 048 256 2 048 256 2 048 256 2 048 256
I/O 24 24 35 35
A/D 10 10 13 13
PWM 2/0 2/0 1/1 1/1
SPP NE NE ANO ANO
Tabulka 2.1: Rodina mikrokontrolérů PIC 18F2455/2550/4455/4550 Pro demonstraci ve vývojové desce je popisovaný mikrokontrolér zajímavý zejména svými perifériemi, mimo jiné množstvím I/O portů pro obecné použití, sériovými sběrnicemi I2 C a UART, A/D převodníky a v neposlední řadě zvláště sběrnicí USB ve specifikaci 2.0. 9
Pracuje s napájecím napětím 4,2 V – 5,5 V ve standardní variantě, případně 2,7 V – 3,3 V ve verzi LF. Existuje jak varianta ve čtyřiceti vývodovém pouzdře PDIP, vhodném pro zapojení na nepájivém poli nebo v DPS nižších konstrukčních tříd, tak také varianta v pouzdře TQFP 44 typu SMD (určená pro povrchovou montáž,) která bude použita v navrhované desce. Zapojení vývodů je na obrázku 2.1. Kompletní popis vývodů a vlastností mikrokontroléru je uveden v jeho katalogovém listu [4]. Vnitřní architektura podle katalogového listu je vidět na obrázku 2.2. Mikrokontrolér umožňuje kromě ICSP programování také modifikaci vlastní paměti programu, čehož je možné využít kromě drobných změn v konstantách apod. též k aktualizaci celého programu mikrokontroléru. V tomto případě stačí pomocí ICSP do paměti programu uložit malou část kódu, tzv. bootloader, který je potom schopen např. po sériové lince, případně USB, modifikovat zbývající část paměti programu. Protože modul mikrokontroléru PIC18F4550 k navržené univerzální vývojové desce obsahuje ICSP konektor a samotná vývojová deska jak standardní sériové rozhraní RS-232, tak rozhraní USB, je možno pro změny paměti programu použít kterýkoliv ze způsobů programování. Mezi jeho základní vlastnosti dále patří • režimy napájení a šetřící režimy Run běží CPU i periférie Idle procesor je odpojen Sleep procesor i periférie jsou odpojeny • taktování a generování pracovního kmitočtu – 12 režimů oscilátoru, zahrnujících – 4 režimy s použitím krystalu – 4 režimy pro externí zdroj hodin – interní zdroj hodin pro takt od 125 kHz po 4 MHz – fázový závěs pro použití s externím krystalem nebo zdrojem hodin pro takt 4 MHz – 48 MHz (v taktu 48 MHz mikrokontrolér dosahuje výpočetního výkonu 12 MIPS) – nezávislé taktování, kdy pro USB je použit externí krystal, ostatní periférie a jádro jsou taktované interním oscilátorem • periférie – 5 I/O portů, označovaných jako A – E – 3 externí přerušení – 1 osmibitový a 3 šestnáctibitové časovače – stream paralelní port – rozšířená USART sběrnice – sériový port s podporou SPI a I2 C – 13 desetibitových A/D převodníků – analogové komparátory – jednotka CCP/ECCP/PWM 10
• sběrnice USB – USB verze 2.0 – podpora rychlostí přenosu Low Speed (1,5 Mbit/s) a High Speed (12 Mbit/s) – umožňuje režimy přenosu Control, Interrupt, Isochronous a Bulk – podporuje až 32 koncových bodů (případně 16 obousměrných) – 1 KB RAM pro USB, do které může přistupovat jak procesor, tak také USB řadič – obsahuje USB interface, ale umožňuje použít též externí interface – umožňuje stream přenosy pro paralelní port
2.4
Prostředky pro vývoj, simulaci a programování
K mikrokontrolérům PIC je možno stáhnout z domovských stránek výrobce prostředí pro vývoj, simulaci a programování jménem MPLAB IDE. V tomto vývojovém prostředí je překladač jazyka assembler a linker; překladač pro jazyk C se musí v případě osmibitových typů koupit samostatně, případně použít překladač od jiného dodavatele. Pro šestnácti a třicetidvoubitové typy je již možno stáhnout volně šiřitelný překladač na bázi překladače GNU C Compiler. Další možnou alternativu k překladači jazyka C pro osmibitové typy představují komerční kompilátory firmy HI-TECH Software http://www.htsoft.com Výrobce též umožňuje stáhnout studentskou verzi překladače. Z volně šiřitelných překladačů je možno použít překladač sdcc (domovské stránky na adrese http://sdcc.sourceforge.net který je šířen pod licencí GPL a mimo jiné funguje na platformách Windows, Linux i Mac OS. Kromě mikrokontrolérů Microchip PIC dále podporuje také široce používanou architekturu MCS51 firmy Intel, používanou mnoha ostatními výrobci (která je populární také díky mikrokontrolérům od firmy Atmel,) ale i další, jako Zilog Z80 nebo Motorola 68HC08. Překladač sdcc používám při tvorbě aplikací pro mikrokontroléry PIC v jazyce C. Volně šiřitelný překladač assembler pro mikrokontroléry PIC je součástí balíku GNU PIC utils (gputils http://gputils.sourceforge.net), šířeném též pod licencí GPL. Balík obsahuje překladač kompatibilní s překladačem mpasm od firmy Microchip, disassembler a linker. Podporuje též všechny běžné hostitelské systémy, překladač používám v operačním systému Linux. Kromě HW simulátorů a programových komerčních simulátorů je možno použít také volně šiřitelný balík gpsim http://gpsim.sourceforge.net který podporuje mimo jiné také mikrokontrolér PIC18F2455 z typové řady 18F4550. Alternativu k uvedenýmu programům představuje také volně šiřitelné vývojové prostředí PiKdev http://pikdev.free.fr pro desktop KDE, obsahující programátorský editor, vlastní C překladač CPIK C Compiler. Prostředí také umí spolupracovat s popsaným balíkem gputils a též zahrnuje vlastní programátor. Naprogramovat mikrokontroléry PIC lze pomocí ICSP programátorů, z volně dostupných HW rozhraní jsou to např. programátory JDM nebo Willem EPROM programmer, ovládané např. pomocí programů ic-prog http://www.ic-prog.com, WinPic http://www.qsl.net/dl4yhf/winpicpr.html nebo WinPic800 http://www.winpic800. com Z komerčních řešení zmíním např. programátory Presto, PICQUICK a PICCOLO od firmy Asix http://www.asix.cz Všechny zmiňované programátory podporují mikrokontrolér PIC 18F4550. Při vývoji své práce jsem používal, odzkoušel a ověřil programátor 11
Willem pomocí ICSP kabelu ve spolupráci s výše uvedenými programy ic-prog a WinPIC800. Programátor Willem EPROM programmer http://www.willem.org, který jsem popisoval v předcházejícím odstavci, tvoří HW rozhraní mezi paralelním portem osobního počítače a programovanými součástkami. Tento interface umí obsluhovat jak paralelní paměti typu EPROM, EEPROM a FLASH, tak také sériové paměti typu SPI a I2 C. Dále umí obsluhovat mikrokontroléry Microchip PIC v menších pouzdrech typu DIL, v ostatních pouzdrech nebo osazené v aplikaci přes ICSP kabel. Toto rozhraní je obvodově jednoduché, programátor je možno sestrojit na jednostranné desce plošných spojů, veškeré ovládání je řízeno z počítače. S rozhraním umí spolupracovat jak zmíněné programy, tak také vlastní program ze stránek projektu, který je zaměřen kromě mikrokontrolérů a sérových pamětí také na paralelní paměti. Pro programování v aplikaci pomocí sériového rozhraní je možno použít již existujících bootloaderů jako např. Tiny PIC bootloader http://www.etc.ugal.ro/cchiculita/ software/picbootloader.htm nebo Jolt PIC18F Bootloader (domovské stránky projektu se nacházejí na adrese http://mdubuc.freeshell.org/Jolt) Firma Microchip nabízí k použití svůj bootloader, pracující se sběrnicí USB, pojmenovaný MCHPFSUSB Firmware http://www.microchip.com který umožňuje snadné rozšíření úpravou uživatelských funkcí. Při psaní rozšíření pro tento bootloader je možno využívat dokumentovaná volání jednotlivých funkcí (API). Popisovaný bootloader jsem používal při práci s mikrokontrolérem PIC18F4550. Pro tvorbu aplikací lze využít též upravených verzí existujících operačních systémů pro vestavěné systémy: Unison od firmy Rowebots http://rowebots.com nebo FreeRTOS http://www.freertos.org Vytvoření funkční verze systému uCLinux je součástí veřejné soutěže na webu PIC32.ORG http://pic32.org ve stádiu zadání, ovšem přenos operačního systému Linux na platformu PIC32MX je obtížně realizovaný z důvodů HW omezení, především omezené kapacity operační paměti. Všechny mikrokontroléry PIC totiž nemají vyvedenu dostatečně širokou systémovou sběrnici, případně ji neposkytují vůbec, pro připojení externí paměti. I u nejvýkonnější řady PIC32MX je vyvedena externí sběrnice o šíři maximálně 16 bitů, lze k nim tedy připojit nanejvýš 64 KB externí paměti. Tato externí paměť ovšem není přímo adresovatelná, data se musejí přesouvat mezi externí a interní operační pamětí. Mikrokontrolér navíc neobsahuje jednotku MMU (memory management unit.)
2.5
Ostatní mikrokontroléry
V následující kapitole uvádím přehled mikrokontrolérů v pouzdře TQFP s 44, 64, 80, 100, 128 nebo více vývody. Popřípadě větších, vybavených USB rozhraním, volitelně rozhraním IEEE 802.3, sběrnicí SPI, A/D převodníky, volitelně zvukovým rozhraním.
2.5.1
Microchip
Od firmy Microchip http://www.microchip.com jsou podobně vybaveny též některé další obvody v řadě PIC18F např. 18F45xx, 18F6xJxx. Jednotlivé typy se liší zejména v periferiích, přičemž platí, že obvody vybavené sběrnicí typu USB neobsahují interface 802.3 a naopak. Alternativní zástupce k typu 18F4550 pro demonstraci v univerzální vývojové desce uvádím v kapitole 3.2 v části, věnující se modulu mikrokontroléru. Šestnáctibitovou řadu zastupují podobné typy 24FJxxXGBxxx, které jsou navíc vybaveny USB OTG rozhraním. Zástupce z nejvyšší řady PIC 32MX představuje např. 12
PIC32MX460F512L.
2.5.2
Atmel
Firma Atmel http://www.atmel.com má podobné typy zastoupeny v typové řadě označované jako USB AVR, neboli obvody typu AT90USBxx, případně ATMega16/32U4. Obvody jsou v pouzdrech typu TQFP 44 nebo 64, jsou vybaveny až 128 KB paměti programu, 128 KB RAM, 4 KB EEPROM, USB rozhraním, případně USB OTG, A/D převodníky. Pro ladění programové aplikace obsahují JTAG interface. K obvodům AVR existuje volně šiřitelný překladač založený na překladači GNU C Compiler, označený jako GNU avr-gcc.
2.5.3
Freescale
Podobně jako výše uvedené typy jsou vybaveny také některé mikrokontroléry od firmy Freescale http://www.freescale.com např. typ 68HC908LD64 z řady HC08 v pouzře QFP64 nebo šestnáctibitový S12UF. Zástupce z třicetidvoubitové řady Freescale ColdFire představují např. ColdFire MCF5221X, MCF5222X. Řada HC08 je částečně podporována překladačem sdcc, dále existuje větev volně šiřitelného překladače gcc pro architekturu m68k. Firma Freescale ke svým mikrokontrolérům nabízí vývojové prostředí Code Warrior.
13
Data Bus<8>
Table Pointer<21>
Data Memory (2Kbytes)
PCLATU PCLATH
21 20
Address Lat ch
PCU PCH PCL Program Counter
12 Data Address<12>
31 Level Stack STKPTR
Data Latch 8
Instruction Bus <16>
PORTB RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2(4)/VPO RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD
12 44 BSR FSR0 Access Bank FSR1 FSR2 12
Address Latch Program Memory (24/32Kbytes)
RA0/AN0 RA1/AN1 RA2/AN2/VREF−/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT/RCV RA5/AN4/SS/HLVDIN/C2OUT OSC2/CLKO/RA6
Data Latch
8
8
inc/dec o l gic
PORTA
inc/dec logic
Table Latch
PORTC
Address Decode
ROMLatch
RC0/T1OSO/T13CKI RC1/T1OSI/CCP 2(4)/UOE RC2/CCP1/P1A RC4/D−/VM RC5/D+/VP RC6/TX/CK RC7/RX/DT/SDO
IR
8 Instruction Decode & Control
VDD, VSS OSC1(2) OSC2(2) T1OSI T1OSO ICPGC(3) ICPGD(3) ICPORTS(3)
State Machine Control Signals PRODH PRODL 8
Internal Oscillator Block
Power−up Timer
INTRC Oscillator
Oscillator Start−up Timer
8 MHz Oscillator
Power−on Reset
ALU<8>
Watchdog Timer
8
Single−Supply Programming In−Circuit Debugger
ICRST(3) MCLR(1)
PORTD
8 x 8 Multiply
3
W
BITOP 8
RD0/SPP0:RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D
8
8 8
8
Brown−out Reset Fail−Safe Clock Monitor
PORTE RE0/AN5/CK1SPP RE1/AN6/CK2SPP RE2/AN7/OESPP MCLR/VPP/RE3(1)
Band Gap Reference
USB Voltage Regulator
VUSB
BOR HLVD
Data EEPROM
Timer0
Timer1
Timer2
Timer3
Comparato r
ECCP1
CCP2
MSSP
EUSART
ADC 10−Bit
USB
Obrázek 2.2: Vnitřní architektura mikrokontroléru PIC 18F4550
14
Kapitola 3
Popis univerzální vývojové desky a jejích komponent 3.1
Celkový pohled na univerzální vývojovou desku
Obrázek 3.1: Systém univerzální vývojové desky Realizace vývojové desky byla kvůli univerzálnosti rozdělená do dvou komponent, tvořících dohromady univerzální systém: na společnou základní desku a na modul pro konkrétní typ mikrokontroléru. Na základní desce je umístěn především zdroj pro napájení jednotlivých částí a zároveň pro napájení modulu. Dále pak obsahuje sběrnice a konektory pro připojení zvolených periferií, rozhraní pro připojení modulu mikrokontroléru, oddělení napájecích napětí mezi sběrnicemi s různými napěťovými úrovněmi a aktivní komponenty (Ethernet kontrolér, zvukový kodek.) Modul mikrokontroléru slouží pro přivedení signálů mezi vybranými sběrnicemi na odpovídající vývody mikrokontroléru, napájení mikrokontroléru a je na něm realizován generátor taktovací frekvence. Modul by též měl být schopen v omezené míře pracovat samostatně. Základní deska nevyužívá žádného sdílení signálů. V případě, že na zvoleném mikrokontroléru je přiřazeno více signálů na jeden vývod je nutno se buď rozhodnout, který signál bude ve vývojové desce použit a ten k vývodu přivést, nebo použít přepínání. To může být buď mechanické, pomocí propojek či přepínačů, elektronické, případně programovatelné. Na základní desce toto není řešeno proto, že počet vzájemných možných kombinací by si vyžádal přepínač pro mapování libovolného z 50 pinů na libovolný signál. Takový přepínač by však neúměrně zkomplikoval celou desku a tím také prodražil. Navíc 15
by bylo nutno toto namapování naprogramovat. Naproti tomu výběr modulu s konkrétním zapojením je jednodušší na používání. Pokud lze některé signály sdílet, je možno toto sdílení provést na modulu. Oproti návrhu v semestrální práci je se základní deskou modul mikrokontroléru spojen pomocí standardních pinheaderů na základní desce a dutinek na modulu mikrokontroléru. Bylo tedy upuštěno od konektoru SO-DIMM ve prospěch jednodušších a snadno dostupných konektorů. Použitý systém navíc umožní tvorbu jednodušších modulů – na rozměr modulu se vejde i mikrokontrolér ve standardní DIP patici, případně je možno modul realizovat na jednostranné desce. Proti konektoru SO-DIMM tak vývojář není odkázán na přesnou technologii výroby dvoustranných desek, rozměry modulu navíc dovolují i použití standardních pasivních součástek, v případě potřeby tedy není nutno sahat k součástkám pro povrchovou montáž. Propojovací rozhraní je tvořeno dvěma konektory, přičemž na jeden z konektorů jsou přivedeny všechny signály ze sběrnic na základní desce a druhý slouží pro propojení ostatních signálů přímo do rozšiřujícího pinheader konektoru. Tento je určen pro připojení periferií, které nejsou realizovány na základní desce, případně pro spojení s jinými systémy. Je možno použít toto rozhraní pro spojení s hradlovým polem, použít jako paralelní sběrnici, analogové vstupy apod. Na modulu mikrokontroléru mohou být libovolné signály buď propojeny na potřebné vývody mikrokontroléru nebo ponechány nezapojené (pokud použitý mikrokontrolér neumožňuje pracovat s odpovídající periferií.) Počet vývodů propojovacího rozhraní je 100, z nich 2 slouží pro napájecí napětí a 2 jsou spojené se společnou zemí, celkem tedy zbývá 96 signálních vodičů. Mikrokontroléry s více než 100 vývody lze samozřejmě v modulu použít také, ale ostatní vývody již nebudou ve vývojové desce použity. Rozhraní mezi modulem a základní deskou používá standardní napěťovou úroveň 5 V (mimo signálů pro rozhraní IEEE 802.3 které vedou přímo do oddělovacího transformátoru,) na rozšiřujícím konektoru jsou navíc vyvedeny i signály v napěťové úrovni 3,3 V z oddělovačů úrovní. Signály pro rozšiřující konektor nejsou na základní desce sdíleny ani používány jinde, je tedy možno na nich používat jakékoliv napěťové úrovně. Blokové schéma systému je na obrázku 3.1.
3.2
Návrh modulu mikrokontroléru
Blokové schéma modulu je znázorněno na obrázku 3.2. Modul je vytvořen na desce plošných spojů, pro spojení se základní deskou je ze spodní strany osazen dvěma konek16
Obrázek 3.2: Blokové schéma modulu mikrokontroléru tory typu dvouřadé dutinky s roztečí 2,54 mm. Protože modul se na základní desce nachází v pravém dolním rohu, jeho rozměry mohou být libovolné, může tedy přesahovat okraje základní desky. Modul pro mikrokontrolér PIC18F4550, který je součástí této práce, základní desku nepřesahuje. Jeho rozměry jsou 70×80 mm, jsou tedy určeny rozměry propojovacích konektorů. Modul je kromě samotného mikrokontroléru osazen také oscilátorem, konektorem pro prvotní naprogramování a externí napájení (ICSP, JTAG apod.) Dále se na modulu mohou nacházet tlačítka či přepínače a signalizační LED diody. Modul je tedy schopen pracovat také samostatně, bez nutnosti spojení se základní deskou, pouze po přivedení napájecího napětí. Tento princip je vhodný jak pro samotné naprogramování, tak také odzkoušení základní funkce, že modul je v pořádku. Protože do konektoru jsou ze základní desky přivedena napájecí napětí 5 V i 3,3 V, je možno navrhnout modul pro procesory, pracující s napájením 3,3 V nebo 5 V. Pokud by bylo vyžadováno použití nižšího napájecího napětí než je 3,3 V, bylo by nutno na modul přidat navíc napájecí část (DC-DC měnič, LowDrop stabilizátor, . . . ) Dále by bylo nutno oddělit signály, pracující na jiných napěťových úrovních, což se týká zejména vstupních pinů v případě, že nejsou schopny pracovat i s 5 V úrovněmi (tyto vstupy bývají označeny jako 5 V tolerant.) Navržený modul pro mikrokontrolér PIC18F4550 je konkrétně osazen krystalem 20 MHz, tvořícím oscilátor pro nejvyšší možnou pracovní frekvenci 48 MHz podle katalogového listu mikrokontroléru. S tímto krystalem je též možno využít integrovaného USB rozhraní. Modul je dále osazen ICSP konektorem s klíčem proti připojení v opačné poloze, pomocí kterého je možno mikrokontrolér naprogramovat v případě, že ještě neobsahuje bootloader (případně pokud bootloader z jakéhokoliv důvodu nefunguje.) Dále je modul vybaven dvěma tlačítky. Černé tlačítko, označené BOOT, slouží ke vstupu do Microchip BootLoaderu v případě, že je stisknuto během resetu mikrokontroléru. Pro ostatní případy je možno je používat libovolně, tlačítko je sdíleno se signálem GPIO IO0. Červené tlačítko, označené RESET, slouží k resetu mikrokontroléru kdykoliv během běhu programu. Pro samostatnou činnost je modul osazen dvojicí oranžových LED diod, kterými lze indikovat správnou činnost samostatného modulu a které lze používat libovolně. Signály pro LED diody jsou sdíleny se sloupci maticové klávesnice, proto při používání klávesnice mohou poblikávat, což ale nemá vliv na funkci klávesnice. K indikaci, že modul je napájen
17
(buď z ICSP rozhraní nebo základní desky) slouží zelená LED dioda. Propojka (viz schéma modulu) by pro běžný provoz, kdy je modul vložen do základní desky, neměla být spojena. Slouží pouze při programování pomocí ICSP rozhraní, kdy propojí vývod PGM s logickou úrovní 0 a tím je v mikrokontroléru povoleno ICSP rozhraní. Též je sdílena s vývodem GPIO IO1 a v případě, že mikrokontrolér používá tento signál jako výstupní, by propojka způsobila zkrat na výstupu. Při programování přes ICSP rozhraní modul nesmí být vložen v základní desce. Toto omezení je dáno tím, že na modulu jsou signály pro ICSP sdíleny se signály pro maticovou klávesnicí. Modul také není vybaven žádnou ochranou, nesprávné připojení do základní desky, případně nesprávné připojení signálů ICSP rozhraní by mohlo způsobit poškození modulu, případně desky. Rovněž tak v případě programování přes ICSP rozhraní nesmí být stisknuto tlačítko RESET, které by mohlo způsobit zkrat na napájecím napětí VPP 12 V a tím případně poškodit programátor. Proudová zatížitelnost tlačítka je 50 mA, proto není 12 V napájení vybaveno pojistkou. Signály GPIO IO0 a GPIO IO1 lze využít k libovolnému účelu vzhledem k omezením, zmíněným výše. Protože port RB4, na který je připojen signál GPI IO0, lze konfigurovat jako analogový vstup a je k němu připojen pull-up odpor, je možno jej též využít jako analogový vstup např. k připojení potenciometru, odporové klávesnice, termistoru a celé řady dalších externích součástek nebo obvodů. Může sloužit také např. pro realizaci sběrnice typu 1-wire. Alternativně může být využit jako výstup, třeba pro PWM modulaci, realizovanou softwarově (vývod s výstupem z jednotky CCP/PWM je již obsazen signálem #CS pro obvod ENC28J60.) GPIO IO1 lze využít jako obecný vstupně/výstupní pin, ovšem již bez možnosti funkce analogového vstupu. Je možno jej mimo jiné využít např. k zapínání podsvícení LCD displaye změnou funkce portu ze vstupu (o vysoké impedanci) na výstup s výstupní úrovní 0. Při tomto způsobu navíc nehrozí poškození mikrokontroléru zkratem na výstupu, na který jsem upozorňoval výše. Na modulu jsou vyvedena následující rozhraní: • USB typu B pro připojení k zařízení vybaveném HCI (např. PC) • sběrnice SPI • signály k MMC/SD kartě • signály pro zvukový kodek • signály a přerušení od SPI – Ethernet kontroléru ENC28J60 • PS/2 rozhraní • signály pro obsluhu maticové klávesnice • signály pro obsluhu znakového LCD displaye • dva signály pro libovolné použití GPIO IO0 a GPIO IO1 Oproti všem rozhraním, které podporuje základní deska, na modulu chybí: • USB typu A pro HCI • sériová linka RS-232 18
• Ethernet – rozhraní IEEE 802.3 Ačkoliv mikrokontrolér PIC18F4550 je vybaven sériovou linkou, signál RX je ale sdílen se signálem SDO sběrnice SPI. Protože ostatní vývody mikrokontroléru jsou již obsazeny jinými periferiemi, na navrženém modulu sériová linka není vyvedena. Navíc lze s mikrokontrolérem sériově komunikovat pomocí virtuálního sériového portu přes sběrnici USB. Je ale samozřejmě možno navrhnout odlišný modul mikrokontroléru, na kterém nebudou vyvedena jiná rozhraní (např. SPI,) ale bude na něm vyvedena sériová linka. Síťové rozhraní IEEE 802.3 není vyvedeno, protože mikrokontrolér PIC184F4550 jím není vybaven. Nicméně pro komunikaci přes Ethernet lze využít převodníku SPI – Ethernet ENC28J60, kterým je vybavena základní deska. Výstupní signál #INT z Ethernet kontroléru je připojen na vstup INT2 mikrokontroléru, proto je možno využít rutiny obsluhy externího přerušení pro komunikaci pomocí Ethernetového rozhraní. Jako alternativu s integrovaným Ethernetovým rozhraním lze navrhnout modul např. pro mikrokontrolér PIC18F97J60, který již rozhraním IEEE disponuje (ovšem na úkor rozhraní USB.) Protože USB rozhraní v mikrokontroléru PIC18F4550 nepodporuje HCI, není vyvedeno ani USB rozhraní typu A. Opět lze navrhnout modul pro jiný mikrokontrolér, který je tímto rozhraním vybaven (viz kapitola 2.) Od firmy Microchip lze použít některé mikrokontroléry řady PIC32MX, např. typ PIC32MX460F512L, od firmy Freescale např. obvody z řad ColdFire MCF5222X nebo MCF537X. Na rozhraní USB typu A lze dále také připojit USB sběrnici těch mikrokontrolérů, které jsou vybaveny rozhraním OTG. Tyto mikrokontroléry potom mohou pracovat jak jako řídicí, tak jako řízené, např. k nim mohou být připojeny USB Flash paměti, USB modem apod. Pro rodinu mikrokontrolérů PIC je takto možno vytvořit modul pro některé zástupce z řady PIC24, např. pro typ PIC24FJ128GB106.
3.3
Návrh základní desky
Základní deska 3.3 slouží k propojení rozhraní s mikrokontrolérem, napájení mikrokontroléru a jednotlivých periférií a propojení mikrokontroléru s periferiemi. Protože zdroj kmitočtu je pro každý mikrokontrolér již řešen na modulu mikrokontroléru, není zde nutno realizovat složitý univerzální oscilátor s volitelnými frekvencemi. Základní deska ale realizuje zdroj napájecích napětí jak pro modul, tak také pro jednotlivé integrované obvody, případně periferie. Je napájena stejnosměrným napětím 7 V – 9 V přivedeným na vstup zdrojové části, která slouží jako zdroj stabilizovaných napětí 5 V 19
Obrázek 3.3: Blokové schéma základní desky a 3,3 V. Deska dále spojuje sběrnice různých napěťových úrovní pomocí oddělovačů. Jedná se jak o sériovou linku, používající napětí 12 V, kde potřebné napětí 12 V je získáváno přímo z nábojové pumpy v integrovaném obvodu MAX232, tak i o součástky na sběrnici SPI a slot pro MMC/SD kartu, které pracují s úrovní 3,3 V, které je bráno ze zdrojové části. Na základní desce se dále nacházejí tato rozhraní a konektory: • IEEE 802.3 (Ethernet) pro mikrokontroléry vybavené tímto rozhraním – konektor RJ-45 • sériové rozhraní RS-232 (realizované obvodem typu MAX232 [6]) – konektor Canon 9 F • konektor MLW 16 pinů pro připojení standardního LCD displaye s řadičem Hitachi HD44780 [10] • konektor MLW 10 pinů pro připojení maticové klávesnice • PS/2 rozhraní – konektor Mini DIN 6 F • sběrnice USB – USB konektor typu B – USB konektor typu A (pro typy vybavené HCI) • sběrnice SPI – konektor pro MMC/SD paměťovou kartu – rozhraní SPI – IEEE 802.3, realizované obvodem Microchip ENC28J60 [5] ∗ konektor RJ-45 20
– zvukový kodek, realizovaný obvodem Wolfson WM8731 [7] se standardními konektory typu jack 3,5 mm ∗ ∗ ∗ ∗
mikrofonní vstup (mono) linkový vstup linkový výstup výstup pro sluchátka
• rozšiřující pinheader konektor 70 pinů
3.3.1
LCD display
Znakový LCD display je bodový LCD display, který obsluhuje již zmíněný řadič Hitachi HD44780 (nebo jiný jeho ekvivalent, např. od firmy SHARP.) Takové displaye vyrábí mnoho různých výrobců, výhodou je, že používají všechny stejnou sběrnici a podobný způsob komunikace. Ta mezi mikrokontrolérem a LCD displayem probíhá po sběrnici o několika vodičích. Jednotlivé body na display, kterými jsou znaky tvořeny, již obsluhuje právě řadič, což zjednodušuje obsluhu displaye v mikrokontroléru a šetří kromě vodičů, nutných pro komunikaci s displayem, také vstupně/výstupní porty mikrokontroléru. Organizace displaye může být různá, používají se jak displaye s organizací osm znaků na řádek pro jeden nebo dva řádky, dále jsou používány typy s šestnácti znaky na řádek s jedním nebo dvěma řádky, ale také typy s dvaceti nebo čtyřiceti znaky na řádku. V některých případech, což se týká zvláště jednořádkových displayů s šestnácti znaky, se display chová jako by měl větší počet řádků s nižším počtem znaků, zde konkrétně dva řádky po osmi znacích. Toto chování je dáno použitím stejného řadiče pro různé typy zobrazovačů a je třeba se pro konkrétní organizaci vždy při návrhu zařízení podívat do katalogového listu výrobce displaye. Grafická podoba jednotlivých znaků bývá uložena v paměti typu ROM na řadiči displaye. Existují typy s různými znakovými sadami (např. latinkou, cyrilicí, . . . ) LCD displaye ale bývají vybaveny také pamětí typu RAM, do které je možno uložit grafickou podobu osmi znaků. Tuto paměť lze s výhodou využít pro zobrazování českých znaků. Protože ovšem osm pozic je méně, než je počet všech českých znaků, je nutno tento problém řešit. Jeden z možných způsobů, který spočívá v tom, že se v paměti RAM drží pouze právě potřebné znaky pro zobrazení, je podrobněji popsán na stránkách http: //www.cmail.cz/doveda/lcd/index.htm. Tyto displaye také mohou být vybaveny podsvětlením, které bývá realizováno buď pomocí LED diod nebo výbojky s integrovaným měničem. Typ podsvícení se mimo jiné také liší proudovým odběrem, proto je nutno tento údaj zkontrolovat v katalogovém listu displaye. Ve vývojové desce mohou být použity oba typy, do konektoru pro LCD display je také zapojeno napájení (otevírané tranzistorem pomocí signálu LCD LIGHT nebo sepnutím tlačítka na základní desce) a zem pro podsvícení displaye. Přesto, že je možno spínat podsvícení i u LCD displaye s větším odběrem, stále je třeba brát v úvahu celkovou spotřebu vývojové desky a zabránit případnému překročení proudového zatížení. Kontrast LCD zobrazovače může být nastaven na požadovanou úroveň pomocí odporového trimru na základní desce. Protože maximální povolené proudové zatížení spínacího tlačítka je 50 mA, podsvícení displaye je spínáno spínacím tranzistorem jak pro signál LCD LIGHT, tak také při stisknutí tlačítka na základní desce. Signál LCD LIGHT je na straně mikrokontroléru ale
21
také možno uvažovat jako vstupní, a tím naopak detekovat stisk tlačítka pro podsvit displaye. Tento princip může být výhodný třeba pro probouzení mikrokontroléru ze stavu s nízkou spotřebou, kdy je možno takto zároveň probudit aplikaci rozsvícením displaye aplikaci z klidového stavu. Není tedy třeba probouzet aplikaci zvlášť, např. klávesovou kombinací, stiskem klávesy, jiným tlačítkem apod. Popis vývodů a jejich funkce jsou uvedeny v literatuře [1], ze které jsem čerpal při návrhu vývojové desky, ve které jsou také displaye více popsány a uvedeny základní programové rutiny. Podrobnější informace jsou také uvedeny na stránkách http://www.cmail. cz/doveda Komunikace s LCD displayem může být buď osmibitová, kdy je využita celá šířka datové sběrnice, nebo čtyřbitová. Čtyřbitový režim šetří počty vývodů a vstupně/výstupních portů, v tomto režimu je potom každá slabika poslána na dvakrát po půlslabikách, komunikace s displayem je tedy přibližně dvakrát pomalejší než v případě plného osmibitového režimu. Tento režim je také použit v navržené základní desce. Do LCD displaye je možno nejen zapisovat, ale také z něj číst. V případě vývojové desky lze, vzhledem k ušetření komunikačních vodičů, využít pouze režim zápisu. LCD display je k vývojové desce připojen pomocí propojovacího MLW konektoru o šestnácti vývodech, opatřeného klíčem proti záměně směru. Na základní desce není display osazen přímo z toho důvodu, že jednotlivé typy zobrazovačů se od sebe mohou mírně lišit v uspořádání propojovacího konektoru, ať už jeho polohou, případně v pořadí pinů. Některé typy totiž mají odlišně vyvedeno napájení pro podsvit displaye, než je uvedeno v tabulce zapojení vývodů. K vývojové desce je tak možno připojit jakýkoliv typ displaye, protože konektor lze nalisovat na kabel, jehož jednotlivé vodiče je možno připojit na libovolné vývody displaye v souladu se zapojením vývodů z katalogového listu. K navržené vývojové desce je použit typ LCD display o dvou řádcích po šestnácti znacích na řádek. Na jeho vývody jsou připájeny piny samčího headerpin konektoru 16 pinů 90 ◦ . Na tento konektor je připojen samičí headerpin konektor, k jehož pinům jsou přivedeny jednotlivé vodiče plochého kabelu, na který je nalisován PFL konektor (samičí verze konektoru MLW.) Tímto způsobem lze display připojit buď k navržené univerzální vývojové desce, nebo použít samostatně např. na nepájivém poli, případně v konektoru pro LCD display vyvíjeného zařízení. Fotografie fyzické realizace LCD displaye je uvedena v příloze K.
3.3.2
Maticová klávesnice
Maticová klávesnice se vyznačuje tím, že její jednotlivé klávesy nejsou k mikrokontroléru přivedeny jednotlivě, ale na místo toho jsou uspořádány do matice. Zapojení klávesnice je uvedeno např. na stránkách http://www.gme.cz/cz/index.php?product=637-091. Takovéto uspořádání omezuje počet vodičů nutných k propojení klávesnice s mikrokontrolérem a také šetří počtem obsazených vstupně/výstupních portů mikrokontroléru. Nejvíc vodičů se ušetří při zapojení do čtvercové matice, kdy je počet nutných vodičů ošetřen √ z počtu n hypoteticky nutných vodičů na 2 · n skutečně použitých vodičů. Ze vzorce je vidět, že uspořádání do matice má smysl od devíti tlačítek (uspořádaných v matici 3×3) výše. Toto uspořádání ovšem na druhou stranu klade větší nároky na programovou obsluhu než je tomu v případě zapojení jednotlivých tlačítek. Obsluhu je nutno provádět následujícím způsobem: protože není možno zjistit naráz stav všech tlačítek, musí se zjišťovat postupně. Na všech výstupech mikrokontrolérů, které jsou propojeny se sloupci klávesnice, se nastaví logická úroveň 0. Poté se provede procházení“ jednotlivých sloupců, kdy ” 22
v každém kroku je na následující sloupec přivedena logická úroveň 1 a sleduje se stav řádků. Pokud se na některém z řádků objeví logická 1, souřadnice řádku a sloupce udávají stisknutou klávesu. V jeden časový okamžik je tedy logická úroveň 1 přivedena pouze na jediný sloupec. Ošetření zákmitů kláves musí být též univerzální, protože musí umožňovat ošetřit zákmit právě čtené klávesy, tedy pro všechny kombinace, které mohou nastat. Obsluha se pak také liší pro případ, kdy je uvažována možnost stisku více tlačítek současně nebo pouze jediného tlačítka. Popsané zapojení je platné v případě, že jsou logické úrovně přiváděny na sloupce, zjišťovány z řádků, na které jsou přivedeny snižovací (pull-down) odpory. Alternativními možnostmi jsou způsoby, kdy jsou vstupy ošetřeny zdvihovými (pull-up) odpory, potom je obsluha prováděná z klidového stavu v logické úrovní 1 procházením logickou úrovní 0. Protože pro mechanické klávesnice, tvořené spínacími tlačítky, nezáleží na polaritách na jednotlivých vývodech, je dále možno kromě obou zmíněných způsobů ještě zaměnit řádky a sloupce, kdy jsou logické úrovně přiváděny na řádky a zjišťovány ze sloupců. Celkem tak existují čtyři možnosti zapojení klávesnice, proto by obsluha klávesnice měla být napsána univerzálně, aby nejlépe malou změnou konstant bylo možno použít kterýkoliv z možných způsobů. Co do funkčnosti jsou všechny zmíněné způsoby rovnocenné, volba konkrétního způsobu je pouze na vývojáři aplikace. Použití jednoho ze způsobů zapojení může být výhodnější z hlediska elektrického návrhu nebo v případě, že vývody pro klávesnici jsou sdíleny s jinými periferiemi. Svou volbu způsobu zapojení zdůvodňuji dále v práci v kapitole 4. Podrobnější popis klávesnice a ukázky možností její obsluhy jsou uvedeny v knize [1], ze které jsem při návrhu vývojové desky vycházel. Protože na vývojové desce je možno využít libovolnou klávesnici, není konkrétní typ její součástí. Klávesnice je k základní desce připojena pomocí konektoru MLW, který je opatřen klíčem proti záměně směru. Pro vývojovou desku jsem předpokládal použití typu klávesnice z nabídky firmy GM, jejíž uspořádání je uvedeno na obrázku na stránkách http://www.gme.cz/cz/index.php?product=637-091. Jedná se o šestnácti klávesovou klávesnici, s uspořádání do čtyř řad po čtyřech sloupcích. Protože rozteč vývodů použité klávesnice je 2,54 mm, k vývodům klávesnice jsem, podobně jako v případě LCD displaye, nejprve připájel pinheader konektor 8 pinů 90 ◦ , který je s kabelem s PFL konektorem spojen pomocí jednořadého pinheader konektoru 8 dutinek. PFL konektor je nalisován na plochý kabel, jehož jednotlivé žíly jsou přivedeny ke koncovým pinům podle rozmístění vývodů klávesnice. Toto řešení dovoluje použít klávesnici jak s navrženou vývojovou deskou, tak také samostatně např. v nepájivém kontaktním poli. Fyzická realizace klávesnice je vyobrazena v příloze K.
3.3.3
PS/2 rozhraní
Dále popsané rozhraní slouží k připojení standardní klávesnice, popřípadě myši, k osobnímu počítači vybaveném tímto rozhraním. Spolu s mikrokontroléry se ale toto rozhraní používá málokdy, ve vestavěných aplikacích se častěji používají rozměrově menší maticové klávesnice s méně klávesami. Větší klávesnice ale může mít své opodstatnění např. při konstrukci terminálových systémů, záznamníků, do kterých je možno zapisovat poznámky a v podobných případech, kdy se předpokládá, že klávesnice nebude součástí zařízení, ale bude k němu připojena externě. Na vývojové desce je proto rozhraní přítomno právě z důvodů ladění obsluh PS/2 klávesnice a jako rozšíření výše popsané maticové klávesnice. K PS/2 rozhraní je sice také možno
23
připojit myš, případně přes redukci obě zařízení, tuto možnost ale dále ve své práci neuvažuji, protože součásti vývojové desky není grafický display, nepředpokládám tedy možnost připojení jakéhokoliv polohovacího zařízení. Případné další možnosti využití rozhraní, jeho rozšíření, stejně jako doplnění o signály pro multiplexování obou zařízení, ponechávám na vývojáři aplikace, pracujícím s navrženou deskou. Pro PS/2 rozhraní je použit konektor typu Mini DIN 6F (samičí,) zapojení jeho vývodů je popsáno v literatuře [1]. Protože rozhraní PS/2 je kompatibilní s rozhraním klávesnice PC/AT, popsaném v literatuře [1], vycházel jsem při jeho návrhu ze zmíněného pramene. Jedná se o sériovou sběrnici, tvořenou vývody CLK (hodiny) a DATA, s otevřeným kolektorem se zdvihovými odpory na straně klávesnice. Sběrnice používá standardní napěťovou úroveň 5 V a je obousměrná. Data jsou platná při náběžné hraně hodinového signálu. Komunikace s klávesnicí probíhá pomocí kódu kláves, kdy každé klávese je přiřazen kód, který klávesnice vyšle při stisku klávesy. Při uvolnění je opět vyslán kód klávesy, který následuje za speciálním kódem pro uvolnění klávesy. Není tedy třeba číst jednotlivé klávesy ani tvarovat signál na vstupu, ošetřovat zákmity a podobně, které provádí řadič v klávesnici. Zároveň tento protokol řeší stisk více kláves naráz i jejich uvolňování, kdy posílá kódy jednotlivých kláves. Kódy kláves, časování sběrnice i příklad obsluhy klávesnice je podrobněji uveden v již citované literatuře [1].
3.3.4
SPI – Ethernet kontrolér Microchip ENC28J60 LEDA
Buffe r
LEDB
RX
8 Kbytes Dual Port RAM
MA C RXBM TPOUT+ RXF F (ilt er) MII Interface
ch0 CLKOUT
Control Registers
Arbiter
DM A & Checksum
ch0
ch1
TX
PHY
TPOUT−
TPIN+
TX ch1
RX
TXBM INT
TPIN−
Flow Control
Bus In terface
MII M Interface
RBIAS
Host In ter face CS(1) SI(1) SO
OSC1 SPI
Power− on Reset
System Cont rol
Voltage Regulator
SCK(1)
VCA P
RESET(1)
Obrázek 3.4: Blokový diagram Ethernet kontroléru
24
25 MHz Oscilla tor
OSC2
Ethernet kontrolér umožňuje k vývojové desce připojit připojit Ethernetové rozhraní i v případě, že mikrokontrolér není vybaven přímou podporou Ethernetového rozhraní. Komunikace kontroléru s mikrokontrolérem probíhá po sběrnici SPI, která je rozvedena na základní desce a kterou jsou také vybaveny mikrokontroléry z rodiny PIC18F. V případě, že je použit mikrokontrolér bez přímé podpory sběrnice SPI je stále možno sběrnici SPI vytvořit softwarově a komunikovat tak s Ethernet kontrolérem. Kontrolér obsahuje kompletní fyzickou vrstvu Ethernet, pro svou činnost již vyžaduje pouze minimum přídavných součástek. jedná se o oscilátor, kondenzátor, odpor a dále oddělovací transformátor, který je zařazen mezi kontrolér a konektor RJ-45. Je také možno ke kontroléru připojit konektor s integrovaným transformátorem. Kontrolér umožňuje budit indikační LED diody, které bývají integrované v konektoru RJ-45 nebo mohou být vyvedeny mimo konektor. Jedná se o indikaci stavu linky a indikaci provozu na lince. Blokový diagram Ethernet kontroléru je znázorněn na obrázku 3.4, převzatém z katalogového listu kontroléru. V něm lze také najít podrobný popis kontroléru, práci s ním, popis komunikačního protokolu a také všech konfiguračních registrů. Kontrolér také umožňuje přerušovat mikrokontrolér pomocí signálu INT, v navržené desce tento signál přivádím k vývodům konektoru pro mikrokontrolér. Modul mikrokontroléru PIC18F4550 má tento signál zapojen na vývod pro externí přerušení. Ethernet kontrolér má dále tyto vlastnosti: • Fyzické rozhraní Ethernet 10Baset-T • Kompatibilní s rozhraními 10/100/1000Base-T • Podpora full duplexního i half duplexního módu • Vstupně/výstupní buffer pro vysílaná/přijímaná data s volitelnou velikostí • Interní DMA přenosy
3.3.5
Zvukové rozhraní
Zvukové rozhraní je na základní desce realizováno zvukovým kodekem. Jeho úkolem je převod zvukového signálu mezi jeho analogovým průběhem a číselnou reprezentací. Mimo jiné obsahuje D/A i A/D převodníky, je možno tedy zvuky jak získávat (vzorkovat) ze vstupních rozhraní, tak také přehrávat již dříve navzorkovaná data na výstup. Na základní desce je použit zvukový kodek WM8731 [7] pro spotřební elektroniku, jako jsou CD nebo MP3 přehrávače. Jedná se o prostorově nenáročný integrovaný obvod s minimální spotřebou (která se pohybuje v řádu prvních jednotek mA, podle provozního režimu,) který je možno použít s minimem externích součástek v libovolných aplikacích a který se vyznačuje zajímavými parametry, proto jsem ho použil ve vývojové desce. Jde tedy o plnohodnotné rozhraní, které lze využít také v reálných zařízeních a neslouží pouze pro demonstrační účely. Blokové schéma zvukového kodeku, převzaté z katalogového listu, je znázorněno na obrázku 3.5. Ze schématu je vidět, že zvukový kodek je na vstupní části vybaven stereofonním linkovým a monofonním mikrofonním vstupem, vstupním předzesilovačem, korekcí hlasitosti, možností ztlumení (mute) libovolného z kanálů, multiplexorem, A/D převodníkem a digitálními filtry. Výstup je potom tvořen D/A převodníkem, korekcí hlasitosti s možností ztlumení vybraného kanálu, linkovým stereofonním výstupem a také stereofonním koncovým zesilovačem pro sluchátka. 25
Obrázek 3.5: Blokové schéma zvukového kodeku WM8731 Kodek již není třeba doplňovat dodatečnými obvody jako korekčními obvody popřípadě zesilovači, veškeré aktivní prvky jsou již integrovány. Obvod je pouze doplněn pasivními součástkami. Na mikrofonní vstup je přivedeno předpětí, je určen pro dvouvodičové připojení elektretového mikrofonu. Komunikace se zvukovým kodekem je rozdělena na řídicí a datovou část. Řídicí komunikace probíhá po sériovém rozhraní, je možno hardwarově (logickou úrovní na vývodu MODE) volit mezi trojvodičovou a dvouvodičovou sběrnicí. Na univerzální vývojové desce je použit trojvodičový mód, ve kterém je sběrnice kompatibilní se sběrnicí SPI. Datová komunikace probíhá po dalších signálových vodičích, vyhrazených pro data. Datová komunikace tak nepotřebuje velkou přenosovou rychlost na sběrnici SPI, oddělení řídící a datové komunikace tolik nezatěžuje sběrnici. Stejně tak je datová sběrnice rozdělena na část z A/D převodníku a na část pro D/A převodník. V zapojení je použit krystal 18,432 MHz, který dovoluje pro A/D i D/A převodníky použít vzorkovací frekvence 8, 32, 48 nebo 96 kHz. Vzorky mohou mít velikost 16, 20, 24 nebo 32 bitů. Audio kodek může pracovat jak v řídícím módu, označovaném jako master, tak také řízeném (slave) módu. Pro použití s mikrokontrolérem se předpokládá řízený mód. Obvod je charakterizován následujícími vlastnostmi: • napájecí napětí v rozsahu 2,7 V – 3,6 V (ve variantě s nízkou spotřebou, označovanou L v rozsahu až 1,8 V – 3,6 V) • předpětí pro elektretové mikrofony • odstup signál – šum 90 dB pro A/D převodník, 100 dB pro D/A převodník (katalogový údaj při 3.3 V) • volitelný filtr typu horní propust pro A/D převodník 26
• 24 bitový A/D převodník typu sigma-delta, 24 bitový D/A převodník sleeve ring tip
GND R L
Tabulka 3.1: Zapojení vývodů stereo konektoru jack 3,5mm stereo Zapojení vývodů (pinout) stereofonního konektoru typu jack 3,5 mm, převzaté ze stránek http://pinouts.ru/connector/3_pin_stereo_jack_male_connector.shtml popsáno v tabulce 3.1. Uvedené rozmístění vývodů platí pro stereofonní linkový vstup a výstup a pro sluchátkový výstup. Pro mikrofonní vstup je rozmístění vývodů, označované jako typ PC99, uvedeno na stránkách http://cs.wikipedia.org/wiki/Mikrofon. Protože ve vývojové desce je mikrofonní vstup zapojen s předpětím přímo na mikrofonním vstupu (na konektoru na špičce – tip), je na vývojové desce použita změna zapojení, která spočívá v tom, že prostřední část konektoru jack, označovaná jako kroužek (ring), zůstává nezapojena. K vývojové desce je tak možno připojit mikrofon jak s monofonním konektorem typu jack, tak také se stereofonním konektorem, aniž by došlo ke zničení mikrofonu nebo vývojové desky.
3.3.6
Rozšiřující konektor
Jako rozšiřující konektor je na univerzální vývojové desce použit samičí pinheader konektor, který má dohromady sedmdesát dutinek ve dvou řadách, složených z konektorů 2×20 a 2×15 pinů. Pro orientaci slouží volný pin 69, který se nachází vpravo nahoře, který není zapojen a je tak možno tento pin zaslepit. Takto zaslepený pin slouží jako klíč pro ochranu proti záměně směru. Samičí konektor byl zvolen z několika důvodů. Prvním je nezáměnnost s ostatními konektory na základní desce (pro LCD display a klávesnici jsou použity samčí MLW konektory, pro spojení s modulem samčí pinheadery,) ačkoliv záměna by ale stejně nebyla možná ani kvůli rozdílnému počtů vývodů. Dalším důvodem je snadná manipulace s konektorem, kdy je možno do konektoru zasunout např. přímo vývod součástky, propojovací kablík apod. Při vývoji také byla předpokládána spolupráce s podobnými vývojovými deskami, případně s deskou, osazenou např. hradlovým polem, ale také případné propojení s nepájivým polem. Toto pole lze se základní deskou snadno propojit buď přímo pomocí propojovacích drátků, případně konektory se standardní roztečí 2,54 mm typu samec. V konektoru jsou vyvedeny signály GPIO IO0 – GPIO IO53, které jsou přivedeny přímo z modulu mikrokontroléru, nejsou přivedeny nikam dále na základní desku. Lze je tak použít jako obecné vstupně výstupní porty nebo sběrnice (např. CAN, I2 C nebo další, které nejsou vyvedeny na základní desce,) případně jako analogové vstupy/výstupy. Jejich napěťová úroveň může být do 20 V. Protože se jedná se o signály, odpovídající vodiče jsou na desce vyvedené nejtenčími spoji, jejich proudové zatížení by proto nemělo překročit několik desítek mA. Lze jimi ale přímo budit např. LED diody, LED displaye apod. Dalšími signály, které jsou vyvedeny v rozšiřujícím konektoru, jsou signály sběrnice USB. Jedná se jak o verzi B, tak i o verzi A a o fyzicky stejné signály jako v USB konektorech na základní desce – vodiče jsou spolu navzájem propojeny. Důvodem, proč jsou přítomny i na rozšiřujícím konektoru, není rozšířit počet připojitelných zařízení, ale umožnit např.
27
připojení jiného zařízení bez nutnosti použití propojovacích konektorů, připojení např. USB hubu a podobně. Na výstup USB hubu je již možno připojit více USB zařízení. USB signály v rozšiřujícím konektoru lze také využít pro zařízení typu OTG, které pracují zároveň v klientské, ale také hostitelské roli. Potom jeden interface může využívat oba typy konektorů (A i B) v různém čase pro připojení různých zařízení. V tomto případě může být užitečné propojit oba konektory paralelně, což není realizováno na základní desce. Případně lze signály propojit s dalšími zařízeními, které využívají USB sběrnici, ale nemají vyveden USB konektor. V tomto případě se jedná typicky o vlastní zapojení vyvíjené aplikace, která budou osazena zvoleným mikrokontrolérem, a jejich části jsou vyvíjeny samostatně. Na konektor je také přivedena sběrnice SPI, která obsahuje signály v napěťové úrovní jak 5 V, tak i 3.3 V. Sběrnici lze využít k připojení libovolných obvodů s SPI rozhraním v typologii buď paralelně nebo kaskádově. Pokud je ale použito kaskádové zapojení, je nutno opravit obslužné rutiny ve vyvíjené aplikaci. V obou případech jsou ale na sběrnici navíc stále paralelně připojeny obvody SPI na základní desce, v případě kaskádové topologie paralelně k celé kaskádě. Ačkoliv jsou v konektoru všechny signály obsaženy dvakrát, jedná se stále o jedinou sběrnici, ale v různých napěťových úrovních. Důvod, proč jsou zde různé signály vyvedeny, je pouze pro ušetření externího oddělování sběrnic, protože mnoho v současné době používaných obvodů pro sběrnici SPI pracuje v napěťové úrovni 3,3 V. Není proto nutno sběrnici dodatečně oddělovat. Signály jsou sdílené s SPI sběrnicí na základní desce, celková proudová zatižitelnost obvodu TXB0104, který na základní desce odděluje úrovně 3,3 V a 5 V, činí 50 mA. Proto by sběrnice neměla být nijak proudově zatěžována, slouží pouze jako signálová. Na základní desce nejsou žádné dodatečné ochrany proti přetížení. Posledním signálovým vývodem v rozšiřujícím konektoru je vodič LCD LIGHT. Jedná se o výjimku v tom smyslu, že tento vodič není primárně navržen pro připojení externích zařízení, ale naopak pro spojení s jedním z volných výše popsaných uživatelských signálů (GPIO IO,) který je vyveden z mikrokontroléru. Tímto signálem je potom možno zapínat podsvícení znakového LCD displaye. Spínání podsvícení je spojeno paralelně ke spínači na základní desce, podsvit lze tak zapnout kterýmkoliv z obou možných způsobů. Ponechání popisovaného vodiče v konektoru jako nezapojeného způsobí zakázání podsvitu displaye z modulu mikrokontroléru. Tento způsob jsem zvolil namísto přivedení signálu LCD LIGHT na modul mikrokontroléru a doplněním zakazovací propojky na základní desku. Posledními vývody, které jsou v rozšiřujícím konektoru zapojeny, jsou dva napájecí a dva zemnící piny. Vyvedeny jsou obě napájecí napětí, jak 5 V tak i 3.3V. Lze je použít pro napájení ostatních obvodů, připojovaných k vývojové desce, případně k napájení ostatních rozhraní. Celkový odběr základní desky včetně ostatních k ní připojených periferií, by neměl překročit 750 mA trvale, 1 A nárazově. Maximální hodnoty proudu jsou omezeny v případě trvalého zatížení pojistkou PolySwitch, v případě nárazového zatížení, které je kratší než čas nutný pro přetavení“ pojistky, je omezen proudovou ochranou ve stabilizátorech napětí. ”
28
Kapitola 4
Návrh zapojení vývojové desky 4.1
Návrh elektrotechnických schémat
Návrh elektrotechnických schémat zapojení lze provádět buď ručně a schémata kreslit na papír, nebo lze použít některého z existujících návrhových systémů. Těchto systémů existuje celá řada, je ale výhodné navrhovat schémata v systému, který kromě toho, že by měl umožňovat snadné změny v zapojení, pro přehlednost umožnit kreslit části schémat na jednotlivé listy a podobně, by měl také obsahovat knihovny použitých součástek. Dále je výhodné, aby návrhový systém umožnil z nakresleného schéma zapojení posléze vytvořit desku plošných spojů. Pro návrh schéma zapojení univerzální vývojové desky a modulu mikrokontroléru PIC18F4550 jsem použil vývojový systém Eagle http://www.cadsoft.de který kromě přehledného kreslení schémat také umožňuje navrhnout desky plošných spojů. V tomto návrhovém systému je obsažen rozsáhlý počet knihoven, ve kterých je obsažena většina použitých součástek. Výrobce také umožňuje ze svých stránek stáhnout další knihovny, často od samotných uživatelů návrhového systému, které obsahují součástky, které nejsou zahrnuty v oficiální verzi systému. V několika málo případech proto bylo nutno stáhnout uživatelské knihovny k nestandardním součástkám. Při návrhu zapojení univerzální vývojové desky a jejich částí jsem vycházel z blokových schémat, uvedených v předcházející kapitole. Při kreslení schémat jednotlivých bloků jsem využíval katalogových listů použitých součástek. V následující kapitole popíši schéma univerzální vývojové desky a modulu mikrokontroléru bod po bodu podrobněji, včetně popisu funkce jednotlivých součástek a volby konkrétních součástek.
4.2
Návrh základní desky
Schéma základní desky je uvedeno v přílohách B. Pro větší přehlednost je nakresleno na tři listy. Obsah jednotlivých listů tvoří: 1. zdroj, 5 V část, vstupně výstupní rozhraní a sériové rozhraní 2. 3,3 V část, SPI sběrnice 3. sběrnice, vstupně výstupní konektory a konektory zvukového rozhraní
29
4.2.1
Zdrojová část
Rozhodl jsem se napájet zdrojovou část stejnosměrným napětím o velikosti 7 V – 9 V. Tato volba je dána napětím, nutným pro správnou funkci stabilizátoru napětí 5 V. Zároveň se jedná o běžnou hodnotu napájecího napětí u laboratorních zdrojů, případně adaptérů pro spotřební elektroniku. Tyto adaptéry ovšem bývají měkké zdroje, proto napětí pro 5 V stabilizuji. Ačkoliv by bylo možno desku napájet střídavým napětím, které by bylo ve zdrojové části usměrněno a filtrováno, tuto možnost jsem nepoužil, protože při použití běžných hodnot transformátorů by bylo napájecí napětí po filtraci kondenzátorem příliš vysoké. To by způsobovalo příliš velké úbytky napětí na stabilizátoru napětí, které by stabilizátor zahřívaly. Pro vstup zdrojové části jsem zvolil napájecí jack konektor. Tento konektor je možno zapojit dvěma způsoby, běžnější z nich je napájecí napětí na střed konektoru a zem na vnější část. Takto jsem zapojil napájecí konektor v navrhované desce. Z napájecího konektoru je napětí přivedeno na pojistku PolySwitch 0,75 A. Pojistka má zabránit jak proudovému přetížení v obvodu, tak také špatně zapojenému napájení. Podle katalogového listu se jedná o vratnou pojistku s časovým průběhem podobným pomalé tavné pojistce. V případě přetížení pojistka přeruší obvod. Po vychladnutí se opět pojistka zotaví. Za pojistku je zapojen transil typu unidirect, který má za úkol ochránit vývojovou desku jak proti přepólování, tak proti přepětí. Charakteristika transilu je uvedena v katalogovém listu, jedná se o diodu, jejíž VA charakteristika je v závěrném směru ještě strmější než u Zenerovy diody. Při přepólování je dioda zapojena v propustném směru, způsobí tak zkrat a přerušení pojistky PolySwitch. V závěrném směru se dioda začne otvírat při přivedení většího napájecího napětí než 11 V. Tím rovněž vzroste proud, procházející pojistkou, která přeruší obvod. Při překročení maximálního proudového zatížení se transil zničí zaručeným způsobem, kterým je vždy proražení. Zničený transil se tak chová jako zkrat a tím chrání zbytek obvodu, čímž se také liší od Zenerovy diody, která se může zničit buď proražením nebo přerušením. Přerušení diody by totiž dále nechránilo zbytek obvodu, zejména integrované obvody, polovodičové součástky, citlivé proti přepólování. Transil typu unidirect se chová v propustném směru jako dioda, což je pro ochranu obvodu požadovaná vlastnosti. Druhým možným typem transilu je typ bidirect, který je v obou směrech uzavřen a otevře se až při překročení otevíracího napětí. Tento typ transilu se používá na datových linkách, na kterých se mohou vyskytnout signály tvořené buď kladným nebo záporným napětím a unidirect transil by nešlo použít, protože by jeden ze směrů proti společné zemi propouštěl i při nižším napětí. Za pojistkou a transilem je zapojen elektrolytický SDM kondenzátor, který filtruje výkyvy v napájecím napětí. Protože maximální vstupní napětí je omezeno 11 V transilem, použil jsem kondenzátor pro max. 16 V. Napětí z kondenzátoru je stabilizováno na 5 V stabilizátorem IC1, kondenzátory C2 a C5 jsou k němu zapojeny jako blokovací. Výstup ze stabilizátoru je ve vývojové desce rozváděn pro napájení 5 V částí. Maximální povolené proudové zatížení stabilizátoru je 1 A, což je také maximální možný odběr celé vývojové desky, tedy součtu proudu 5 V i 3,3 V části. Stabilizátor s povoleným maximálním procházejícím proudem 1A jsem použit proto, protože součet všech maximálních odběrů (při návrhu jsem uvažoval 250 mA pro LCD display a 250 mA pro mikrokontrolér) nepřesahuje 750 mA. Volil jsem proto výkonnější stabilizátor, aby na desce byla ještě proudová rezerva. Napájecí napětí 3,3 V je stabilizováno low drop stabilizátorem IC2 s blokovacími kon-
30
denzátory C4 a C3. Protože jsem předpokládal velké odběry z výstupů obou stabilizátorů, počítal jsem pro návrh DPS s osazením chladičů k napěťovým stabilizátorům, ve schématu označených jako KK1 a KK2. Správná činnost obou stabilizátorů napětí ve zdrojové části je indikována dvojicí LED diod: zelenou diodou LED1 pro 5 V větev a oranžovou diodou LED2 pro 3,3 V větev. Proud procházející LED diodami je omezen odpory R1 a R34.
4.2.2
USB rozhraní
Na vývojové desce jsou dva USB konektory: konektor X1 typu A a konektor X2 typu B. Datové vodiče u USB konektorů jsou přivedeny na konektor modulu mikrokontroléru. Zemnicí vodiče jsou spojeny se společnou zemí. Protože vývojová deska je napájena svým vlastním zdrojem, napájecí vývod konektoru typu B není v desce zapojen. Naopak USB konektor typu A je určen k připojování USB zařízení, proto je v něm na napájecí vývod přivedeno napájecí napětí 5 V. Protože z USB rozhraní je možno podle USB specifikace odebírat až 100 mA na zařízení, není napájecí vývod omezen žádným odporem. Úbytek na tomto odporu by totiž způsoboval větší ztrátový výkon, než je typová hodnota pro SMD součástky. Mezi napájecí a zemnicí vývody konektoru X1 je zařazen blokovací kondenzátor C6.
4.2.3
Konektor pro maticovou klávesnici
Konektor pro maticovou klávesnici typu MLW je ve schématu označen jako SV1. Jednotlivé vývody klávesnice jsou propojeny s konektorem modulu mikrokontroléru. K vývodům od řádků klávesnice jsou připojeny snižovací odpory R38 – R41, které jsem zvolil proto, protože na modulu mikrokontroléru jsou vývody pro řádky klávesnice sdíleny s indikačními LED diodami. Zdvihové odpory by spolu s diodami a jejich omezovacími odpory tvořily dělič a mikrokontrolér by nemusel správně detekovat logickou úroveň na vstupu. Proto je použití snižovacích odporů výhodnější. Zapojení vývodů konektoru pro maticovou klávesnici jsem při návrhu desky volil tak, aby pořadí vodičů v kabelu, který je připojován do konektoru pro klávesnici, odpovídalo rozmístění vývodů použité klávesnice. Pořadí vodičů při vytváření propojovacího kabelu proto není nutno měnit.
4.2.4
Konektor rozhraní PS/2
Konektor mini DIN rozhraní PS/2 je ve schématu označen X3. Ke konektoru je přivedeno napájecí napětí 5 V a společná zem, mezi které je zapojen blokovací kondenzátor C7. Dále jsou na konektor přivedeny vodiče PS2 DATA a PS2 CLK, které jsou spojeny s konektorem modulu mikrokontroléru. Ostatní vývody (včetně vývodu RESET) nejsou v konektoru PS/2 zapojeny. Protože podle literatury [1] jsou v klávesnici mezi napájecí pin a vývody DATA a CLK připojeny zdvihové odpory, proto jsem vývojovou desku již nevybavoval dodatečnými zdvihovými odpory.
4.2.5
Konektor pro znakový LCD display
Konektor typu MLW pro LCD display je ve schématu základní desky označen SV2. Na konektor je přivedeno napájecí napětí 5 V a společná zem, mezi které je připojen blokovací
31
kondenzátor C8. Při návrhu vývojové desky jsem rozmístění vývodů konektoru pro LCD display volil tak, aby podobně jako v případě maticové klávesnice bylo možno kabelem propojit konektor s LCD displayem bez změny pořadí vývodů. Dolní polovina datové sběrnice DB (vývody DB0 – DB3) je na desce uzemněna proto, aby bylo možno pro komunikaci s displayem použít čtyřvodičovou sběrnici. Horní polovina sběrnice je spojena s konektorem modulu mikrokontroléru, se kterým jsou také propojeny vývody E a RS. Vývod R/W je uzemněn, do displaye je tedy možno pouze zapisovat, ale tímto způsobem je pro komunikaci ušetřen jeden vývod. V konektoru pro LCD display je také zapojen vývod VO, který slouží k nastavování kontrastu displaye, připojený k odporovému trimru R36, který tvoří spolu s odporem R35 odporový dělič a trimrem je tak možno nastavit různé napěťové úrovně a měnit tak kontrast displaye. Toto zapojení je převzato ze stránek http://www.cmail.cz/doveda/lcd/index. htm Poslední zapojené vývody v konektoru LCD displaye umožňují napájet podsvícení displaye. Aby bylo možno spínat podsvícení také u LCD displaye s měničem se spotřebou až 200 mA jak pomocí mikrokontroléru (přes vývod LCD LIGHT,) tak také tlačítkem na základní desce, rozhodl jsem se spínání realizovat tranzistorem Q3. Použil jsem bipolární SMD tranzistor PNP s parametrem hf e = 600. Protože jsem použil bipolární tranzistor, podsvícení je spínáno proudově uzemněním báze tranzistoru (přes jeden z omezovacích odporů). V případě, že vývod LCD LIGHT není použit, tranzistor je možno spínat spínacím tlačítkem. Nehrozí zde tedy nebezpečí vzniku nedefinované úrovně na vstupu tranzistoru, které by mohlo nastat při použití spínacího tranzistoru typu FET. Proud emitor – báze jsem omezil odpory R37 a R42 na přibližně 2 mA, tranzistorem ve směru emitor – kolektor proto může procházet proud až 300 mA, což je pro spínání podsvícení LCD displaye dostačující. Protože omezovací odpory v případě LCD diod nebo měniče pro podsvícení jsou součástí LCD displaye, neosazoval jsem vývojovou desku dalším dodatečným odporem. Tranzistor tak ale není chráněn proti zkratu ve směru emitor – kolektor. V případě, že je stisknuto tlačítko na základní desce, z odporů R37 a R42 se tak stanou snižovací odpory vzhledem k vývodu LCD LIGHT. Proto lze tlačítko pro podsvit displaye použít i jako vstup mikrokontroléru – tím, že je použit bipolární tranzistor typu PNP a vstup mikrokontroléru se nachází ve stavu vysoké impedance, není tranzistor Q3 otevřen, otevře se až stisknutím tlačítka.
4.2.6
Ethernetové rozhraní
Toto rozhraní slouží pro mikrokontroléry, vybavené obvodovou realizací pro obsluhu rozhraní Ethernet. Vývody mikrokontroléru je potom možno připojit k Ethernet konektoru (typu RJ-45) a je možno připojit signalizační LED diody. LED diody jsou k vývodům modulu mikrokontroléru připojeny přes omezující odpory R2 a R3. Ethernetové rozhraní je nutno mezi konektorem RJ-45 a mikrokontrolérem galvanicky oddělit. Je možno použít např. konektor s integrovaným transformátorem a LED diodami. V navržené desce je kvůli dostupnosti součástek rozhraní galvanicky odděleno miniaturním transformátorem U1 a odpory R4 – R9. Kondenzátory C14, C49 a C50 spolu s tlumivkou L2 jsou osazeny kvůli odrušení rozhraní. Zapojení je převzato z katalogového listu mikrokontroléru [9]
32
4.2.7
Sériové rozhraní RS-232
Protože mikrokontrolér pracuje s napěťovou úrovní 5 V, zatímco rozhraní RS-232 používá napěťovou úroveň 12 V, je nutno tyto sběrnice vzájemně oddělit. K tomu slouží široce používaný obvod MAX232 [6]. Zapojení na základní desce vychází z uvedeného katalogového listu. Je tvořeno obvodem IC3, filtračním kondenzátorem C30, blokovacím kondenzátorem C9 a tantalovými SMD kondenzátory C10 a C13 pro podporu nábojových pump v integrovaném obvodu IC3. Sériové rozhraní je připojeno na konektor X4. Protože k převodním IC3 mohou být připojeny dvě sériové linky, kromě vývodů RX a TX pro vysílaná a přijímaná data jsou na základní desce k mikrokontroléru přes integrovaný obvod IC3 připojeny také vývody RTS a CTS.
4.2.8
Oddělení sběrnic s úrovněmi 5 V a 3,3 V
Protože ve vývojové desce jsou na sběrnici SPI použity integrované obvody, pracující s napájecím napětím a v napěťové úrovni 3,3 V, je třeba zajistit oddělení těchto obvodů od sběrnice v 5 V úrovni. Jedná se v podstatě o podobný problém jako v případě sériového rozhraní RS-232. Na navržené desce toto oddělení realizují integrované obvody IC5 – IC7. Tyto obvody umožňují vzájemné oddělení sběrnic 3,3 V a 5 V a to v obou směrech bez nutnosti volit směr. Obvody jsou dále doplněny blokovacími kondenzátory C24 – C29 a odporem R19, který povoluje logickou úrovní 1 na vývodu OE výstupy na branách obvodů. Katalogový list obvodu Texas Instruments TXB104D je uveden v literatuře [8]. Protože součástka TXB104D není zahrnuta mezi standardními knihovnami v návrhovém systému Eagle, bylo nutno tuto součástku v návrhovém systému definovat. To zahrnovalo jak nakreslení schématické značky, tak také definování vývodů na standardním SMD pouzdře. Proudová zatížitelnost výstupů z obvodu TXB104D je 50 mA. Výstupy je tedy možno použít jako zdroje signálu, ale nelze jimi přímo budit proudově náročné součástky. Protože udávaná propustnost obvodu TXB104D je v případě napájecího napětí 3,3 V 100 Mbit/s, je možno obvod použít nejen pro komunikaci se zvukovým kodekem, ale také pro přenos po sběrnici Ethernet pomocí převodníku SPI – Ethernet.
4.2.9
Slot pro MMC/SD kartu
Vzhledem k faktu, že podle specifikace umí MMC karta pracovat také v režimu kompatibilním se sběrnicí SPI v napěťové úrovni 3,3 V a samotná karta je napájena napájecím napětím také 3,3 V, je možno připojit rozhraní pro čtení karty k vývojové desce poměrně jednoduše přímo na 3,3 V SPI sběrnici. Do slotu pro MMC/SD kartu jsem přivedl napájecí napětí a společnou zem, mezi které je zapojen blokovací kondenzátor C19. Na odpovídající vývody SD slotu podle katalogového listu jsou dále připojeny signály sběrnice SPI v napěťové úrovni 3,3 V – SDI, SDO a SCL. Posledním propojeným vývodem je CS, který je spojen přes oddělovač napěťových úrovní s konektorem pro modul mikrokontroléru. Protože na vývojové desce je přítomna 3,3 V sběrnice SPI, všechny součástky pro tuto sběrnici jsou zapojeny kaskádově. Jejich vývody SDI, SDO a SCL jsou spojeny paralelně a jsou propojeny s odpovídajícími vývody na modulu mikrokontroléru. Vývody CLK jsou propojeny mezi sebou, vývody SDI jsou propojeny s vývodem SDO v modulu mikrokontroléru a naopak. Sběrnice SPI v tomto případě pracuje jako posuvný registr a všechny
33
signály jsou přivedeny ke všem součástkám společně. Požadovaná součástka pro komunikaci přes sběrnici SPI je volena pomocí jednotlivých signálů CS. Kartu jsem na sběrnici připojoval přímo, nepoužívám tak žádné ochranné odpory. Pro signálové vývody nejsou potřeba, neboť se jedná o sběrnici s otevřeným kolektorem. Také proud spotřebovávaný SD kartou činí jednotky mA. Na vývojové desce předpokládám použití karet, které jsou elektricky v pořádku, nejsou vnitřně zkratovány nebo jinak poškozeny. Ochrana by ale měla smysl u výsledné aplikace, navržené jako koncový výrobek pro spotřební trh. Na desce je použit slot z nabídky dodavatele GM. Existuje ale spousta dalších slotů, vyráběných různými výrobci, které se liší buďto svým tvarem nebo zapojením vývodů, popřípadě i mechanicky. Některé sloty mohou být vybaveny vysouvacím mechanizmem, mohou dále obsahovat také spojovací kontakty pro indikaci, že byla vložena, popřípadě vysunuta, paměťová karta. Jiné sloty jsou naopak mechanicky jednoduché. Slot v univerzální desce neobsahuje vysouvací mechanizmus, je nicméně vybaven zmíněným spínacím kontaktem. Tento kontakt ale není v univerzální desce vyveden. Protože v návrhovém systému Eagle není standardně slot pro paměťovou kartu obsažen v knihovnách součástek, s výjimkou slotu od dodavatele Farnell, stáhl jsem si ze stránek výrobce knihovnu s tímto konektorem. Slot od dodavatele Farnell jsem nepoužil z toho důvodu, že slot od firmy GM je dostupnější.
4.2.10
SPI – Ethernet kontrolér ENC28J60 MC U
ENC28J60 I/ O
SDO SDI SCK
TPIN+/−
CS
TPOUT+/−
SI SO SCK
RJ45
TX/RX Buffer
MA C
ETHERNET TRANSFORMER
PHY LEDA
INT INTX
LEDB
Obrázek 4.1: Typické zapojení kontroléru ENC28J60 Zjednodušené schéma typického zapojení kontroléru ENC28J60 mezi mikrokontrolérem a Ethernet rozhraním je znázorněno na obrázku 4.1 z katalogového listu [5], kde je možno nalézt kromě popisu komunikace s kontrolérem také podrobné schéma, podle kterého jsem kontrolér zapojil do vývojové desky. Ethernet kontrolér je ve schématu označen jako IC4. Podobně jako výše popsaný slot pro MMC/SD kartu je také určen pro sběrnici SPI v napěťové úrovni 3,3 V a je napájen napájecím napětím 3,3 V. Připojil jsem ho tedy na SPI rozhraní paralelně a dále vyvedl z odpovídajících vývodů signály #INT a #CS. Vývod RESET jsem ponechal nezapojen, podle katalogového listu je na něj totiž interně přivedena z napájení logická úroveň 1 přes zdvihový odpor. Dále je ke kontroléru přivedeno napájecí napětí a společná zem, mezi které je zapojen blokovací kondenzátor C53. Ačkoliv Ethernet kontrolér pracuje s napájecím napětím a napěťovou úrovní 3,3 V, jsou jeho vstupní porty schopny pracovat i v napěťové úrovni 5 V. Proto je možno spojit
34
vývody ke vstupním portům přímo s mikrokontrolérem. Výstupy jsou již ale v napěťové úrovni 3,3 V, proto pro spojení s mikrokontrolérem pracujícím s napěťovou úrovní 5 V by bylo třeba tyto výstupy posílit. Posílení lze realizovat buď pomocí externích součástek jako je spínací tranzistor a odpor nebo oddělovačem úrovní jednotlivých sběrnic. Protože ve vývojové desce jsou tři výše popsané oddělovače TI TXB104D, na kterých zbyly volné porty, jsou přes tyto oddělovače zapojeny nejen výstupy, ale i vstupy kontroléru. Kontrolér je tak plně napěťově oddělen, i když by tomu tak v případě vstupů být nemuselo. Kontrolér dále potřebuje oscilátor, který je ve vývojové desce tvořen krystalem Q1 s rezonanční frekvencí 25 MHz spolu s keramickými kondenzátory C17 a C18. Pro fyzickou vrstvu je ke kontroléru také potřeba připojit kondenzátor k vývodu VCAP pro interní nábojovou pumpu, použil jsem tantalový SMD kondenzátor C16. Pro předpětí fyzické vrstvy je také na vývod RBIAS připojen odpor R18. Fyzická vrstva je spojená s Ethernetovým rozhraním. Jedná se o stejné zapojení, jehož funkce je již popsána výše v kapitole 4.2.6. Toto rozhraní je tvořeno oddělovacím transformátorem U2 spolu s odpory R11 – R16, filtračními kondenzátory C15, C51, C52 a tlumivkou L1. Sekundární vinutí oddělovacího transformátoru je připojeno ke konektoru J3. Signalizační LED diody v konektoru J3 jsou spojeny s kontrolérem přes omezovací odpory R10 a R17.
4.2.11
Zvukový kodek WM8731
Integrovaný obvod Wolfson WM8731, který je zapojen podle doporučeného zapojení v katalogovém listu [7], je ve schématu zapojení označen jako IC8. Tento obvod pracuje podobně jako ethernetový kontrolér s napájecím napětím a napěťovými úrovněmi 3,3 V, proto jsem jej připojil na 3.3 V sběrnici přes oddělovače napěťových úrovní. V příloze B je zapojena napájecí část, digitální rozhraní pro komunikaci s mikrokontrolérem a oscilátor. Napájení 3.3 V je pro obvod WM8731 rozděleno mezi několik vývodů. Napájení pro digitální část je přivedeno na vývody DBVDD a DCVDD proti zemi DGND, mezi které jsou zapojeny blokovací keramické kondenzátory C22, C23 a filtrační tantalové kondenzátory C20, C21. Napájení pro analogovou část je přivedeno na vývod AVDD proti zemi AGND, mezi které je zapojen blokovací kondenzátor C33 a filtrační kondenzátor C34. Napájení koncového zesilovače pro sluchátka je přivedeno na vývod HPVDD proti zemi HPGND, mezi které je zapojen blokovací kondenzátor C32 a filtrační kondenzátor C31. Tantalový kondenzátor C36 spolu s blokovacím keramickým kondenzátorem C35, zapojený mezi vývod VMID a společnou zem, je osazen pro vytvoření středu jako napěťové reference uvnitř integrovaného obvodu. Zdvihový odpor R20 slouží k přivedení logické úrovně 1 na vstup vývodu MODE, což vybírá třívodičovou sběrnici pro komunikaci s mikrokontrolérem. Tato sběrnice je kompatibilní se sběrnicí SPI. Oscilátor pro obvod WM8731 je tvořen krystalem Q2 s rezonanční frekvencí 18,432 MHz spolu s kondenzátory C37 a C38. Použitý oscilátor ovlivňuje vzorkovací frekvence, které je možno používat k vzorkování nebo přehrávání zvuků pomocí kodeku WM8731. Zvolená hodnota dovoluje používat vzorkovací frekvence, odvozené od frekvence 48 kHz, která se používa v moderních zvukových kartách. Pro používání zvuků s vzorkovacími frekvencemi odvozenými od frekvence 44,1 kHz, která je používaná u Audio CD, by bylo nutno osadit oscilátor odlišným krystalem. Samozřejmě je také možno zvuky o odlišné vzorkovací frekvenci buď převzorkovat nebo interpolovat, který způsob bude použit už pak záleží na výpočetním výkonu obsluhujícího mikrokontroléru.
35
Propojení analogové části s příslušnými konektory je nakresleno na schématu zapojení v příloze B. Na mikrofonní vstup zvukového kodeku je přiveden jediný monofonní signál, kterým je analogový mikrofonní signál ze špičky konektoru X7 typu jack 3,5 mm stereo. Kroužek na konektoru jsem nezapojil z toho důvodu, aby bylo možno v univerzální desce použít jak mikrofonů, zakončených monofonním, tak také mikrofonů, zakončených stereofonním konektorem. Napájení mikrofonu proto přivádím přímo na špičku konektoru. Signál z mikrofonu k zvukovému kodeku prochází vstupním filtrem, který je tvořen odpory R22, R23, kondenzátorem C39 a vazebním kondenzátorem C40. Předpětí, které je potřebné pro elektretový mikrofon, je přiváděno z vývodu MICBIAS zvukového kodeku před odpor R21. Stereofonní linkový vstup je do zvukového kodeku přiváděn ze vstupního konektoru X6 typu jack 3,5 mm stereo. Zem konektoru je propojena se společnou zemí, levý a pravý kanál je získáván z odpovídajícího vývodu konektoru podle zapojení vývodu konektoru, uvedeného dříve v kapitole 3. Signál je na vstup kodeku přiváděn přes vstupní filtr, tvořený odpory R24 a R25 pro levý kanál, R26 a R27 pro pravý kanál, kondenzátory C41 pro levý kanál a C43 pro pravý kanál a přes vazební kondenzátory C42 pro levý a C44 pro pravý kanál. Linkový výstup je na konektor X8 typu jack 3,5 mm stereo, který je zapojen podle stejného rozmístění vývodů jako v předchozím případě, přiváděn přes výstupní filtr, který tvoří vazební kondenzátor C45 s odpory R28, R29 pro levý kanál a vazební kondenzátor C46 spolu s odpory R30, R31 pro pravý kanál. Sluchátkový výstup z koncového zesilovače je zapojen do konektoru X9. Výstupní filtr je tvořen vazebním kondenzátorem C47 a odporem R32 pro levý kanál, kondenzátorem C48 a odporem R33 pro pravý kanál. Zvukový kodek WM8731 není obsažen v žádné dostupné knihovně pro návrhový systém Eagle, tuto součástku jsem si proto v editoru knihoven přidal. Schématickou značku jsem nakreslil podle katalogového listu, rozmístění vývodů přiřadil jednotlivým vývodům standardního pouzdra typu SSOP, které se v knihovnách nachází a není je proto třeba kreslit.
4.2.12
Propojovací konektory
Ve schématu jsou dále zakresleny propojovací konektory. Jedná se o konektor pro propojení modulu mikrokontroléru se základní deskou, který je rozdělen do dvou částí. První z nich, konektor 2×25 pinů, nazvaný uP BUS, je ve schématu označen jako JP1. Na vývody tohoto konektory jsou přivedeny, kromě obou napájecích napětí 5 V a 3,3 V spolu se společnou zemí, také všechny signály z periferií. Druhý konektor, rovněž s počtem 2×25 pinů, je nazvaný uP GPIO. Ten je ve schématu označen jako JP2 a jsou z něj vyvedeny všechny vývody pro obecné použití, které nejsou připojeny k periferiím na základní desce. Vývody jsou připojeny na rozšiřující konektor, rozdělený do dvou konektorů GPIO 1 a GPIO 2 typu 2×20 a 2×15 pinů, ve schématu označených jako JP3 a JP4. Na vývody konektoru GPIO 1 jsou připojeny signály GPIO IO0 – GPIO IO39 z konektoru uP GPIO. Zbývající signály GPIO 40 – GPIO 53 jsou připojeny k části vývodů konektoru GPIO 2. Ke zbývajícím vývodům jsou připojeny jak obě napájecí napětí 3,3 V a 5 V a společná zem, tak také ostatní signály USB sběrnice, signály sběrnice SPI v napěťové úrovní 5V i v napěťové úrovni 3,3 V a také signál LCD LIGHT, který je v konektoru propojovacím kablíkem možno spojit s kterýmkoliv z vývodu GPIO IO.
36
4.3
Návrh modulu mikrokontroléru
Schéma zapojení modulu mikrokontroléru PIC18F4550 je uvedeno v příloze F. Protože napájecí zdroj a všechny periferie se nacházejí na základní desce, modul mikrokontroléru neobsahuje mnoho součástek. Jádro modulu mikrokontroléru tvoří mikrokontrolér Microchip PIC18F4550. K jeho zemnícím vývodům je připojena společná zem a na napájecí vývody je přivedeno napájeni 5 V, mezi které jsou zapojeny keramické blokovací kondenzátory C1 a C2. Pro zdroj napětí USB rozhraní v mikrokontroléru je mezi společnou zem a vývod VUSB zapojen keramický kondenzátor C5. Napájení modulu mikrokontroléru je signalizováno LED diodou LED1, která je ke zdroji napětí 5 V připojena přes omezovací odpor R1. Pro zdroj hodinového kmitočtu je k vývodům oscilátoru připojen krystal Q1, na jehož vývody jsou proti zemi zapojeny keramické kondenzátory C3 a C4. Dvojice LED diod LED2 a LED3 pro indikaci běhu mikrokontroléru, pokud modul pracuje samostatně, je připojena mezi vývody RD0 (RD1) a společnou zem. Proud, procházející LED diodami, je omezen odpory R4 a R5, zapojenými sériově k LED diodám. S LED diodami jsou sdíleny sloupce z řádkové klávesnice kvůli tomu, že všechny vstupně výstupní piny procesoru jsou využity. Propojka JP2 je zapojena mezi vývod PGM a zem, jejím spojením přejde mikrokontrolér do režimu, ve kterém je možno jej programovat pomocí ICSP rozhraní. Propojka je zároveň sdílena se signálem GPIO IO1. Mezi vývod RB4 a společnou zem je zapojeno tlačítko S1, logické úrovně vývodu RB4 jsou ošetřeny zdvihovým odporem R2. Tlačítko S1 je možno používat libovolně, na vývod RB4 je zapojeno proto, protože ve firmware od firmy Microchip je použito uzemnění vývodu RB4 ke vstupu do bootloaderu. Zároveň je na tomto vývodu sdílen signál GPIO IO0. Pro programování pomocí ICSP rozhraní je modul osazen konektorem JP1 ke kterému je přivedena společná zem. Z konektoru JP1 je bráno napájecí napětí 5 V, které je zapojeno paralelně k napájecímu napětí ze základní desky. Nejen z tohoto důvodu by tedy ICSP rozhraní nemělo být používáno pokud je modul připojen k základní desce. Vývody PGD a PGC jsou přivedeny na vývody DATA a CLK ICSP konektoru, zároveň jsou sdíleny se sloupci řádkové klávesnice. Programovací napětí VPP z konektoru ICSP je přivedeno na vývod MCLR/VPP mikrokontroléru IC1. K tomuto vývodu je dále připojen proti napájecímu napětí zdvihový odpor R3, spolu s diodou D1. Proti zemi je připojeno tlačítko RESET. Dioda je použita kvůli tomu, aby se na napájecím napětí 5 V při programování přes ICSP rozhraní nedopatřením neobjevilo napětí 12 V. Je použita Schottkyho dioda proto, aby na ní byl co nejmenší úbytek napětí a na vývodu tak byla definována logická úroveň. Větší úbytek napětí by teoreticky mohl způsobovat náhodné resety mikrokontroléru. Na modulu jsou dále konektory JP3 a JP4 pro spojení se základní deskou. Jejich vývody jsou propojeny s vstupně výstupními porty mikrokontroléru podle toho, která rozhraní mikrokontrolér podporuje.
37
Kapitola 5
Závěr Ve své práci jsem se věnoval přehledu mikrokontrolérů, popisu rodiny mikrokontrolérů Microchip PIC a navrhl vlastní systém univerzální vývojové desky, jejích komponent a periferií. Mnou navrženou desku lze použít s různými typy mikrokontrolérů, je osazena moderními periferiemi, které mohou být použity i v reálných zapojeních. Během diplomové práce se povedlo jak vybrat jednotlivé komponenty a periferie pro vývojovou desku, tak také navrhnout potřebné konektory pro vlastní rozhraní. Pro základní desku i modul mikrokontroléru PIC18F4550 byla navržena obvodová schémata zapojení, ze kterých byly dále vytvořeny desky plošných spojů. Pro představivost a vhodný návrh rozložení součástek byly dále vytvořeny 3D modely osazených desek plošných spojů, které jsou také prezentovány v mé práci. Desky již nebyly do závěru diplomové práce fyzicky vyrobeny a proto je možno, že z jejich prvních fyzických realizací by vzešly poznatky a náměty pro další úpravy ať už v schématu zapojení nebo rozvržení součástek na deskách plošných spojů z funkčních nebo manipulačních důvodů. Vývojová deska představuje určitý kompromis v návrhu, zejména mezi počtem a typem periferií, omezením počtu vývodů podporovaných mikrokontrolérů a technologií, která je dána jak použitými propojovacími konektory, tak také technologií výroby DPS. Určitě by bylo možno desku rozšířit o další rozhraní, konektory nebo dále pozměnit, můj návrh představuje jedno z možných řešení. Prostor pro další rozšíření je ale ve vytvoření SW podpory pro univerzální desku, zahrnující jak jednotlivé knihovny pro konkrétní moduly mikrokontroléru pro používané programovací jazyky (assembler, C,) tak by také bylo možno vytvořit např. systém, který by dovolil popsat rozhraní modulu mikrokontroléru. Z tohoto popisu by pak bylo možno automaticky generovat jak zapojení propojovacího konektoru mezi modulem mikrokontroléru a základní deskou, tak také softwarové knihovny. SW podpora není v mé práci řešena. Závěrem proto doufám, že má práce bude užitečná každému, kdo by měl o podobný vývojový systém zájem, případně chtěl toto téma dále rozvíjet.
38
Literatura [1] Hrbáček J.: Komunikace mikrokontroléru s okolím - 1. díl.BEN, 2002 [2] Microchip Technology New Product Information. Microchip Technology Inc. 2009 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId= 2551 [3] Online katalog firmy Farnell, 2009 http://cz.farnell.com [4] PIC18F2455/2550/4455/4550 Data sheet. Microchip Technology Inc. 2007 http:// ww1.microchip.com/downloads/en/DeviceDoc/39632D.pdf [5] ENC28J60 Stand-Alone Ethernet Controller with SPI Interface. Microchip Technology Inc. 2008 http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf [6] MAX232 dual driver/receiver. Texas Instruments 2004 http://focus.ti.com/lit/ ds/symlink/max232.pdf [7] Portable Internet Audio CODEC with Headphone Driver and Programmable Sample Rates. WOLFSON MICROELECTRONICS 2005 [8] 4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR WITH AUTOMATIC DIRECTION SENSING. Texas Instruments 2008 [9] PIC18F97J60 Family Data Sheet. Microchip Technology Inc. 2008 [10] Dot Matrix Liquid Crystal Display Controller/Driver. Hitachi. http://web.media. mit.edu/~ayah/documents/hd44780u.pdf
39
Dodatek A
Obsah přiloženého CD Následující tabulka shrnuje obsah přiloženého CD s elektronickými přílohami. download/ Eagle3D/ datasheet/ src/ eagle/ eagle3D/ vykresy/ 3d/ dps/ schema/ text/
soubory stažené z internetu použitá verze 3D renderu pro systém Eagle katalogové listy použitých součástek zdrojové soubory schémata a DPS pro návrhový systém Eagle skripta pro Eagle3D a POV-Ray render výsledné obrázky navržené vývojové desky 3D modely osazených DPS obrazy DPS a rozmístění součástek schěmata vývojové desky a modulu zdrojový text diplomové práce pro LaTeX
40
Dodatek B
Schéma základní desky
41
Obrázek B.1: Schéma základní desky – zdroj, 5 V větev, I/O konektory
42
Obrázek B.2: Schéma základní desky – 3,3 V větev, SPI rozhraní
43
Obrázek B.3: Schéma základní desky – sběrnice, audio rozhraní
44
Dodatek C
DPS základní desky
45
Obrázek C.1: DPS základní desky – strana součástek
46
Obrázek C.2: DPS základní desky – strana spojů
47
Dodatek D
Rozmístění součástek na DPS základní desky
Obrázek D.1: Rozmístění součástek na DPS základní desky
48
Dodatek E
Soupis součástek pro základní desku Označení C1 C2 - C9 C10 - C13 C14, C15 C16 C17, C18 C19 C20, C21 C22 - C29 C30 C31 C32, C33 C34 C35 C36 C37, C38 C39 C40 C41 C42 C43 C44 - C46 C47, C48 C49 - C53 D1 F1 IC1 IC2 IC3 IC4 IC5 - IC7
Hodnota Pozámka 470uF/16V #_SMD_POUZDRAF 100n C-EUC0603 1uF/25V #_SMS_POUZDRAA 1n C-EUC0603 10uF #_SMS_POUZDRAA 22p C-EUC0603 100n C-EUC0603 10uF #_SMS_POUZDRAA 100n C-EUC0603 1uF/25V #_SMS_POUZDRAA 10uF #_SMS_POUZDRAA 100n C-EUC0603 10uF #_SMS_POUZDRAA 100n C-EUC0603 10uF #_SMS_POUZDRAA 22p C-EUC0603 220p C-EUC0603 1uF #_SMS_POUZDRAA 220p C-EUC0603 1uF #_SMS_POUZDRAA 220p C-EUC0603 1uF #_SMS_POUZDRAA 220uF #_SMS_POUZDRAD 100n C-EUC0603 11V SUPPRESSOR-SMBJ PolySwitch PFRA.075 TE5 7805 7805T LF33CV 7806T MAX232ECWE MAX232ECWE ENC28J60SO ENC28J60SO TXB104D TXB104D
49
C_EL-SMD_F C0603 A C0603 A C0603 C0603 A C0603 A A C0603 A C0603 A C0603 C0603 A C0603 A C0603 A D C0603 SMBJ TE5 TO220H TO220H SO16L SO28W SOIC(D)-14
IC8 J1 J2 J3 JP1 JP2 JP3 JP4 KK1 KK2 L1 L2 LED1 LED2 Q1 Q2 Q3 R1 - R3 R4, R5 R6 - R9 R10 R11 - R14 R15, R16 R17 R18 R19, R20 R21 R22 R23 R24 - R27 R28 R29 R30 R31 R32, R33 R34 R35 R36, R37 R38 - R41 R42 S1 SV1 SV2 U1, U2 X1 X2 X3 X4
WM8731 7 - 9V DC IN LAN int. LAN SPI uP_BUS uP_GPIO GPIO_1 GPIO_2 D0A-L D0A-L
5V POWER (green) 3V3 POWER (yellow) 25 MHz 18.432 Mhz BC807 270 75 49.9 180 49.9 75 180 2k32 10k 680 40k2 47k 5k6 47k 100 47k 100 47k 180 8k2 2k2 4k7 2k2 LCD backlight KEYB LCD 749090010 USB-A USB-B PS/2 RS-232
WM8731 SSOP28 JACK-PLUG1 SPC4078 0569564-1 0569564 0569564-1 0569564 PINHEAD_PINHD-2X25 PINHEAD_2X25 PINHEAD_PINHD-2X25 PINHEAD_2X25 PINHD-2X20 2X20 PINHD-2X15 2X15 D0A-L D02A-L D0A-L D02A-L WE-CBF_0805 0805 WE-CBF_0805 0805 LEDCHIP-LED0603 CHIP-LED0603 LEDCHIP-LED0603 CHIP-LED0603 CRYSTALHC49S HC49/S CRYSTALHC49S HC49/S BC807-40SMD SOT23-BEC R-EU_R0603 R0603 R-EU_R0805 R0805 R-EU_R1206 R1206 R-EU_R0603 R0603 R-EU_R1206 R1206 R-EU_R0805 R0805 R-EU_R0603 R0603 R-EU_R1206 R1206 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0805 R0805 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-EU_R0603 R0603 R-TRIMM3165W RTRIM3165W R-EU_R0603 R0603 R-EU_R0603 R0603 P-B1720 P-B1720 ML10 ML10 ML16 ML16 WE-LAN_10/100_BASETX_749090010 PN87520 PN87520 PN61729 PN61729 MD06SS MDIN06SS F09HP F09HP 50
X5 X6 X7 X8 X9
MMC/SD LINE IN MIC IN LINE OUT HEADPHONE
SDCARDVAR1 1503_09 1503_09 1503_09 1503_09
51
SDCMF-10915W010 1503_09 1503_09 1503_09 1503_09
Dodatek F
Schéma modulu mikrokontroléru PIC18F4550
52
Obrázek F.1: Schéma modulu mikrokontroléru PIC18F4550
53
Dodatek G
DPS modulu mikrokontroléru
Obrázek G.1: DPS modulu mikrokontroléru – strana součástek
54
Obrázek G.2: DPS modulu mikrokontroléru – strana spojů
55
Dodatek H
Rozmístění součástek na DPS modulu mikrokontroléru
Obrázek H.1: Rozmístění součástek na DPS modulu mikrokontroléru – strana součástek
56
Obrázek H.2: Rozmístění součástek na DPS modulu mikrokontroléru – strana spojů
57
Dodatek I
Soupis součástek pro modul mikrokontroléru Označení C1, C2 C3, C4 C5 D1 IC1 JP1 JP2 JP3 JP4 LED1 LED2 LED3 Q1 R1 R2 R3 R4, R5 S1 S2
Hodnota 100n 15p 470n PIC18F4550
20 MHz 270 4k7 2k2 270
Pozámka keramický kondenzátor SMD 0805 keramický kondenzátor SMD 0805 keramický kondenzátor SMD 1206 Schottkyho dioda SMD SOD123 mikrokontrolér PIC18F4550 v pouzdře TGFP pinheader konektor PINHD-1X6 jumper 2,54 mm pinheader konektor PINHEAD_PINHD-2X25 pinheader konektor PINHEAD_PINHD-2X25 LED dioda SMD 0603 zelená LED dioda SMD 0603 oranžová LED dioda SMD 0603 oranžová krystal HC49/S odpor SMD 0603 odpor SMD 0603 odpor SMD 0603 odpor SMD 0603 mikrospínač P-B1720 mikrospínač P-B1720
58
Dodatek J
3D modely osazených DPS
Obrázek J.1: 3D model základní desky
59
Obrázek J.2: 3D model modulu mikrokontroléru PIC18F4550
60
Dodatek K
LCD display a maticová klávesnice
Obrázek K.1: Provedení LCD displaye
61
Obrázek K.2: Provedení maticové klávesnice
62