Cesta od 8-bitů k ARM

Někdy na střední škole, v roce 1993, jsem se poprvé setkal s programováním jednočipových procesorů. Byly to obvody s jádrem 8051, programované v asembleru. Potom, v roce 2000 jsem do svého PC nahrál Keil a přišly první pokusy s C. 8051 má instrukční sadu CISC. Zjednodušeně to znamená, že ve velké spoustě instrukcí se překladač z jazyka C moc nevyzná a výsledný kód mi nepřipadal užitečný ve srovnání s tím, co jsem uměl napsat v asembleru. Keil jsem smazal a dál si hrál v assembleru.

V roce 2004 jsem koupil první procesor s redukovanou sadou instrukcí, výrobek společnosti Atmel. Byl to ATmega8535. Tam mě zas naopak nebavil assembler, nechtělo se mi psát program z mnoha malých instrukcí. Arduino možná v Itálii zrovna vymýšleli, takže jsem nainstaloval AVR studio a učil se programovat v C.

Platforma Arduina mě minula, pro svoje výrobky vždy navrhuji svůj plošný spoj a ty destičky spojované dráty mě nebaví. AVR studio mi zůstalo až do roku 2016, kdy jsem programoval poslední větší projekt na osmibitovém procesoru. Byl to ATXmega128 použitý pro řízení laboratorního zdroje. Větší výkon byl potřeba kvůli barevnému TFT displeji, takže už tehdy bylo vidět, že některý z 32-bitových procesorů by obsluhu displeje zvládl líp. Nevšiml jsem si, že existuje displej Nextion, který by mé problémy s nedostatečným výkonem procesoru vyřešil. Místo toho jsem se začal dívat, jak vyzkoušet něco, co má 32 bitů.

Na začátku hledání cesty od osmibitových mikrokontrolérů k 32-bitovým MCU s jádrem ARM jsem se podíval, jaké procesory se dají v ČR koupit, ideálně z Farnell. Výběr bez dalších vědomostí jsem podřídil tomu, aby pro procesor bylo vývojové prostředí zdarma, měl dost I/O pinů pro připojení periferií a šel zapájet. To znamená, že je nutné vyřadit vše, co se vyrábí v pouzdru BGA. Dalším kritériem výběru je česká komunita, diskusní fóra…

Výrobce CPU Cortex Kmitočet Paměť I/O piny Cena
STM STM32H753VIT6 M7 400 MHz 2 MB 82 400 Kč
NXP MKV58F1M0VLQ24 M7 240 MHz 1 MB 111 350 Kč
MICROCHIP ATSAME70N21A M7 300 MHz 2 MB 75 350 Kč
CYPRESS CY8C5868AXI-LP032 M3 67 MHz 256 kB 72 510 Kč
SILICON LABS EFM32GG12B810 M4 72 MHz 1 MB 81 200 Kč
TEXAS INSTRUMENTS TM4C123GH6PGEI M4F 80 MHz 256 kB 105 300 Kč

Z uvedeného výběru to vypadá, že nejvýhodnější bude zabývat se procesory vyrobené v STMicroelectronics. STM je jedním z největších výrobců procesorů pro embedded systémy, programy lze psát v několika vývojových prostředích. Problém je, že ze začátku jsem se nedokázal zorientovat v žádném z nich.

Ale kamarád mi ukázal vývojový kit od Cypress, tak jsem jej vyzkoušel.

Vývojový kit CY8CKIT-059

Stejně jako spousta vývojových kitů s procesory jiných výrobců deska obsahuje programátor, kterým lze přes USB nahrát program do procesoru CY8C5888LTI. Pět osmibitových portů procesoru je vyvedeno na piny umístěné po delších stranách desky.

Procesor je ARM Cortex-M3 a na rozdíl od jiných procesorů je jeho součástí programovatelné pole různých analogových a digitálních komponent.

Některé vlastnosti procesoru:

  • Pracovní kmitočet 80MHz
  • Paměť Flash 256kB
  • Paměť RAM 64kB
  • ADC převodníky: 2x 12-bitový, 1x 20-bitový
  • DAC převodníky: 4x 8-bitový
  • 4x programovatelný analogový blok
  • 24x DMA kanál
  • 24x programovaný digitální blok

Program PSoC Creator

Vlastnosti periferií osmibitového procesoru lze nastavit pomocí několika registrů. Na to, jestli mají být piny portů procesoru vstupní nebo výstupní stačí dva. Na časovač čtyři, na sériový port taky čtyři. Na rozběhnutí i nejsložitějšího procesoru ATXmega128 a nastavení jeho vnitřních obvodů, stačí nastavit 40 registrů.

U ARM je to složitější, pro rychlé seznámení s procesorem je vhodné použít grafické prostředí. To vytvoří rozhraní pro komponenty procesoru a jejich další programování, tzv. API. U STM ke to program STM32CubeMX.

U PSoC Creatoru je v nově vytvořeném projektu na záložce TopDesign.cysch prázdná stránka pro schéma a katalog komponent. Z katalogu komponent lze vybírat věci, které člověk bude potřebovat, skládat je do schématu a propojovat.

Na záložce *.cydwr je zobrazeno pouzdro procesoru, který bylo nutné zvolit při založení projektu. Vedle pouzdra jsou vyjmenovány piny, které byly použity ve schématu. Tyto piny je potřeba přiřadit k portům procesoru.

Potom stačí stisknout ikonu Build a PSoC creator vytvoří program v jazyce C.

Soubory programu jsou přehledně uspořádány ve Workspace Explorer a jedním ze souborů je main.c, který je připraven pro psaní vlastního programu, který bude procesor vykonávat. Na začátku hraní si s komponentami, je potřeba v main.c komponenty spustit. Např. PWM_1_Start();

Dokumentace a nějaká cvičení, tutoriály…

Překvapilo mě, že na netu nejsou o Cypress skoro žádné články, ve kterých by bylo popsáno, jak začít. Po několika hodinách zkoušení jsem přišel na to, že žádné nejsou potřeba. Jednotlivé komponenty z katalogu komponent lze rozkliknout a zobrazí se okno, ve kterém lze nastavit parametry. Např.

V levém spodním rohu každého okna je odkaz na Datasheet. To je pdf dokument, ve kterém je popsáno vše, co člověk potřebuje vědět pro každou z komponent.

Závěr

Nabídka procesorů Cypress sice není tak velká jako u STM, ale programovací prostředí PSoC Creator a související dokumentace je uspořádána tak, že nemusím hledat spoustu variant na internetu a můžu se rychle učit. Přitom není vyloučeno, že až se trochu rozkoukám v oblasti ARM, podívám se i na jiný procesor.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *