Hlavní navigace

Použití mikrořadičů s jádrem Cortex-M na reálných čipech

23. 10. 2015
Doba čtení: 16 minut

Sdílet

Na předchozí články, v nichž jsme si popsali základní vlastnosti jader Cortex-M, navážeme článkem dnešním, v němž se budeme věnovat stručnému popisu vlastností některých reálných čipů, které tato jádra obsahují. Začneme samozřejmě těmi čipy, v nichž je použito jádro Cortex-M0 či novější Cortex-M0+.

Obsah

1. Použití mikrořadičů s jádrem Cortex-M na reálných čipech

2. Mikrořadiče řady LPC81×M

3. Základní součásti čipů LPC81×M

4. GPIO

5. USART

6. Rozhraní sběrnice SPI

7. Sběrnice I2C

8. Mikrořadiče firmy Freescale založené na jádrech Cortex-M

9. Mikrořadiče Kinetis KL02

10. Moduly mikrořadiče Kinetis KL02

11. Obsah následující části seriálu

12. Odkazy na Internetu

1. Použití mikrořadičů s jádrem Cortex-M na reálných čipech

V prvních třech částech miniseriálu o mikroprocesorech a mikrořadičích s architekturou ARM jsme si popsali základní vlastnosti mikrořadičových jader Cortex-M0, Cortex-M0+, dále pak poněkud výkonnější jádra Cortex-M3 a nakonec i prozatím nejvýkonnější řadu mikroprocesorových jader Cortex-M7 (příště si navíc popíšeme i řadu Cortex-M4, která se v mnoha ohledech podobá jádrům Cortex-M7).

Nicméně jsme se prozatím podrobněji nezabývali tím, kde se vlastně tato jádra používají. Připomeňme si, že společnost ARM namísto výroby vlastních mikroprocesorů a mikrořadičů prodává licence dalším výrobcům, kteří tak mohou jádra ARM relativně snadno (a především rychle) použít na čipech s dalšími zařízeními, což mohou být v případě mikrořadičů různé převodníky (A/D, D/A, zejména pak PWM jako jedna z variant D/A převodníku), sběrnice (SPI, I2C), porty (sériový port UART či jeho varianta USART) a samozřejmě taktéž GPIO, tj. sada vstupně-výstupních pinů ovladatelných přímo z aplikace.

Popis mikrořadičů založených na jádrech Cortex-M samozřejmě musí začít u těch nejmenších jader, tedy konkrétně u jader Cortex-M0 a dnes taktéž u Cortex-M0+. Tato jádra nalezneme hned v několika čipech, z nichž jsem si pro ilustraci možností vybral čip Kinetis KL02 vyráběný společností Freescale Semiconductor a dále pak čipy řady LPC81×M (za x se doplňuje číslice), za jejichž návrhem a výrobou stojí další známá společnost NXP Semiconductors. Na tomto místě je vhodné poznamenat, že pochopitelně existují i další výrobci mikrořadičů používajících jádra Cortex-M0 či Cortex-M0+, například Atmel s čipy SAM D20. Kinetis KL02 byl vybrán z toho důvodu, že se má (alespoň podle reklamy :-) jednat o zcela nejmenší integrovaný obvod s jádrem ARM (což už dnes pravděpodobně neplatí), LPC81×M zase proto, že jedna z variant tohoto čipu se dodává v pouzdru DIL s pouhými osmi vývody, což zdárně konkuruje některým variantám osmibitových mikrořadičů PIC (ty dokonce existují i ve verzi se šesti vývody, takže se vlastně jedná spíše o programovatelnou elektronickou součástku).

2. Mikrořadiče řady LPC81×M

Nejprve se budeme zabývat stručným popisem mikrořadičů řady LPC81×M, které jsou založeny na ARMovském jádře Cortex-M0+ s maximální hodinovou frekvencí 30 MHz. Od hodinové frekvence jsou odvozeny i vlastnosti dalších modulů na mikrořadiči, například maximální přenosová rychlost dosažitelná při použití sběrnice SPI atd. V současnosti v řadě LPC81×M existuje hned několik mikrořadičů, jejichž základní vlatnosti jsou vypsány v tabulce pod tímto odstavcem:

Označení SRAM Flash USART I2C SPI Komparátor GPIO Pouzdro
LPC810M021FN8 1kB 4kB 6 DIP8
LPC811M001JDH16 2kB 8kB 14 TSSOP16
LPC812M101JDH16 4kB 16kB 14 TSSOP16
LPC812M101JD20 4kB 16kB 18 SO20
LPC812M101JDH20 4kB 16kB 18 TSSOP20
LPC812M101JTB16 4kB 16kB 14 XSON16

Poznámka: to, že se například do pouzdra DIL8 (tedy pouzdra s pouhými osmi piny) dokázal vměstnat mikrořadič se šesti GPIO, sériovým portem, SPI atd. je umožněno díky sdílení funkce pinů. Programátor si tedy může zvolit, zda například „obětuje“ tři piny pro realizaci SPI či zda tyto tři piny bude ovládat programově přes GPIO.

3. Základní součásti čipů LPC81×M

Přímo na mikrořadičích LPC81×M jsou umístěny tři typy pamětí mapovaných do jediného 32bitového adresního prostoru (což ostatně u mikroprocesorů ARM očekáváme). Jedná se o statickou RAM s kapacitou jeden kilobajt až čtyři kilobajty (což je pro mnoho aplikací více než dostatečné), dále pak o Flash paměť s kapacitou od čtyř kilobajtů do 16kB a nesmíme zapomenout ani na paměť ROM s kapacitou osmi kilobajtů. Obsah této paměti je neměnný (nejde o Flash, EPROM ani o EEPROM) a již od výrobce se zde nachází bootloader a další důležité a často používané rutiny pro ovládání sériových portů a sběrnic. Dále se do 32bitového adresního prostoru mapují i řídicí registry periferních zařízení (zde se konkrétně využívá již v tomto seriálu zmíněná podpora pro bitové operace). Nesmíme zapomenout ani na další typický prvek rodiny Cortex-M: 24bitový časovač SysTick, který při správně naprogramované přerušovací rutině může být použit pro relativně přesné ovládání GPIO atd.

Čipy LPC81×M obsahují i několik rozhraní a sběrnic určených pro sériový přenos dat:

Rozhraní Počet Popsáno v kapitole
USART max 3× 5
SPI 6
I2C 7

4. GPIO

Podle zvoleného typu čipu z řady LPC81×M má programátor k dispozici šest až osmnáct GPIO. Jedná se o piny, u nichž je možné nastavit režim jejich práce, tj. to, zda se jedná skutečně o GPIO či zda budou piny součástí USARTu, SPI či I2C. Pokud je zvoleno, že pin bude používán jako GPIO, lze programově zvolit směr přenosu dat (čtení/zápis), připnout k pinu rezistor pull-up či naopak pull-down a pokud má změna stavu vstupního pinu generovat přerušení, lze nakonfigurovat, zda se má detekovat hrana (náběžná, sestupná) či naopak úroveň (nula, jednička).

Piny, resp. přesněji řečeno jejich stav, jsou mapovány přes interní IO sběrnici přímo do jádra mikrořadiče, což umožňuje provést přečtení či změnu hodnoty vybraného pinu v jediném hodinovém cyklu. Teoretická rychlost přepínání úrovně na vybraném pinu je tedy 15 MHz při použití hodinové frekvence 30 MHz, samozřejmě za předpokladu, že nebude docházet k přerušení atd. Ovšem i když je reálná rychlost čtení/přepínání stavu poněkud nižší, stále je dostatečně velká na to, aby se daly čistě programově ovládat i složitější zařízení (krokové motory, teoreticky i PWM apod).

5. USART

Kromě GPIO je možné vybrané piny nakonfigurovat takovým způsobem, že budou tvořit sériový port USART, což je vlastně klasický UART, který je však možné nakonfigurovat i do synchronního režimu (používají se vodiče TXD, RXD, volitelně i RTS a CTS). V asynchronním režimu dosahuje maximální přenosová rychlost 1,875 Mbit/s, v režimu synchronním až 10 Mbit/s. Programátor si může zvolit formát přenosu dat, zejména počet bitů (7, 8, 9), počet stop bitů v asynchronním režimu (1 či 2) a navíc lze použít i konfigurovatelný generátor paritního bitu (žádná parita, sudá parita, lichá parita). Buffery pro čtení a zápis jsou od sebe oddělené a v paměti ROM jsou uloženy rutiny, které dokážou s portem UART či USART pracovat (není tedy zapotřebí psát posté tu samou rutinu pro příjem bajtů :-). Všechny čipy LPC81×M obsahují dva USARTy (USART0 a USART1), poslední dva čipy s 14 či 18 vývody (LPC812M101JDH16 a LPC812M101JDH20) pak navíc ještě třetí sériový port USART2.

