Přechod od FPGA k Mcu

Zdravím osazenstvo fóra,
donedávna jsem všechny embedded aplikace dělal pomocí FPGA + PC ATX, nebo PC v průmyslovém provedení. FPGA obstarávalo HW funkce podle potřeb - komunikace, rychlé regulátory apod. Takové řešení mi již dnes nevyhovuje, je komplikované pro drobnější aplikace(příliš brutforce) a z větších aplikací mě vytláčí levné PLC z Asie. Celkově mi toto řešení přišlo jako ta nejuniverzálnější cesta k Embedded HW, ale dnes mi to tak nepřipadá, protože na rychlý signal processing musím stejně koupit special součástky, na komunikační protokoly také apod. A tak jsem se rozhodl přejít ve velkých aplikacích k PLC automatizaci a v menších na čistě embedded řešení pomocí Mcu. Nevím ale, kudy se vydat, s programováním mám bohaté zkušenosti od ASM až po C ++, ale otázkou je jestli PIC, ATMEGA nebo ARM. Základem je nízká pořizovací cena všech nástrojů potřených k práci vs. dostupná rychlost vs. podpora zákazníků a dokumentace. Avšak nejvíce, spolehlivost. Nemám rád zabugovaná řešení a proto jsem ochotný spolehlivosti podřídit zbylé proporce. Budu rád za jakékoliv udělené rady. V tomto případě obracím svou pozornost spíše k 32b nebo 8b Mcu.

Jestli začínáš s mcu a hodláš řešit automatizaci, doporučuju rovnou ARM. Najdi si nějakej pěkně vybavenej čip například z řady STM32F (dost paměti a hw na čipu). Já sice ještě někdy používám 8b (x51 od Silabs) ale paralelně už dělám na ARM. Taky utomatizaci.

ARM od STM je podle mě také nejlepší řešení. Za pár korun pořídíš programátor, vývojový kit a debuger na jedné desce. Kompilátor pro C je zadarmo. Já z historických důvodů používám i AVRko…s nimi se dají dělat neuvěřitelné věci s minimem úsilí a jsou velmi šikovné. Co se týče mcu PIC tak budu citovat jednoho člověka pod jehož tvrzení se sám podepíšu… “PIC NEBRAT!!!”

Odporucam STM32F4xx

Kup si:
sk.farnell.com/stmicroelectronic … 20produkty

alebo

sk.farnell.com/stmicroelectronic … dp/2009276

S STM32F1xx, STM32F2xx sa ani nezdruj, aj ked tie druhe su velmi sikovne. Cenovo sa vsak oproti STM32F4xx neoplatia. STM32F1xx povazujem za zastarale.
Pre male veci skus STM32F051.

ST ma vyvojove centrum v Prahe a vyvojove prostriedky su zadarmo ak obetujes par hodin az dni casu na ich zosuladenie a rozchodenie.

Z čeho plyne averze k PIC? Pouze se ptám, mám pár známých, kteří mi to naopak doporučili na některé aplikace a s úspěchem nasazují do některých svých projektů. Dokonce jsem byl už nakloněn k tomu se dát do 8bit, 32bit PIC. Popravdě mě ale tyhle ARM STM kity hodně nadchly a je možné že nakonec vyhrají. Popravdě, u PICu je stále fajn to, že má DIL pouzdro…

PIC - 16Fxxx/16Cxxx urcite skvele 8bit procesory vo svojej dobe. Sam som s nimi dlhe roky pracoval, kym okolo roku 1994 neprisli lepsie od iných výrobcov s lepšie realizovaným a hlavne rýchlejším jadrom. Microchip trochu zachranoval situaciu modelmi 18Fxxx a 24Fxxx a pre mnohych to bola iste dobra alternativa. Nejakú dobu mal modely s USB rozhaním v dostupných 8bitoch iba on. Tá doba je však dnes už dávno dobou minulou a okrem USB sa to dnes len tak hemží zbernicami CAN, Ethernet, LIN, rozhraniami na grafické LCD, SDA karty, 48b kamery a čo ja viem čím všetkým ešte.

