Výběr MCU ARM Cortex M0/0+/4? konkrétně

Výběr MCU ARM Cortex M0/0+/4? konkrétně
« kdy: 23. 04. 2019, 12:10:25 »
Ahoj,
prosím o názor ty, kteří o tom mají co říct.

Hledám mikroprocesor a prostředí jako náhradu za atmega328pb který už mi na projekty nestačí. začal jsem arduinem, málo ST, atmelstudio ale raději prosím předpokládejme že nevím vůbec nic, bude to blíž než říct že tomu rozumím.

Hledám tedy MCU včetně prostředí a vlastně způsobu programování. Láká mě ST pro propracované a snad udržované prostředí kde podle dostupných informací se dá (možná) zdarma a kvalitně fungovat (a složitě). Více zkušeností mám s atmelstudiem které mi ale se zdá být spíše pozůstatkem minulé doby (není to urážka). Nejsem si jist kompatibilitou toho jaký MCU jde v jakém prostředí kvalitně vyvíjet. Můj cíl není dělat všechno sám ani psát kód ASSM (čas je rychlý a to bych nic nestihl), takže bych si představoval programovat s nějakém C, C++ ideálně s dostupnými slušnými knihovnami.

Požadavky na MCU jsou asi takovéto:

běh na baterii (uvažuji fungovat kolem jednotek mA, při větším výkonu třeba pár desítek mA)
SRAM > 30K
FLASH > 80k
EEPROM
Pouzdro- hledám spíše něco většího s větším počtem nohou pro řízení různých periférií.
Na frekvenci nezáleží (podporovat může velkou ale stačí malá takže by to bylo jen plácání výkonem), jednak se podle mě výkon odvíjí podle architektury spíše než taktu, ale také mi na výkonu moc nezáleží, budou nenáročné operace .
Architektura, výrobce - o tom si nechám rád poradit
Dostupnost -  chci něco co se bude dělat ještě za 10 let(lze li to vůbec určit).

osobně jsem uvažoval arm, cortex M0, M0+, M4 ale nemám dost informací (namátkou třeba L22G)

« Poslední změna: 23. 04. 2019, 19:33:54 od Petr Krčmář »


mhi

  • *****
  • 500
    • Zobrazit profil
Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #1 kdy: 23. 04. 2019, 13:44:37 »
Vybiral bych z STM32, NXP LPC, Microchip/Atmel, pripadne nejakych dalsich (Infineon XMC). Jaky Cortex-Mx je otazka zda jsou potreba prislusne vlastnosti a jaka je cena MCU, neni to tak, ze by M0ka byla vzdy nejlevnejsi.

STM32 ma podle meho zasadni problem s dokumentaci, kdy nektere veci nejsou dokumentovany nebo to neni uplne srozumitelne (napr. jsem zjistil, ze u spousty procesoru nelze pouzivat soucasne CAN a USB :), ale frajeri to takhle nikde nenapisou, vyplyva to az z nejakych detailu periferie ).

U STM32 si pisu vse od nuly pomoci CMSIS, ty jejich HAL knihovny jsou dle meho nazoru uplne nanic a jen cesta do pekel.

STM32 desticky + stlinkv2 se daji levne koupit z CN na ebayi.

Nekde tu je diskuse kde jsem se ptal na podobne otazky a prisla spousta uzitecnych odpovedi.

Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #2 kdy: 23. 04. 2019, 17:22:05 »
Pokud nic moc nevíte, tak se podívejte na vyšší Arduina (ARM od Atmelu) nebo třeba na Teensy.

Jinak obecně o hardware:

STM32 HAL je hrozný, ale libopencm3 je docela slušná náhrada.

M0/+ vs. M4 - záleží jestli potřebujete FPU a pokročilé periferie. M0 je obecně jednoduchá, umí dost a má malou spotřebu (obzvláště u STM32L0 nebo EFM32).

EEPROM - záleží hodně na výrobci, třeba zrovna STM má EEPROM u L0 řady, ale u F0 řady už ne.