6. Rozhraní sběrnice SPI

Sběrnice SPI (celým názvem Serial Peripheral Interface) představuje jednu z forem sériových externích sběrnic sloužících pro vzájemné propojení dvou či většího množství komunikujících uzlů, přičemž jeden uzel obvykle vystupuje v roli takzvaného řadiče sběrnice (master) a ostatní uzly pracují v režimu slave. Uzel, který pracuje jako master, obsahuje generátor hodinového signálu, který je rozveden do všech ostatních uzlů, čímž je umožněn zcela synchronní (navíc ještě obousměrný) přenos dat. Hodinový signál je rozváděn vodičem označovaným symbolem SCK.

Kromě vodiče s hodinovým signálem jsou komunikující uzly propojeny dvojicí vodičů označovaných většinou symboly MISO (Master In, Slave Out) a MOSI (Master Out, Slave In), pomocí nichž se obousměrně (full duplex) přenáší data. Posledním signálem, který se u této sběrnice používá, je signál SSEL (Slave Select), jenž slouží – jak již jeho název napovídá – k výběru některého uzlu pracujícího v režimu slave. Všechny čtyři signály – SCK, MISO, MOSISSEL, pro svoji funkci vyžadují pouze jednosměrné porty, což přispívá k jednoduché a především levné implementaci této sběrnice (ovšem u dnes popisovaných čipů jsou všechny I/O piny obousměrné).

Poznámka: u popisovaných mikrořadičů se nachází rozhraní pro dvě od sebe oddělené sběrnice SPI a z tohoto důvodu se příslušné piny označují SPI0_CLK, SPI0_MOSI, SPI0_MISO, SPI0_SSEL pro první sběrnici a SPI1_CLK, SPI1_MOSI, SPI1_MISO a SPI1_SSEL pro sběrnici druhou.

Sběrnice SPI se kvůli své implementační jednoduchosti používá v mnoha různých systémech, například pro komunikaci s některými typy pamětí EEPROM (označovanými také jako „sériové“ paměti), textovými i grafickými LCD panely, A/D a D/A převodníky, hodinami reálného času (RTC) atd. Podpora pro SPI je zabudována také do mnoha mikrořadičů, zejména se to týká známé a populární řady mikrořadičů Motorola 68HC11, AVR a PIC16×xx (například se jedná o PIC16F873 a jeho varianty). Pro jednosměrnou komunikaci, při které se do uzlu pouze vysílají či naopak čtou data, však lze použít i pouhopouhý posuvný registr či sériově zapojenou sadu několika posuvných registrů, což je velmi jednoduchá a také levná metoda, jak pomocí mikrořadiče ovládat okolní zařízení (před mnoha lety jsme pomocí již zmíněného mikrořadiče Motorola 68HC11, dvou osmibitových posuvných sérioparalelních registrů a čtyř sedmisegmentových LED číslic vytvořili poměrně přesný digitální otáčkoměr pro Škodu 105 a 120, na vstupu SPI byly naopak zapojeny přepínače, které funkci otáčkoměru řídily).

Mezi největší přednost sběrnice SPI patří její značná jednoduchost a tím i snadnost implementace. Jednoduché je jak elektrické rozhraní sběrnice (jednosměrné piny kompatibilní s technologií TTL, čemuž dnes odpovídají i integrované obvody využívající technologii CMOS), tak i přenosový protokol. Ve své podstatě totiž není SPI nic jiného než několik externě propojených posuvných registrů, přičemž posun je řízen jednotným hodinovým signálem. Jednoduchost přenosového protokolu vyplývá i z toho, že data jsou přenášena obousměrně po samostatných vodičích, takže není nutné řešit přepínání mezi vysíláním a příjmem, jako tomu bylo u některých sběrnic používajících poloduplexní přenos dat, i u dále popsané sběrnice I2C. I přenosová rychlost je pro mnoho účelů dostatečně vysoká. Hodinová frekvence, z níž se odvozuje bitová rychlost (bitrate), se v běžných případech pohybuje v rozsahu 1 MHz až 10 MHz, při dodržení dostatečně malé kapacity spoje je však možné použít i poměrně vysokou frekvenci až 70 MHz, což odpovídá 140×106 obousměrně přeneseným bitům za sekundu.

Jak tedy vypadá konkrétní řešení sběrnice SPI v čipech LPC81×M? Jak jsme si již naznačili v předchozích odstavcích, je možné použít dvě od sebe oddělené sběrnice SPI0 a SPI1, přičemž lze zvolit, zda mikrořadič bude pracovat v roli řadiče sběrnice (mastera) či v režimu slave. Při použití režimu master může maximální přenosová rychlost dosáhnout hodnoty až 30Mbit/s, v režimu slave pak stále slušných 25 Mbit/s. Zajímavá je i možnost volby počtu bitů posuvného registru: programátor může zvolit jakoukoli hodnotu mezi jedním až šestnácti bity, přičemž pro mnoho aplikací se používá osm bitů (proč je tato volba důležitá? po přijetí zvoleného počtu bitů se vyvolá přerušení a uživatelský program může přečíst načtená data a současně do registru uložit slovo, které se má přenést). Podobně, jako je tomu v případě USARTu či I2C, je i sběrnice SPI podporována rutinami uloženými v ROM.

7. Sběrnice I2C

Další populární sběrnicí použitou mj. i na čipech LPC81×M, je sběrnice označovaná poněkud neobvykle symbolem I2C, což je zkratka z celého názvu Inter-Integrated Circuit. V určitých ohledech se jedná o sběrnici podobnou SPI (existence hodinového signálu, jediný uzel typu master), ovšem některé vlastnosti těchto sběrnic jsou odlišné. Zatímco u sběrnice SPI byl umožněn obousměrný přenos dat díky použití dvojice vodičů MISO a MOSI, je sběrnice I2C vybavena „pouze“ jedním datovým vodičem označeným SDA, z čehož vyplývá, že se data přenáší poloduplexně. Také to znamená poněkud složitější interní strukturu všech připojených zařízení, protože příslušné piny musí být možné přepínat ze vstupního režimu na režim výstupní.

Zajímavostí a současně i dalším rozdílem oproti SPI je, že v I2C není použit výběr zařízení typu slave pomocí zvláštních signálů, protože každému uzlu je přiřazena jednoznačná adresa – kromě elektrických charakteristik je totiž přesně stanoven i komunikační protokol, což je další rozdíl oproti výše popsané sběrnici SPI. Obecně je možné říci, že I2C je sice poněkud složitější, ale zato flexibilnější sběrnice, která se velmi často používá i pro komunikaci na delší vzdálenosti (řádově metry, viz například DDC u monitorů), než tomu je u sběrnice SPI.

Na čipech LPC81×M je realizována jedna sběrnice I2C, přičemž její maximální přenosová rychlost může dosahovat až 400 kbit/s. Programátor si může zvolit režim práce mikrořadiče při použití této sběrnice, především to, zda bude pracovat v roli master či slave. Je podporováno i adresování s využitím desetibitové adresy (adresní prostor je v referenční implementaci buď sedmibitový nebo právě desetibitový). Možná ještě důležitější však je možnost využití již odladěných programových rutin určených pro práci s I2C; tyto rutiny jsou součástí ROM s kapacitou 8kB, o níž jsme se zmínili výše.

8. Mikrořadiče firmy Freescale založené na jádrech Cortex-M

Společnost Freescale Semiconductor, která mimochodem patří mezi jednu z nejstarších firem zabývajících se výrobou polovodičových elektronických součástek, má s výrobou mikroprocesorů a mikrořadičů dlouhodobé zkušenosti, ostatně právě zde se vyráběl slavný osmibitový mikroprocesor Motorola 6800 či ještě slavnější 32bitový čip Motorola 68000 (68k). Tato firma má dnes ve svém portfoliu hned několik ucelených sérií čipů založených na jádrech Cortex-M. Tyto série spadají do skupiny integrovaných výrobků s názvem Kinetis Cortex-M. Jedná se například o sérii označenou písmenem „L“ obsahující čipy s jádrem Cortex-M0+ („L“ znamená Ultra-Low Power), dále pak o sérii „EA“ určenou pro automobilový průmysl (taktéž je zde použito jádro Cortex-M0+), sérii „V“ s čipy určenými pro řízení motorů, sérii „W“ s různě výkonnými čipy nabízejícími bezdrátovou komunikaci a v neposlední řadě taktéž sérii „MINI“, v níž se nachází nejmenší čipy s jádry Cortex (menší velikost byla dosažena použitím odlišných pouzder bez pinů).

9. Mikrořadiče Kinetis KL02

Zaměřme se nyní podrobněji na sérii „L“ obsahující celkem pět řad mikrořadičů, které se liší jak kapacitami RAM a Flash (ROM), tak i nabízenými rozhraními. I přesto, že se u těchto mikrořadičů dbá na co nejmenší spotřebu, se jedná o poměrně výkonné čipy, protože jejich jádro Cortex-M0+ používá maximální hodinovou frekvenci 48 MHz. Další parametry těchto mikrořadičů taktéž naznačují, že tyto čipy se budou používat v náročnějších aplikacích, než například osmibitové mikrořadiče PIC (10, 12, 16, 18) či řada 8051. Ostatně se podívejme na následující tabulku s parametry mikrořadičů spadajících do zmíněných pěti řad KL0×KL4×:

Řada SRAM Flash I2S USB LCD A/D D/A
KL0× 1–4kB 8–32kB ne ne ne 12bit 12bit
KL1× 4–32kB 32–256kB ano ne ne 16bit 12bit
KL2× 4–32kB 32–256kB ano ano ne 16bit 12bit
KL3× 4–32kB 32–256kB ano ne ano 16bit 12bit
KL4× 16–32kB 128–256kB ano ano ano 16bit 12bit

Z tabulky je patrné, že řada KL0× obsahuje čipy s nejmenšími kapacitami statické RAM i paměti Flash. Navíc tyto čipy neobsahují piny sběrnice I2S (pozor, nejedná se o I2C, ale skutečně o rozdílnou sběrnici používanou zejména při přenosu audio signálů) a analogovo-digitální převodník je jen dvanáctibitový (což ovšem pro mnoho aplikací plně dostačuje). Naproti tomu je zajímavé sledovat rozdíly mezi řadami KL1×, KL2× a KL3×: ty spočívají v rozdílné podpoře rozhraní pro USB a pro LCD, ostatní parametry zůstávají zachovány.

10. Moduly mikrořadiče Kinetis KL02

Kromě statické RAM a paměti Flash obsahují čipy řady KL02 (tedy nejnižší řady zmíněné v předchozí tabulce) následující moduly a periferní zařízení:

  1. Až 18 pinů, které je možné nakonfigurovat jako programově řízenéGPIO, pokud jsou piny vstupní, může změna úrovně vyvolat přerušení (viz též kapitolu číslo 4 popisující piny s podobnou charakteristikou).
  2. Jednu sběrnici SPI (viz též kapitolu číslo 6).
  3. Dvě sběrnice I2C (viz též kapitolu číslo 7)
  4. Jeden sériový port UART.
  5. Dvanáctibitový A/D převodník.
  6. (Analogový) napěťový komparátor.
  7. Modul umožňující realizovat PWM (pulzně-šířkovou modulaci).
  8. Šestnáctibiový čítač (ten na vstupu děličky používá frekvenci 24 MHz, tj. polovinu frekvence jádra CPU).
  9. Watchdog.
  10. Interní zdroj hodinového signálu.

Poznámka: technická specifikace uvádí 28 pinů a nikoli 18 pinů, ovšem to platí pouze pro mikrořadiče umístěné v pouzdru 32 QFN, můžeme se ovšem setkat i s mikrořadiči v pouzdrech 16 QFN a 24 QFN.

UX DAy - tip 2

Poznámka2: pro bastlíře se může hodit tento konvertor: http://www.instrumentcenter­.se/en/motorolafreescale-mcu/elnec-dil48qfn24-zif-kinetis-1–70–3207.php, pokud tedy nedají přednost jiným čipům umístěným v DIL.

11. Obsah následující části seriálu

V navazující části seriálu o jádrech ARM patřících do rodiny Cortex-M se zaměříme na popis jader Cortex-M4, které se v mnoha ohledech podobají již popsaným jádrům Cortex-M7. Dále se seznámíme s dalšími konkrétními mikrořadiči založenými na těchto jádrech a kromě toho si popíšeme i některé jednodeskové mikropočítače s Cortexy. Uvidíme, že soudobá nabídka je v této oblasti skutečně velká a kromě čistě komerčně zaměřených výrobků mířících například do průmyslu zde nalezneme například i mikropočítače směřující do segmentu „domácích bastličů“ či dokonce mikropočítače, které se používají ve výuce. Dobrým příkladem posledních dvou zmíněných skupin může být populární Arduino Due či další britský příspěvek školství: počítač Micro Bit (taktéž známý pod jménem BBC Micro Bit či micro:bit).