Do hry prakticky vstupujú nasledovné modely

  • Atmel 8b s jadrom AVR, 32b s jadrom Cortex-Mx, ATXmega si netreba moc všímať
  • Microchip 8b a 32b
  • Freescale KINETICS - Cortex-Mx
  • NXP LPCxxxx 32b - Cortex-Mx
  • ST STM32xxxx - Cortex-Mx
  • PSoC - Cortex-Mx (ale tu mám dosť pochybnosti hlavne okolo ceny a dostupnosti konzultácií, aj keď tie hw bloky sú veľmi zaujímavé)

iste ma mnohí kolegovia doplnia o prípadné ďalšie typy na mcu.
Učiť sa robiť s niečím novým, tak by som 8b asi zavrhol pri cene 32b Cortex-M0 so 64kB Flash a 8kB RAM v okoli 2,5EUR pri jednom kuse.

Aby si mal objektivnu predstavu, sprav si tabuľku a porovnaj:

  • rýchlosť procesora a výkonnosť jadra 8b/32b/počet inštrukcií na takt

  • veľkosť RAM a Flash, prípadne EEPROM. Flash sa dá často použiť ako EEPROM, preto byť principiálne nemusí

  • rozmanitosť a škálovateľnosť periférií. Je dobré ak väčší model obsahuje nadmnožinu periférií nižšieho modelu a nie že niečo má, ale zas niečo iné mu chýba.

  • vlastnosti AD a DA časti - rýchlosť a rozlíšenie. Ísť dnes pod 12b nemá veľký zmysel pri cenách modelov s 12b AD. Z AD prevodu sa zvyčajne aj tak využíva iba malá časť (napr. Pt100 a podobne) a je dobré, keď je v nej ešte dostatočný počet dielčich hodnôt. Tu sú tiež dôležité vlastnosti internej napäťovej referencie.

  • cena pri daných perifériách, danom výkone a veľkosti pamäte

  • DMA kanály

  • EMC vlastnosti deklarované výrobcom. Možno je AVR EMI viac odolný ako STM32, ale Atmel to v datasheete nikde neuvádza. Dakmo nejaký študentík napíše prácu, že práve ním skúšaný kus odolal 6kV. Čo z toho. ST v datasheetoch uvádza síce len 2kV ale pre mňa ako konštruktéra je dôležité, že ich uvádza.

  • 5V tolerant IO. Vlastnosť, ktorá mnohé konštrukcie veľmi zjednodušuje.

  • Spotreba pri danom výkone. Darmo má nejaký procesor vyšší výkon na MHz, ak zároveň vie ísť iba do podstatne nižších frekvencií a zároveň má značne vyššiu spotrebu.

  • dostupnost vyvojovych prostriedkov. IDE, C prekladac, technicka podpora v mnozstve fór a príspevkov na nich. Množstvo dostupných príkladov a textu na webe.

  • púzdro. Dnes prakticky bez TQFP s roztečou 0,5mm sa ani nedá pohnúť. ATmegy sú s roztečou 0,8mm. Má to dopad na cenu pl. spoja a hromadné osadzovanie, ale nie nejako dramatický.

Ceny vyberaj od dodávateľov Mouser, DIGIkey, Farnell, TME. Do cenníkov SOS alebo GME ani nemusíš chodiť. Mnou odporúčaný Ti vedia tovar zo skladu dodať na druhý deň prakticky za symbolický poplatok.

Daj potom vedieť, ako Ti v tej tabuľke vyšla krížová matica a kto vypadol ako víťaz. :slight_smile:

Díky uživatel Martin. Co se týče 8bit, je to pro mne jen otázka zpětné kompatibility a nesmyslných požadavků některých mých zákazníků, kteří do toho z části vidí a 8bity prostě chtějí. Zatím u mě vede STM32 Discovery kit, který si chci objednat od Farnellu, stáhnout nějaký vhodný nástroj pro programování a začít. Pokud to správně chápu, tak se vše bude odehrávat v C, což mi velmi vyhovuje. Navíc na MCU.cz je celý seriál s příklady. Předpokládám, že i tady na foru najdu spoustu užitečných rad, jaký development kit na start použít, jaký software apod. Z počátku budu zaměřen na speciální sensoriku, pak se uvidí, třeba nějaká kamera, bude-li se dařit.