Jako platformu celkem vídám platformio, které mě osobně nevyhovuje a napsal jsem si svoje generátory ve skoro čistém CMake.

Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #3 kdy: 23. 04. 2019, 17:27:34 »
Už to tu dřív zaznělo, ale doporučuji se podívat na ChibiOS. Vyvíjí to Ital, který dělá pro ST v Neapoli, velice dobře komunikuje. Pro Windows má plně nakonfigurované eclipse se všemi potřebnými závislostmi, stačí rozbalit, mírně pokonfigurovat dle konkrétní desky a rovnou nahrávat příklady. Zkoušel jsem to na blue pill z ebaye za 50Kč, i v linuxu to bylo bez problémů. K většímu otestování než připojení TFT LCD, rozchození napojení na ugfx a pár základním příkladům s texty a dotykem jsem se zatím bohužel nedostal, přišly jiné priority, ale chibiOS běží již roky a rozhodně bych se toho pro STM32 nebál.

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #4 kdy: 23. 04. 2019, 21:46:56 »
Hledám mikroprocesor a prostředí jako náhradu za atmega328pb který už mi na projekty nestačí.
Ak si robil ATmegy tak odporucam ich nahradit https://www.microchip.com/design-centers/32-bit
"SAM Microcontrollers" maju pomerne siroky vyber. Lifetime pre uC produkty boli u ATmelu velmi dlhe. Nahrady su pin2pin kompaktibilne. Support od firmy Microchip sa myslim ze oproti ATmelu zlepsil. Dokumentacia je podla mna dobra.

Asi najlepsie IDE pre ARMy je https://www.rowley.co.uk/arm/index.htm
Podporovane je asi vacsina ARMov a devboardov. IDE je ale platene hobby verzia stoji dakych 100 Libier.


Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #5 kdy: 23. 04. 2019, 22:02:03 »
Ty požadavky máš dost přesně napsaný, znamená to, že hledáš čip pro nějaký konkrétní projekt? Nebo spíš dumáš, jaké rodině věnovat úsilí do budoucna? Třeba ST nebo Atmel mají těch čipů fakt hafo, až se v tom nedá vyznat :) Užitečný jsou webový klikátka, kde si naklikáš, co od toho chceš a vypadnou ti relevantní modely. Teď po ruce nemám linky, ale určitě to vygooglíš.

Osobně jsem kdysi dávno zkoušel STM32, dost mě to vyprudilo, teď jsem jim docela nedávno dal novou šanci a naopak mi přijdou úplně super. Je bezvadný, že si můžeš krásně experimentovat na Blue Pillu, kterej je doslova za pusu a má v pohodě spotřebu, ale v případě potřeby případně pořád můžeš přesedlat na vyšší modely. Konkrétně třeba možnost experimentování s CAN na Blue Pillu mě úplně pohltila. Low power CAN zařízení za $1.7? Notyvado! A dokonce zepár 5V tolerant pinů? Shut up and take my money! :)

Horší je to ale s tím softwarem, no. Je to děsnej binec, možností spoustu, ale pak to dopadne tak, že vidíš hezkej example, ale musí být doprčic zrovna pro IAR. Nebo pro HAL knihovnu, kterou použít nechceš... Osobně jsem zatím dokonvergoval k vim+make+libopencm3, ale je to spíš z osobních důvodů a netroufám si to doporučovat, nemám zatím dost zkušeností.

Celkem se mi líbí knížka Warren, G.: Beginning Stm32: Developing with Freertos, Libopencm3 and Gcc - je psaná přesně pro takový nadšený amatéry jako já - žádná přílišná věda, jenom stručný důležitý informace a praktický příklady, ideální :) Zdrojáky příkladů jsou na githubu, ale bacha, některý jsou už trochu zastaralý (FreeRTOS tam má v nějaké historické verzi a ještě trochu divně embeddovanej přímo do projektu).

napr. jsem zjistil, ze u spousty procesoru nelze pouzivat soucasne CAN a USB :)
A to byla zrovna jedna z prvních věcí, na kterou jsem narazil všude, kde jsem si o CAN na STMkách četl :) Je to trochu škoda, kvůli tomu jsem si musel USB-CAN převodník udělat z ESPčka, který je o nějakých tragických 70Kč nebo kolik dražší ;)

Už to tu dřív zaznělo, ale doporučuji se podívat na ChibiOS.
S ChibiOSem jsem si hrál asi před čtyřma rokama a nadchla mě ta čistota designu i makefilů, krása. Zas ale dneska nevím, jestli není lepší jít do FreeRTOSu kvůli přenositelnosti na ESP32...

