15.08.2008, autor: Ing. Robert Krejčí, kategorie: Součástky

PIC18F2455/2550/4455/4550

Osmibitový mikrokontrolér s rozhraním USB

V tomto článku si popíšeme velmi výkonný "luxusní" osmibitový mikrokontrolér řady 18F od firmy Microchip. Umí komunikovat se sběrnicí USB 2.0 při plné rychlosti (12 Mbit/s). Kromě toho má také mnoho dalších zajímavých periferních obvodů, např. obvod pro přepnutí na náhradní zdroj hodin pro případ, že přestane fungovat hlavní krystal.

1. Základní charakteristika

  • 8-bitový mikrokontrolér s architekturou RISC

  • Harvardská architektura = paměť programu oddělená od datové paměti

Obr. 1: Uspořádání jádra, sběrnic a periferních obvodů
Obr. 1: Uspořádání jádra, sběrnic a periferních obvodů

2. Paměť

  • 2 kB SRAM

  • 256 B EEPROM, 1 000 000 zápisů

  • programová paměť typu Flash 24 - 32 kB, 100 000 zápisů

  • procesor se může sám přeprogramovat

3. Pracovní režimy

  • Napájení:4,2 V - 5,5 V (verze 18LF: od 2 V)

  • Run: CPU on, peripherals on

  • Idle: CPU off, peripherals on

  • Sleep: CPU off, peripherals off

4. Pracovní frekvence

  • instrukční cyklus: tic = tosc · 4

    • 4 takty oscilátoru na každou instrukci

    • skoky a rozhodovací instrukce zaberou 2 instrukční cykly, tedy 8 taktů

  • Hodiny lze přivádět externě nebo z interního kalibrovatelného oscilátoru (31250 Hz - 8 MHz).

  • fmax = 48 MHz, 12 MIPS

  • Vnitřní fázový závěs 96 MHz => pomocí krystalu 4 MHz lze vytvořit taktovací kmitočet 48 MHz nebo jeho zlomek. Toto řešení je velmi odolné proti rušení!

  • Jádro a USB modul mohou pracovat na odlišných frekvencích.

Obr. 2: Možnosti taktovacích signálů
Obr. 2: Možnosti taktovacích signálů

5. Instrukční soubor

  • 75 standardních instrukcí (pro srovnání: řada PIC 16: pouze 35 instrukcí)

  • 8 speciálních instrukcí pro tuto řadu (lze zapnout/vypnout)

  • osmibitové a jednobitové instrukce (pro srovnání: např. AVR nemá jednobitové instrukce)

  • instrukční soubor je optimalizován pro programování v jazyce C

  • 16-bitové instrukční slovo (pro srovnání: řada PIC 16: 14-bitové slovo)

  • hardwarová jednocyklová násobička 8 × 8 bitů => 16-bitový výsledek

6. Periferie

6.1 Porty

  • 5 obousměrných portů: PORT A - PORT E

  • Všechny vstupně-výstupní nožičky umožňují maximální proud 25 mA (vstup i výstup).

Obr. 3: Typické uspořádání vstupně-výstupního portu
Obr. 3: Typické uspořádání vstupně-výstupního portu

6.2 Časovače

  • Časovač TIMER0:

    • lze přepínat na 8-bitový / 16-bitový

    • interní / externí zdroj hodin

    • volba hrany časovacího impulzu: vzestupná / sestupná

    • dělicí poměr: 1:2 - 1:256

  • Časovač TIMER1:

    • 16-bitový časovač / čítač

    • dělicí poměr 1:1 - 1:8

  • Časovač TIMER2:

    • 8-bitový časovač

    • velmi variabilní dělicí poměr: 1:1 × 1:1 až 1:16 × 1:16

  • Časovač TIMER3:

    • 16-bitový čítač

    • asynchronní / synchronní režim

    • dělicí poměr 1:1 až 1:8

6.3 CCP = Capture/Compare/PWM

  • 2 jednotky CCP

  • Capture:

    16 bit, max. rozlišení 5,2 ns

    Obr. 4: Capture mode
    Obr. 4: Capture mode
  • Compare:

    16 bit, max. rozlišení 83,3 ns

    Obr. 5: Compare mode
    Obr. 5: Compare mode
  • PWM

    PWM = pulzně-šířková modulace: 6,6 bitů (417 kHz) - 10 bitů (2,44 kHz) při 40 MHz

  • ECCP = Enhanced CCP:

    • 2 nebo 4 výstupní kanály

    • volitelná polarita výstupu

    • programovatelná „mrtvá zóna“ (Dead Band) pro řízení spínacích můstků motorů

    • atd.

6.4 Streaming Parallel Port

  • 8-bitový port pro rychlé přenosy dat

  • obousměrný

  • pracuje jako master

  • data lze přenášet mezi jádrem CPU nebo řadičem USB

6.5 Master Synchronous Serial Port

  • 2 módy:

    • SPI

    • nebo I2C

6.6 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART)

  • plně duplexní asynchronní přenos nebo poloviční duplex

  • synchronní přenos: master nebo slave

  • automatická detekce přenosové rychlosti

  • lze využít pro sběrnici LIN

6.7 10-bitový A/D převodník

  • 10 multiplexovaných vstupů

Obr. 6: A/D převodník
Obr. 6: A/D převodník

6.8 Modul analogových komparátorů

  • 2 analogové komparátory

  • programovatelná reference

Obr. 7: Komparátor
Obr. 7: Komparátor

7. USB

7.1 USB obecně

  • Universal Serial Bus = Univerzální sériová sběrnice

  • Navržená především pro komunikaci mezi hostitelským (výkonným) počítačem a menšími přídavnými zařízeními.

  • Implementace USB 2.0 = současný standard (dříve USB 1.1).

  • Rychlost přenosu:

    • Low Speed = 1,5 Mbit/s (USB 1.1)

    • Full Speed = 12 Mbit/s (USB 1.1)

    • Dále norma USB definuje tzv. High Speed = 480 Mbit/s (USB 2.0), ale tato rychlost není v tomto mikrokontroléru implementována.

7.2 Implementace USB

  • 1 kB RAM s duálním přístupem: do paměti může přistupovat jádro procesoru i řadič USB.

    Obr. 8: Schéma USB modulu
    Obr. 8: Schéma USB modulu
  • Propojení se Streaming Parallel Portem

  • Hardwarová vrstva umožňuje všechny 4 druhy přenosů:

    • Řídicí (Control) přenosy jsou používány ke konfiguraci zařízení při jeho připojení a mohou být použity k dalším účelům, jako např. k řízení další komunikace.

    • Hromadné (Bulk) přenosy slouží k přenosům velkého množství dat a jsou na ně kladena nejmenší omezení.

    • Přerušovací (Interrupt) přenosy slouží k včasnému a spolehlivému doručení dat, nejčastěji pro asynchronní události.

    • Izochronní (Isochronous) přenosy zabírají předem smluvené množství přenosového pásma a mají předem dohodnuté zpoždění. Tento druh přenosů je také nazýván proudový přenos v reálném čase (streaming real-time transfer).

  • 32 koncových bodů (nebo 16 obousměrných)

    • Koncový bod (endpoint) je část USB zařízení, která stojí na jednom konci komunikačního toku mezi hostitelem a zařízením. Každé logické zařízení se skládá z několika nezávislých koncových bodů. Tomuto logickému zařízení je během připojování přiřazena jednoznačná identifikace v rámci sběrnice. Každý koncový bod v rámci zařízení má přiřazen výrobcem kód, nazývaný číslo bodu (endpoint number) v rozsahu 0-15. Endpointy mají zároveň návrhem pevně daný směr komunikace (příjem / vysílání dat). Kombinace identifikátoru zařízení, čísla endpointu a směru komunikace dává dohromady jednoznačné určení endpointu v rámci USB sběrnice. V jednom zařízení se tedy mohou vyskytnout dva endpointy se stejným číslem a různým směrem přenosu dat.

    • Koncový bod nula (endpoint zero) musí být implementován v každém USB zařízení a slouží k prvotní konfiguraci zařízení. (Ve skutečnosti jde o endpointy dva, jeden pro vstup dat a jeden pro výstup, oba s číslem 0, ale hovoří se pro zjednodušení o "koncovém bodu 0", nikoli o "koncových bodech".)

    • Ostatní koncové body (Non-endpoint Zero) mohou být implementovány USB zařízením podle potřeby. Low speed zařízení jsou limitována počtem dvou dalších endpointů (kromě dvou s číslem 0). Full speed zařízení mohou mít dalších endpointů tolik, kolik umožňuje definice protokolu (tedy 15 vstupních a 15 výstupních).

8. Závěr

Procesor řady PIC18F4550 je velmi výkonný osmibitový procesor se zančným množstvím periferií, z nichž nejvýznamnější je sběrnice USB.

Na českém maloobchodním trhu je k dostání např. u firmy TME, cena se pohybuje kolem 173 Kč včetně DPH, je dostupná varianta PIC18F4550 v pouzdře DIL a TQFP.

Výrobce dodává podpůrný software pro zjednoušení a zkrácení vývoje USB aplikací, ale software včetně ovladačů je dostupný pouze pro operační systém Microsoft Windows, což je nesporná nevýhoda.

Lze sehnat celou řadu kompilátorů C, ale žádný z nich není zcela zdarma. Jediná výjimka je SDCC (Small Device C Compiler) s implementací pro PIC, ale ten je spíše ve vývoji a navíc jeho konfigurace dá značnou práci.

9. Použitá literatura

 
{e_like}
 
 
Nahoru