Pojďme programovat elektroniku | C++ | USB

Programování elektroniky: Všehoschopný čip FT232HQ

  • FT232HQ je univerzální čip USB 2.0
  • Může se chovat jako sériová linka, I²C, SPI, GPIO aj.
  • Dnes jej oživíme v C na Windows

Součástí každé prototypovací desky pro začátečníky je konektor USB, s jehož pomocí nahrajeme do flashové paměti řídícího mikrokontroleru náš program. Mnohé čipy – a to i ty poměrně výkonné – ale sběrnici USB vůbec nepodporují. Je to třeba případ oblíbené rodiny Wi-Fi čipů ESP8266 a prvních generací pokročilejšího modelu ESP32.

Abychom se tedy mohli z počítače snadno spojit s jejich sériovým rozhraním UART a naprogramovat je, potřebujeme ještě jeden speciální čip, kterému říkáme USB-UART převodník. Právě ten je nedílnou součástí mnoha desek s konektorem USB. Zpravidla se jedná o čínské obvody CH340 nebo čipy z rodiny CP210x od amerického Silicon Labs. Skutečnou legendou v oboru je nicméně skotská Future Technology Devices International, kterou znáte spíše pod zkratkou FTDI.

USB 2.0 čip, který se dokáže proměnit téměř v cokoliv

V dnešním pokračování našeho seriálu o programování elektroniky si vyzkoušíme právě jeden z těchto čipů od FTDI. Nebude to ovšem žádný primitivní a jednoúčelový převodník, ale univerzální chameleon, který se na náš povel promění prakticky v cokoliv.

Řeč je o základním čipu FT232HQ s podtitulem USB Hi-Speed to Single Channel Serial UART/FIFO/JTAG/SPI/I2C IC. V tom je řečeno vlastně úplně všechno. Čip se může chovat třeba jako surový FIFO zásobník. Cože? Co to je? Inu, v tomto případě použije své I/O piny a začne na nich paralelně vyblikávat naše data rychlostí až 320 Mb/s.

Klepněte pro větší obrázek
Univerzální čip FT232HQ

Stejně tak se ale může FT232HQ chovat jako obyčejný sériový port s rychlostí do 12 Mb/s. Anebo jej nakonfigurujeme jako některou z pokročilejších sériových sběrnic včetně I²C a SPI, se kterými jsme už v našem seriálu pracovali mnohokrát. Anebo… Anebo čip použijeme pro elementární zapisování a čtení digitálních stavů na jeho pinech GPIO (General Purpose Input Output) a rozblikáme s ním třeba LED nebo ještě něco sofistikovanějšího.

Stručně řečeno, s tímto čipem bychom se dokázali spojit prakticky s jakoukoliv periferií, se kterou jsme doposud v našem seriálu pracovali. Ať už to byl senzor teploměru komunikující na sběrnici I²C, anebo třeba 3“ TFT LCD displej, na který jsme si kreslili skrze rychlejší sběrnici SPI. To vše bez dalšího meziprvku – třeba destičky Arduino – a rovnou z našeho počítače s Windows.

USB teploměr

A přesně to si dnes vyzkoušíme a poprvé si napíšeme program v základním jazyku C, který nepoběží kdesi na drobném mikrokontroleru, ale rovnou na našem počítači. Náš program se skrze převodník FT232HQ spojí s digitálním kombinovaným teploměrem SHT31 od švýcarského Sensirionu. Prototypovacích modulů za necelou stokorunu je plný AliExpress.

Klepněte pro větší obrázek
Kombinovaný digitální teploměr/vlhkoměr od Sensirionu stojí na webových tržištích pár desetikorun a komunikuje skrze sběrnici I²C

Už jsme s ním v našem seriálu pracovali několikrát, tentokrát z něj ale přečteme teplotu a vlhkost vzduchu přímo z našeho laptopu. Čip FT232HQ tedy přináší domácím kutilům možnost rychlého testování čipů bez potřeby neustále vytahovat nějaké Arduino a zdlouhavě jej flashovat.

Ačkoliv si napíšeme program pro Windows a vysvětlíme si jeho překlad do spustitelného formátu EXE, kód samotný bude dostatečně multiplatformní, aby jej zkušení čtenáři po drobných úpravách přeložili i na linuxových operačních systémech a na Applu. 

Protoypovací deska za dvě stovky z AliExpressu

Stejně jako klasické prototypovací stavebnice i náš USB čip seženete na některé z mnoha destiček pro snadné připojení k PC a periferiím. Jsou ale o něco dražší, takže počítejte s investicí v řádu nižších stokorun i při nákupu z AliExpressu. Já tu svoji nakonec pořídil od tohoto obchodníka zhruba za dvě stovky, přičemž v ceně je jak DPH, tak poštovné.

Klepněte pro větší obrázek
Prototypovací deska s čipem FT232HQ, modul s teploměrem SHT3x a pole LED. To vše dnes zapojíme dohromady a naprogramujeme přímo z Windows

Deska má připájený velký konektor USB typ A, takže ji můžete rovnou zacvaknout do počítače. Na modulu jsou pak vyvedené napájecí piny jak pro 5V, tak 3,3V periferie. Především je ale destička po obou stranách vyplněná řadami GPIO AD0-AD7 a AC0-AC9 s 2,54mm roztečí pro snadné prototypování. Tyto piny se podle konfigurace čipu FT232HQ promění buď v některou z podporovaných sběrnic, anebo je budete moci použít jako běžné GPIO a zapisovat na ně digitální stavy, respektive je číst a přenášet do programu v počítači.

Klepněte pro větší obrázek
Popis napájecích a digitálních I/O pinů na prototypovací desce

Instalujeme C/C++ překladač pro Windows a potřebné knihovny

Abychom nemuseli samotné signály třeba pro sběrnici I²C generovat ručně, integrovaný obvod nabízí rozhraní MPSSE (Multi-Protocol Synchronous Serial Engine), které vše zjednoduší a inženýři FTDI pro něj připravili i multiplatformní knihovnu LibMPSSE v jazyku C včetně příkladů jak pro zmíněnou I²C, tak pro rychlejší sběrnici SPI. Pro hlubší studium vás s dovolením přesměruji přímo do dokumentace.

Klepněte pro větší obrázek
Microsoft Build Tools for Visual Studio 2019

Jelikož náš program budeme psát a překládat do formátu EXE na Windows, budeme potřebovat ještě nějaký překladač z jazyka C/C++. Tuto práci za nás udělá balík Microsoft Build Tools for Visual Studio 2019, který je k dispozici zdarma a do Windows stáhne a doinstaluje textové nástroje a všechny potřebné knihovny a hlavičkové soubory pro úspěšný překlad jazyka C/C++ na této platformě.

Aby vše fungovalo, v instalátoru musíme zvolit balík Vývoj desktopových aplikací pomocí C++ a v podrobnostech pak přinejmenším položky MSVC v142 (nebo vyšší) a Windows 10 SDK (dle vaší verze OS).

Klepněte pro větší obrázek
Instalujeme minimum nástrojů pro překlad na Windows v C/C++

Připravte se na to, že vám tento ohromný balík nástrojů zabere na disku několik drahocenných gigabajtů, ale není divu, Windows na platformě x86/64 už totiž holt nejsou ten drobný mikrokontroler ze světa Arduino.

32bitová a 64bitová vývojářská příkazová řádka

Instalátor výše dostane do Windows pouze samotné textové nástroje. Volbu editoru kódu nechám na vás. Buď použijete kompletní IDE – bezplatné Visual Studio Community, které ukousne dalších pár gigabajtů místa, anebo zvolíte libovolný textový editor pro kodéry. Já už před lety propadnul zjednodušenému a multiplatformnímu VS Code, takže jej budu preferovat i tentokrát.

Klepněte pro větší obrázek
Editor kódu je na vás. Já používám multiplatformní a bezplatný Visual Studio Code

Po úspěšné instalaci překladače C/C++ od Microsoftu a SDK byste měli v nabídce Start objevil složku Visual Studio 2019 a uvnitř Developer Command Prompt for VS 2019, respektive Developer PowerShell for VS 2019. V podstatě se jedná o skripty, které otevřou textovou příkazovou řádku a nastaví všechny potřebné globální proměnné s cestami ke knihovnám a překladačům.

Klepněte pro větší obrázek
Jak spustit příkazovou řádku překladače

Ve složce byste měli narazit ještě na podadresář VC, v němž najdete spouštěcí skripty pro 32bitový překlad nebo pro 64bitový překlad.

Překlad prvního programu v C/C++ na Windows

Než se vrhneme na náš příklad, ještě drobný rychlokurz samotného překladu. Dejme tedy tomu, že otevřeme některou z výše zmíněných příkazových řádek pro vývojáře a vytvoříme adresář program. Pokud bychom už měli nainstalovaný editor VS Code, stačí nyní napsat do příkazové řádky code program a Visual Studio Code se spustí z tohoto virtuálního prostředí s předdefinovanými globálními proměnnými.

Když nyní v editoru vytvoříme soubor program.c, Code automaticky rozpozná, že se jedná o jazyk C, nabídne instalaci patřičného doplňku a s pomocí globálních proměnných nastaví cestu k SDK. Díky tomu pak dokáže doplňovat a opravovat kód C funkcí, standardních tříd jazyka C++ a tak dále.