Ak si robil ATmegy tak odporucam ich nahradit https://www.microchip.com/design-centers/32-bit
Myslíš, že je pro to nějaký opravdu relevantní argument? V profi prostředí bych to chápal - navázané dodavatelské vztahy, support apod., ale amatérovi je to myslím spíš celkem jedno, páč je to stejně úplně jiná architektura a začíná de facto stejně od nuly jako s jakýmkoli jiným ARMem, ne?

Support od firmy Microchip sa myslim ze oproti ATmelu zlepsil. Dokumentacia je podla mna dobra.
Zkoušel jsem teď nedávno jednu relativně horkou novinku (SAM R34) a byl jsem teda dost znechucenej. Dokumentace prakticky nulová, roztříštěná do spousty různých souborů, místy zastaralá nebo nejasná (o jaké verzi toho toolu píšou? Moje se chová jinak!), Atmel Studio škoda mluvit... Network instalace, přesto podpora tohodle chipu nebyla, doinstalovat ji bylo složitý jak maturita a chaotický jak [nevím co], software polofunkční, na webu spousta mrtvých linků... Fakt mě to nebavilo a udělalo to na mě hodně špatej dojem. Možná je to tím, že to byl v tu dobu fakt novej čip nebo bylo Atmel Studio zrovna v rozstřelu kvůli nějakýmu přechodu na jiný verze něčeho, možná jsem k tomu nějak blbě přistupoval já, nevím. Ale každopádně to není něco, o čem bych nadšeně psal z tábora domů rodičům :)

---
Disclaimer: v embedded jsem nadšený amatér - trochu mě to živí, ale není to moje jediná životní náplň, píšu svoje subjektivní zkušenosti, možná se v něčem mýlím, budu rád, když profíci uvedou případné omyly na pravou míru a předem dík za to :)
« Poslední změna: 23. 04. 2019, 22:05:45 od Mirek Prýmek »

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #6 kdy: 24. 04. 2019, 07:00:48 »
FreeRTOS tam má v nějaké historické verzi a ještě trochu divně embeddovanej přímo do projektu).
A kde v tom vidis problem? Ak ta "historicka verzia" splnuje vsetko co pozadujes, a ide bez chyby tak preco updatovat?

Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #7 kdy: 24. 04. 2019, 23:24:00 »
Děkuji za názory,
chápu to tak, že jednoznačně nevede nic a v ničem (HAL nepoužívat).
mhi-zmíněné vlákno se mi nepodařilo najít.
libopencm3 jsou nějaké použitelné knihovny

bylo by vhodné vybrat nějaké programoovací prostředí (ST, eclipse,Cross rowley)
používá tu někdo simulátor?
najít jádro (ChibiOS, nějaký jiný RTOS), proč ho vlastně potřebuji? jak to funguje?
jak je to se základními funkcemi? čtení fuse, WDT, ISR tohle si píše každý sám?

Požadavky vychází z toho že atmega328 nestačí a rád bych něco co bude stačit i dobudoucna. Řeším projekt ale plánuji sirší použití a univerzálnost pro další projekty.
Webový klikátka mi u MCU moc nedají, většinou neřeší cenu ale teď hledám spíš jak na to než jen MCU.



Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #8 kdy: 25. 04. 2019, 00:18:32 »
najít jádro (ChibiOS, nějaký jiný RTOS), proč ho vlastně potřebuji? jak to funguje? [...] Požadavky vychází z toho že atmega328 nestačí a rád bych něco co bude stačit i dobudoucna. Řeším projekt ale plánuji sirší použití a univerzálnost pro další projekty.
Pokud sám nemáš potřebu RTOS použít a jdeš z ATmegy, tak by možná stálo za to říct, jak a na čem jsi pracoval doteď. Pokud jsi žil ve světě Arduino IDE a jenom jsi přerostl ATmegu, tak možná vůbec nejrozumnější by bylo si to nekomplikovat a jenom přejít na nějaký jiný ArduinoIDE-kompatibilní čip (třeba SAM D21?). To by vůbec nebyl hloupý krok, spíš naopak, imho.

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #9 kdy: 25. 04. 2019, 01:31:34 »
Na STM32 používám http://www.openstm32.org/HomePage a programuju s SPL (HAL ne)
co se týče CPU tak nejčastěji STM32F103C8T6 "Blue pill" + STLink, ale možností je podstatně více,
oproti atmega328 a podobným které taky používám na aplikace kde stačí je třeba u STM32F103C8T6
pouzdro s menší roztečí vývodů, což je trochu horší na domácí letování než atmega, jinak nové megaavr0
taky nejsou špatný, akorát to chce AtmelICE protože mají UPDI rozhraní který přes levný USBASP nejde.