12. Odkazy na Internetu

  1. Freescale Semiconductor (oficiální stránky)
    http://www.freescale.com/
  2. Freescale Semiconductor (Wikipedia)
    https://en.wikipedia.org/wi­ki/Freescale_Semiconductor
  3. Blokový diagram čipů řady KL0×
    http://www.freescale.com/we­bapp/sps/components/hot.jsp?i­mage=http://cache.freesca­le.com/files/graphic/bloc­k_diagram/KL0_BD.jpg&code=KL0&im­gType=ProductBlock&fasp=un­defined&fpsp=true
  4. A tour of the Cortex-M3 core:
    http://community.arm.com/grou­ps/processors/blog/2013/11/04/a-tour-of-the-cortex-m3-core
  5. Five things you may not know about ARM Cortex-M:
    http://community.arm.com/docs/DOC-6912
  6. Divide and Conquer:
    http://community.arm.com/docs/DOC-8059
  7. MCU market turns to 32-bits and ARM
    http://www.eetimes.com/do­cument.asp?doc_id=1280803
  8. Cortex-M0 Processor (ARM Holdings)
    http://www.arm.com/produc­ts/processors/cortex-m/cortex-m0.php
  9. Cortex-M0+ Processor (ARM Holdings)
    http://www.arm.com/produc­ts/processors/cortex-m/cortex-m0plus.php
  10. ARM Processors in a Mixed Signal World
    http://www.eeweb.com/blog/arm/arm-processors-in-a-mixed-signal-world
  11. ARM Architecture (Wikipedia)
    https://en.wikipedia.org/wi­ki/ARM_architecture
  12. Cortex-M0 (Wikipedia)
    https://en.wikipedia.org/wi­ki/ARM_Cortex-M0
  13. Cortex-M0+ (Wikipedia)
    https://en.wikipedia.org/wi­ki/ARM_Cortex-M#Cortex-M0.2B
  14. Improving ARM Code Density and Performance
    New Thumb Extensions to the ARM Architecture Richard Phelan
  15. The ARM Processor Architecture
    http://www.arm.com/produc­ts/processors/technologies/in­struction-set-architectures.php
  16. Thumb-2 instruction set
    http://infocenter.arm.com/hel­p/index.jsp?topic=/com.ar­m.doc.ddi0344c/Beiiegaf.html
  17. Introduction to ARM thumb
    http://www.eetimes.com/dis­cussion/other/4024632/Intro­duction-to-ARM-thumb
  18. ARM, Thumb, and ThumbEE instruction sets
    http://www.keil.com/suppor­t/man/docs/armasm/armasm_CEG­BEIJB.htm
  19. An Introduction to ARM Assembly Language
    http://dev.emcelettronica­.com/introduction-to-arm-assembly-language
  20. Processors – ARM
    http://www.arm.com/produc­ts/processors/index.php
  21. The ARM Instruction Set
    http://simplemachines.it/doc/ar­m_inst.pdf
  22. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  23. Serial Peripheral Interface Bus
    http://en.wikipedia.org/wi­ki/Serial_Peripheral_Inter­face_Bus
  24. EUSB to SPI bus Kit
    http://www.eidusa.com/Elec­tronics_Kits_EUSB_To_SPI_BUS­.htm
  25. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.freescale.com/fi­les/microcontrollers/doc/ref_ma­nual/S12SPIV3.pdf
  26. What is SPI?
    http://www.fpga4fun.com/SPI1.html
  27. SPI – A simple implementation
    http://www.fpga4fun.com/SPI2.html
  28. Bit-banging
    http://en.wikipedia.org/wiki/Bit-banging
  29. Joint Test Action Group
    http://en.wikipedia.org/wiki/JTAG
  30. I2C
    http://en.wikipedia.org/wiki/I2C
  31. Display Data Channel
    http://en.wikipedia.org/wi­ki/Display_Data_Channel
  32. I2 Background
    http://www.microport.tw/blog­new.php?blog_no=7#theory
  33. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.microchip.com

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.