Pojďme programovat elektroniku | USB | C++

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.

Pokračování článku patří k prémiovému obsahu

Získejte neomezený přístup a Živě bez reklam už za 41 Kč měsíčně

Témata článku: Windows, Programování, Pojďme programovat elektroniku, Čipy, USB, C++



Apple si patentoval šílený iPhone. Je celý ze skla a má vysouvací komponenty

Apple si patentoval šílený iPhone. Je celý ze skla a má vysouvací komponenty

** Apple pustil fantazii na špacír a vymyslel celoskleněný mobil ** Na vizualizacích vypadá zajímavě, v praxi by byl asi hodně nepraktický ** Jde jen o další z konceptů, blízkou výrobu nečekejte

Martin Miksa
PrototypPatentiPhone
Jak rozmazat dům, aby vás sousedi nemohli šmírovat. Jde to v Mapách Google i na Mapy.cz

Jak rozmazat dům, aby vás sousedi nemohli šmírovat. Jde to v Mapách Google i na Mapy.cz

** Nelibí se vám, když cizí lidé okukují váš dům? ** Všechny mapové aplikace nabízejí možnost rozmazání snímku ** Máme návod pro Apple Maps, Bing Maps, Mapy Google a Mapy.cz

Karel Kilián
SoukromíNávodyMapy
Jak se nechat fotografovat a naučit se správně pózovat?

Jak se nechat fotografovat a naučit se správně pózovat?

Ve většině případů se na fotografických webech setkáte s recenzemi aparátů, radami jak fotit anebo přímo s konkrétními návody, jak dosáhnout nějakého efektu. Kde ale najdete informace o tom, jak by se mělo pózovat?

Petr Březina
Fotoškola
Přehled programů. Využijte naplno potenciál formátu PDF

Přehled programů. Využijte naplno potenciál formátu PDF

PDF je nejuniverzálnější dokumentový formát, přitom ne každý s ním umí pracovat. Když do něj úředníci skenují křivě vytisknuté dokumenty, popírají jeho smysl. Vybrali jsme šest aplikací, které vás naučí PDF využívat efektivně.

Stanislav Janů
PDFSoftware