Možno by tých klientov presvedčila kompatibilita na úrovni C-cka a pekná prezentácia Tebou vytvoreného kódu v Doxygen vrátane sieťových grafov. Je to naozaj veľmi pôsobivé a každý ľahko uverí, že má kód pod kontrolou. K tomu zdarma prekladače založené na GCC. Chápem klientov, že vyžadujú kontinuitu, že keď jeden programátor odíde tak druhý bude vedieť kde má spraviť zmeny.

Podobne sa snažia výrobcovia mcu tvrdiť, že ich mcu majú jadro Cortex-Mx a preto sú s inými mcu s tým istým jadrom od iných výrobcov kompatibilné, čo je absolútny marketingový blábol.

To je těžko, prezentace jistě zapůsobí, nakolik vidím do klientely MaR, automatizace nebo embedded řešení, mám dojem, že to jde hodně dolů co se týče projektového řízení. Pokud děláme výběrové řízení, jde často striktně o cenu. Pokud se pak objevují levná PLC na nějakých přípravcích, nějaký ten Fail se vstřebá, ale děsím se, kdy tenhle marketing za každou cenu začne ovládat nějaké hazardnější, či složitější systémy. To je však na jinou debatu. Odprezentování zákazníkům bude samozřejmě namístě, bude-li možno programovat v C nebo lépe “objektově” v Cpp (natolik ještě do STM32 nevidím), jistě nebude problém 8bity opustit.

Jaké pro zajímavost používate 8b ? (klienti to chteji)
Ono totiž na úrovni C kódu jsou pro mě dva různé MCU srovnatelné pokud mají podobné HW vybavení a dostatečný výpočetní výkon pro danou třídu úloh.

Uvedu příklad.

C8051F580 (x51 od silabs): 2xUART 2x6 PCA 1xCAN 1xLIN SPI I2C ADC12bit 6xTIMER 40xI/O 50MHz

STM32F103 (ARM CM3 od ST): 5xUSART USB CAN SDIO SPI I2C 16xTIMER+PWM 112xI/O ADC12bit DAC12bit 72MHz

Relativně podobné vybavení, cena podobna,dá se snima pracovat v prostředí od KEIL UV3 UV4. Dobré a levné vybavení pro programování a debaging. S oběma dělám a není nejmenší problém s přenositelností kódu. S jedinou podmínkou - úloha nesmí přesahovat možnosti MCU jak do výpočetního výkonu tak do paměťových možností.

Takže rozhodnutí by mělo respektovat co s tím budete dělat.

A ještě jedno hledisko bych při výběru uplatnil - a to nevybírat si moc exotickou platformu. Pak se totiž může stát že není moc na výběr ve vývojových prostředcích a tomu odpovídají ceny a bohužel i kvalita. Například prodtředí od Gaisler pro SPARC ERC32 LEON3 stojí 15K EURO a není to nic moc :-/

Nerad bych píchal do vosího hnízda, tak to uvedu na pravou míru. Rozhodně se nejedná o averzi. Sám je používám v několika aplikacích a fungují spolehlivě. Dokonce obdivuji nízkou spotřebu některých typů a našlapanost periferií, ale mám prostě atmelózu. Vadí mi třeba to, že u nových typů datasheet odkazuje na datasheet, kterej je částí datasheetu k úplně jinýmu typu mcu. Nění to přeci kombajn i když mi to tak někdy příjde.

Atmelózu chápu a ihned využiji k drobnému dotazu. Mám momentálně k dispozici STM32 VL, a řekl bych, že na seznámení s ARM je to velmi dobré. Používám Attolic podle marda z Mcu.cz . Problém je, že si všímám jakési nesourodosti v knihovnách. Často musím zasahovat, upravovat. Možná pouze má chyba. Zaujalo mne však, že bych mohl sjednotit jak 8bit, tak 32bit Mcu a to vše jen ATMEL. Ten totiž také vyrábí ARM Mcu a známý by mě do 8bitů zasvětil. Tím pádem bych mohl používat jeden SW, objednávat a vyznávat se v sortimentu jen jedné firmy apod. Dělá někdo z Vás Atmel ARMy, rozdíly jistě nebudou zásadní. Děkuji!