Dejme tomu, že uložíme soubor program.c s tímto kódem:

#include <stdio.h>
int main(){
    printf("Ahoj, ctenari Zive.cz!\r\n");
    return 0;
}

V příkazové řádce pro vývojáře poté spustíme překlad instrukcí:

cl program.c /Fe:program64.exe

Za pár sekund bude hotovo, v adresáři se objeví soubor program64.exe a po jeho spuštění se v terminálu vypíše „Ahoj, ctenari Computeru!“ se zalomením řádku na konci.

Klepněte pro větší obrázek
Překlad C/C++ pomocí balíku MS Build Tools for Visual Studio 2019 a spuštění hotového textového programu s názvem program64.exe 

Všechny klíčové soubory na jedné hromadě

Skvělé, už umíme programovat a překládat C/C++ programy na Windows, takže se konečně můžeme vrátit k čipu FT232HQ. Nejprve musíme stáhnout z webu FTDI potřebné hlavičkové soubory a knihovnu pro práci s multisériovým rozhraním MPSSE. S teploměrem SHT31 budeme komunikovat skrze sběrnici I²C, vše potřebné proto najdeme na stránce LibMPSSE-I2C Examples, odkud stáhneme balíček libMPSSE.zip. Obsahuje jak složku samples s příklady, tak adresáře lib a include.

Tento článek je součástí balíčku PREMIUM+

Odemkněte si exkluzivní obsah a videa bez reklam na devíti webech.

Vyzkoušet za 1 Kč Nebo samostatné Živě Premium

Témata článku: Windows, Programování, Pojďme programovat elektroniku, Čipy, C++, USB, Sample, Sensirion, Sen Hu, Cmd +, Define, Vlhko, General Purpose, GPI, Vlhkost vzduchu



Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

** Sex manželských párů jen při zvláštních příležitostech. ** Ložnice ovládnou sexuální roboti s umělou inteligencí. ** I to je jeden ze závěrů Mezinárodní robotické konference.

Filip KůželJiří Liebreich
RobotiSexUmělá inteligence
Tuto českou základnu plnou satelitů nesmíte vidět. V Mapy.cz je každá anténa pečlivě vyretušovaná

Tuto českou základnu plnou satelitů nesmíte vidět. V Mapy.cz je každá anténa pečlivě vyretušovaná

** Zapomeňte na rozčtverečkovaná místa, kterých si každý všimne ** Mapy.cz musely dokonale zakrýt desítky parabol ** Základnou se přitom na webu chlubí i její majitel. Kocourkov

Jakub Čížek
ČeskoMapy.czMapy
Test pěti solárních nabíječek. Od malé a zbytečné po skvělou, která utáhne i notebook

Test pěti solárních nabíječek. Od malé a zbytečné po skvělou, která utáhne i notebook

Přenosné solární nabíječky jsou určeny především pro drobnou elektroniku, ty větší si ale poradí i s notebooky velkými powerpacky nebo kombinací všeho.

Stanislav Janů
Srovnávací testSolární energie
Sociální síť BeReal jde proti proudu. Žádné filtry a přetvařování, tohle má být čistá realita

Sociální síť BeReal jde proti proudu. Žádné filtry a přetvařování, tohle má být čistá realita

** BeReal je novou hvězdou mezi sociálními sítěmi ** Ukazuje pouze všední realitu běžných dní ** Aplikace vám jednou denně dá dvě minuty na poslání vlastní fotky

Martin Chroust
BeRealMobilní aplikaceSociální sítě
Kurvítka v základní výbavě, výrobci mají umělé zastarávání v malíku. Začalo to bateriemi, pokračuje softwarem

Kurvítka v základní výbavě, výrobci mají umělé zastarávání v malíku. Začalo to bateriemi, pokračuje softwarem

** Nejen mobilní výrobci jsou naučeni rok od roku prodávat stále více telefonů ** Tento trend se však zákonitě musí někdy zastavit ** Jenže, co naplat, když jsou starší zařízení „uměle“ nepoužitelná?

Martin Chroust
Prasklý displejBaterieAktualizace softwaru
Nastal pravý čas na výměnu telefonu. Jak poznat, že ten váš už dosluhuje?

Nastal pravý čas na výměnu telefonu. Jak poznat, že ten váš už dosluhuje?

** Jak poznat, že váš telefon má nejlepší dny za sebou? ** Vypadá potlučeně, má pavučinu nebo nedostává aktualizace? ** Ukážeme si, kdy má smysl jeho oprava, a kdy už jen koupě nového

Martin Chroust
Prasklý displejVysloužilý mobilSmartphony