Řídící jednotka

ControlUnit

Problém nedostatku místa je palčivý u všech modelů menších rozměrů. Jelikož si téměř všechny periferie vyrábím sám, zabírají relativně dosti místa. Navíc samotný procesor také nemám nejmenší. Proto jsem se postupně snažil dělat periferie menší a kompaktnější. Avšak vše má své limity.

Řekl jsem si, že zkusím sehnat menší procesor pro mé periferie. Chtěl jsem, aby byl postaven na podobné architektuře, nejlépe ARM, STM32, na které nyní vytvářím své výdobytky. Nalezl jsem firmu mikroe, která prodává malou destičku osazenou procesorem z řady STM32 F4. Jednotka mi hned padla do oka. Měla dostatek pinů a vyvedených periferií pro běžné účely. Vše mělo dvě nevýhody: nedostupnost v ČR a docela vysoká cena. Problém 1 je řešitelný, problém 2 je jen bolestivý…

I vnukla se mi myšlenka postavit si k tomuto malému procesoru i malé periferie. Návrh destičky pro řízení světel a servo motorů byl vcelku snadný. Použil jsem můj oblíbený 74HCT541 budič sběrnice (používám ho pro převod 3.3V -> 5V). Avšak nejsem schopný postavit h-můstek pro motory. Nicméně podařilo se mi najít H-můstek od pololu (DVR8835), který byl rozměrově malý a parametricky dostatečný). Opět však nebyl v ČR dostupný, avšak cenově dostupný.

Pro dva moduly DVR8835 jsem navrhl a vytvořil druhou destičku. Na tu jsem zároveň vyvedl i všechny zbývající - nepoužité piny procesoru.

Programování

Netušil jsem však, jak náročné bude rozchodit samotný procesor. Začal jsem standardně – výstup a rozsvěcení diody. Nicméně, destička nemá debugger a společnost mikroe podporuje jen vlastní překladače a programovatelná prostředí. Musel jsem se tedy hluboce zanořit do všech možných dokumentací a velmi využívat selského rozumu. Nejtěžší byla samotná inicializace a konfigurace procesoru. To zahrnuje nastavení hodin, děliček, periferií. Vše bez debuggeru jen pomocí výstupu na piny.

Po rozchození blikání diody bylo na půl vyhráno. V druhém kroku jsem ladil přesné nastavení různých děliček, abych procesoru nastavil požadovaný takt a vytvořil přerušení na čítání systémového času. Následovalo nastavení časování sběrnic, abych měl na výstupu přesné PWM, USART. Posledním krokem bylo rozchození ADC převodníku pomocí DMA.

Nakonec se vše podařilo a pro svůj výtvor jsem vytvořil knihovnu, která vše potřebné nakonfiguruje a jednotlivé periferie ovládá. A co to všechno umí? Zpracování XBee komunikace, ovládání 4 LED výstupů, 4 motor a 4 serv. Dále je vyvedno 13 pinů, ze kterých lze 9 využít na ADC a 4 jako další časovač (např. na další PWM).

Kliknutím na název zobrazíte zdrojový kód
libF4Mini.c: main file
Download
libF4Mini.h: headers file
Download

Vytištěný motiv pro nažehlování
Vytištěný motiv pro nažehlování
Zakoupené periferie
Zakoupené periferie
Osazené periferie lištamy
Osazené periferie lištamy
Leptání destiček pro vlastní periferie
Leptání destiček pro vlastní periferie
Ladění části pro 4 serva a 4 světla
Ladění části pro 4 serva a 4 světla
Jednotlivé části řídící jednotky
Jednotlivé části řídící jednotky
Kompletní řídící jednotka, strana 1
Kompletní řídící jednotka, strana 1
Kompletní řídící jednotka, strana 2
Kompletní řídící jednotka, strana 2
Výsledné testování
Výsledné testování
Schéma v Eagle programu
Schéma v Eagle programu

Go back to STM32