Re:výběr MCU ARM cortex M0/0+/4? konkrétně
« Odpověď #10 kdy: 25. 04. 2019, 10:50:19 »
používá tu někdo simulátor?

Vývojová deska je přesnější (a levná). Stačí něco jako STM Discovery nebo nucleo. Třeba tady https://www.st.com/en/evaluation-tools/stm32-nucleo-boards.html

najít jádro (ChibiOS, nějaký jiný RTOS), proč ho vlastně potřebuji? jak to funguje?

Na malé programy netřeba. Ne větší se to může hodit, je to klasický OS s funkci abstrakce hardware. Tj je pak snazší přecházet mezi různými mikrokontrolery. Osobně používám jen velice lehký plánovač úloh (run to completion preemptive scheduler, freertos to třeba umí), protože nedělám nic tak velkého aby se mi vyplatilo se všechny ty makra a abstrakce učit.

jak je to se základními funkcemi? čtení fuse, WDT, ISR tohle si píše každý sám?

ARM nic jako AVR fuse přímo nemá (prakticky jen wdt, bootloader a ochranu proti přečtení). Frekvence, hodiny i wdt jdou nastavit za běhu.

ISR se píše mimo Arduino prostředí prostě tak, že se správně pojmenuje funkce a linker už ví co má dělat.

Ty základní funkce pak poskytuje právě libopencm3.

Požadavky vychází z toho že atmega328 nestačí a rád bych něco co bude stačit i dobudoucna. Řeším projekt ale plánuji sirší použití a univerzálnost pro další projekty.
Webový klikátka mi u MCU moc nedají, většinou neřeší cenu ale teď hledám spíš jak na to než jen MCU.

Postupujte po krocích. Vyzkoušejte ARMové Arduino nebo Teensy. Naučíte s tím složitějším mikrokontrolerem a přitom budete znát prostředí a funkce. Potom to zkuste teprve napřímo bez Arduino knihoven.

https://store.arduino.cc/genuino-zero nebo https://store.arduino.cc/due nebo https://www.pjrc.com/teensy/

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #11 kdy: 28. 04. 2019, 19:23:15 »
Přerostl ATmegu ale i Arduino IDE které má svoje mouchy. Rád bych zjistil kam to jde posunout a jaké jsou možnosti, co to obnáší. Kdyby ale ne, tak bych zůstal u atmelstudia a dál programoval bez arduina v c nebo c++.

Vývojová deska je jedna věc ale do simulátoru se nemusí nahrávat kód a lze rychle krokovat co se děje (což u vývojové desky neumím, ale četl jsem že by to nějak jít mělo i když asi ne tak pohodlně)
Jak funguje abstrakce HW RTOS? Chápu, že pro multitasking může být výhodné než časovat každou věc přes millis() i když v mých projektech to zvládám a myslím že tím mám větší kontrolu. Chápu správně že rtos mívá nějaké gui pro rychlé nastavení, tím se vygeneruje vlastní kód který lze pak třeba ještě doupravit třeba co se týče taktovací frekvence? Mělo by třeba smysl použít rtos jen s jednou úlohou (ta už by si pořešila svoje časování)?

Postupovat přes arduino se mi zdá být zdlouhavé a přímo nevedoucí k cíli, chtěl bych vybrat konkrétní cílové  MCU, prostředí, nástroje. Chtěl bych naprogramovat spíš univerzální jádro (možná s možností přejít na různé MCU, ale hlavně řešící ty problémy co jsou třeba výdy řešit, WDT, ISR, startování, update FW), potom funkce obsluhující konkrétní hw (komunikační moduly, SDkartu, další periferie) a tím mít připraveno na konkrétní funkce pro daný projekt.

Zatím (během snad týdnů) zkusím nejpíš nějaké teensy a paraelně navrhovat konkrétní hw s vybraným MCU. No možná rovnou koupit konkrétní MCU v TME a udělat odboku nějaký vývojový modul sám což asi vyjde po všech stránkách lépe.

Má smysl když chci spíše ovládat periferie než dělat složité výpočty vybírat MCU podle toho jestli má FPU?

Všude se píše jaký je odběr proudu MCU při různých sleep režimech, kde zjistit nebo podle čeho odhadnout odběr bez uspávání?

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #12 kdy: 28. 04. 2019, 20:25:21 »
Jak funguje abstrakce HW RTOS?
Abstrakce HW (HAL) a RTOS jsou principielně dvě různé věci i když jsou platformy, které poskytují oboje. HAL ti poskytuje nějakou abstrakci nad periferiemi (seriák, GPIO, ADC...) aby se snadněji přecházelo mezi různými hw platformami (ve světě Arduino třeba digitalWrite() ) a RTOS je spíš o procesech, alokaci paměti, předávání zpráv, synchronizačních primitivech apod.

Chápu, že pro multitasking může být výhodné než časovat každou věc přes millis() i když v mých projektech to zvládám a myslím že tím mám větší kontrolu.
Mně osobně RTOS-styl po zkušenostech s Arduinem docela hodně příjemně překvapil hlavně tím, že umožňuje kód dobře strukturovat do nezávislých/autonomních bloků (procesů), které spolu komunikují pomocí posílání dobře definovaných zpráv. To je styl programováním, kterej je mi hodně blízkej (můj oblíbenej jazyk je Elixir, kterej je přesně na tomhle založenej).

S millis si můžeš vystačit, ale jakmile těch nezávsilých entit máš víc a ještě třeba několik z nich jsou stavové automaty, ještě nedejmetkopřírodo volitelně zapínatelné, začne být kód postavený nad časovacím mainloopem těžko udržovatelný a člověk musí hodně dávat pozor, aby neskončil s neudržovatelným gulášem (v případě mainloopu) nebo callback peklem (v případě použití nějakého jednoduchého kooperativního plánovače).

Já třeba hodně dělám všelijaké bezdrátové serepetičky, kde čip má jedno rádio, ale můžou k němu být připojené různé sensory (volitelně) a jakmile jsem těch sensorů měl víc, začal být ten mainloop přístup nepřiměřeně náročný na údržbu a v podstatě jsem musel :) přejít na RTOS (na ARMech) nebo aspoň na callbackový plánovač (na Atmegách).

Chápu správně že rtos mívá nějaké gui pro rychlé nastavení, tím se vygeneruje vlastní kód který lze pak třeba ještě doupravit třeba co se týče taktovací frekvence?
Nějaké GUI nějaký RTOS možná má, ale bude to spíš výjimka (trochu zbytečný luxus). U FreeRTOSu si prostě v jednom .h souboru nastavíš volby pomocí proměnných a je to. Viz např. https://github.com/maniacbug/FreeRTOS/blob/master/FreeRTOSConfig.h

RTOS se v projektu použije jako knihovna, není potřeba generovat žádné stuby nebo tak něco.

Mělo by třeba smysl použít rtos jen s jednou úlohou (ta už by si pořešila svoje časování)?
Samo o sobě to smysl spíš nedává, ale já bych to tak udělal, protože je mi jasné, že projekt stejně časem nabobtná a mainloop přestane být cool. Než to pak přepisovat pro RTOS, což je dost pracné a otravné, je lepší to pro něj napsat rovnou :)

Chtěl bych naprogramovat spíš univerzální jádro (možná s možností přejít na různé MCU, ale hlavně řešící ty problémy co jsou třeba výdy řešit, WDT, ISR, startování, update FW), potom funkce obsluhující konkrétní hw (komunikační moduly, SDkartu, další periferie) a tím mít připraveno na konkrétní funkce pro daný projekt.
Velkou část z tohodle vůbec nemusíš řešit, to ti právě řeší ten HAL.

No možná rovnou koupit konkrétní MCU v TME a udělat odboku nějaký vývojový modul sám což asi vyjde po všech stránkách lépe.
Naopak to vyjde po všech stránkách hůř - je to naprosto zbytečná práce. A je to hodně práce. Pokud se vyloženě návrhem hw nekocháš, tak bych to rozhodně nedělal a šel bych na to přesně opačně: kup si za pár švestek třeba ten Blue Pill, k němu nějaký příklad s FreeRTOSem a naopak začni programovat okamžitě, nezdržuj se s hw.

Všude se píše jaký je odběr proudu MCU při různých sleep režimech, kde zjistit nebo podle čeho odhadnout odběr bez uspávání?
ARMy mívají power domains - tj. můžeš různé periferie, časovače, občas i speciální paměti apod. vypínat a zapínat. U některých čipů i s docela malou granularitou. Takže spotřeba se odvíjí od toho, co všechno můžeš vypnout a vypneš.

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #13 kdy: 28. 04. 2019, 20:31:45 »
P.S. pro základní info o RTOSech bych celkem doporučil tenhle podcast: https://soundcloud.com/hwdevpodcast/7-rtosy-planovace-tasky Rozebírají to docela pěkně, srozumitelně a věcně.

Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« Odpověď #14 kdy: 28. 04. 2019, 22:49:38 »
Vývojová deska je jedna věc ale do simulátoru se nemusí nahrávat kód a lze rychle krokovat co se děje (což u vývojové desky neumím, ale četl jsem že by to nějak jít mělo i když asi ne tak pohodlně)

Velice pohodlně. Vývojové desky mívají na jednom usb kabelu integrované napájení, debugger, sériovou linku i programátor. Připojí se k tomu jakékoliv rozumné prostředí případně i čisté openocd + gdb.

Jak funguje abstrakce HW RTOS? Chápu, že pro multitasking může být výhodné než časovat každou věc přes millis() i když v mých projektech to zvládám a myslím že tím mám větší kontrolu.

Main loop přístup má svoje užití. Ale má i nevýhody: například časově kritické úlohy se musí řešit přímo v interruptu (blokuje to další interrupty). RTOS v interruptu např. jen naplánuje úlohu s vyšší prioritou a pustí ji už mimo interrupt (ostatní úlohy počkají). To je zase pomalejší než čistý interrupt, ale to téměř nikdy není problém. Oba přístupy jsou použitelné a vždy jde o kompromis mezi čitelností kódu a výkonem.

Chtěl bych naprogramovat spíš univerzální jádro (možná s možností přejít na různé MCU, ale hlavně řešící ty problémy co jsou třeba výdy řešit, WDT, ISR, startování, update FW), potom funkce obsluhující konkrétní hw (komunikační moduly, SDkartu, další periferie) a tím mít připraveno na konkrétní funkce pro daný projekt.

Proč vynalézat kolo? Tohle přesně poskytuje libopencm3 + nejaký rtos. Nebo v Arduino formě třeba Moteino - https://lowpowerlab.com/shop/product/184

No možná rovnou koupit konkrétní MCU v TME a udělat odboku nějaký vývojový modul sám což asi vyjde po všech stránkách lépe.

Nevyjde. Mám vlastní desku, ale i tak jsem ji začal vyvíjet na STM Nucleo. Vlastní hardware jsem řešil až pak. Navrhnou správně pcb trvá dlouho a není to na první dobrou. Navíc vývojová deska řeší debugging, seriovou linku a nahrání programu do mcu. Vlastní deska to jen tak mít nebude..

Má smysl když chci spíše ovládat periferie než dělat složité výpočty vybírat MCU podle toho jestli má FPU?

Záleží jaké periferie a k čemu. I "jednoduchý" PID kontroler může využít možností FPU, když to projektu pomůže.

Všude se píše jaký je odběr proudu MCU při různých sleep režimech, kde zjistit nebo podle čeho odhadnout odběr bez uspávání?

Ty odběry při sleep režimech se typicky týkají odběru samotného instrukčního jádra. Pak musíte přidat ještě spotřebu periferií, která je taky v datasheetu obvykle popsaná. Sleep režimy jsou každopádně v embedded základ, proč nechat MCU běhat při čekání na interrupt ve smyčce, když můžu cpu jednou instrukcí pozastavit (WFI).