welke stm32

trix

Golden Member

zoals sommige wel weten ben ik met een redelijk groot project bezig waarbij ik nu als hoofd controller gebruik maak van een atmega2560. zoals vele al hier tegen mij hebben gezegd, kan ik beter een meer geschikte controller kiezen. voor nu voldoet de atmega, maar bij de eerste de beste aanpassing (denk aan sneller en meerdere dingen tegelijk) ga ik problemen krijgen.
dus ik ben om, duurde even maar dat is meer de "angst" om aan een nieuwe proccesor te beginnen. maar ik denk dat ik dat later ruimschoots terug win in programeer tijd.

dus ik had een STM32 op het oog, maar die lijkt niet genoeg I/O pinnen te hebben.
graag wil ik aan julie vragen wat de meest geschikte STM voor mij is:
eisen pakket is niet zo heel groot :

- goede verkrijgbaarheid
- ca. 80 I/O
- min. 20 kB RAM
- poort voor RS485 via een max485 b.v.
- liever niet een pitch van < 0,5mm
- met C te programmeren

en weet mischien iemand een goede start site voor deze controller.
tnx.

edit: het valt mij op dat waar je bij de atmega heel makkelijk het aantal beschikbare I/O kan vinden, dit bij de STM wat lastiger is.

eigenwijs = ook wijs

St heeft een prima selectie tool waar je het aantal I/O pinnen, UARTs, RAM etc. kunt selecteren.

Waar heb je 80 I/O pinnen voor nodig? Dat wordt dan een LQFP100, die heeft een pitch als 0.5mm als ik het goed heb.

Ik zou een STM32 nemen die niet al te exotisch is, voor de 407 is heel veel te vinden.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
trix

Golden Member

even grof tellen:

24 x I/O stepper driver (kan eventueel minder als je enable hardware matig doet.
20 x limit switch
6 x t.b.v. LCD (HD44780) (mag ook een ander display zijn)
10 x buttons
? x onvoorzien.

totaal: 60 X I/O

edit: de SMT32F407 lijkt inderdaad niet verkeerd.
wat bedoelen ze met: LCD parallelle interface, 8080/6800 modi
maar daar heeft nucleo natuurlijk geen proto boards voor :(

eigenwijs = ook wijs
bprosman

Golden Member

24 x I/O stepper driver (kan eventueel minder als je enable hardware matig doet.
20 x limit switch
6 x LCD (HD44780) (mag ook een ander display zijn)
10 x buttons
? x onvoorzien.

Als je die switches en buttons in een matrix zet, kun je met 11 of 12 I/O lijnen uit. Die LCD's zou je met een I2C interface heel wat kunnen winnen, dan kost je dat maar 2 lijnen :
https://nl.aliexpress.com/item/32988862895.html

Je kunt ook de datalijnen, de R/W etc parallel zetten en sturen met het [E]
signaal

zo kun je heel veel I/O pennen winnen.

en meerdere dingen tegelijk

Dat kan niet echt met 1 microcontroller.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Het aantal beschikbare IOs is "een paar minder dan het aantal pins". Als je 80 IOs nodig hebt, dan zal dat met wat moeite met een 100 pins exemplaar kunnen. Maar omdat je niet naar massaproductie zal gaan, zou ik aanraden een maatje groter te nemen: 144 pins.

Je kan voor een paar tientjes een "nucleo144" ontwikkelbord kopen. Ik kon zo snel niet goedkoper een ontwikkelbordje op ebay vinden wat goedkoper was. Ik heb er wel 1: Een STM met belachelijk veel pins, maar verder niets. Handig is om een nucleo te kopen: Dan heb je meteen een STLINK programmer in huis.

Kwa "projectmangement".... Kan je je project niet opdelen zodat je wat kleinere CPUs kan gebruiken?

De grootste pitch van STM32 CPUs is 0.5mm dus als je dat niet wilt, zit je vast.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

24 x I/O stepper driver (kan eventueel minder als je enable hardware matig doet.
20 x limit switch
6 x LCD (HD44780) (mag ook een ander display zijn)
10 x buttons

De LCD's kunnen hun 4 datalijnen en de RS samen hebben, ze behoeven enkel aparte chip_select. En de "buttons" (dat zijn toch drukknoppen?) kun je met een weerstandsketting aan 1 of 2 analoge ingangen hangen.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
trix

Golden Member

dat is waar, valt wel het een en ander te besparen wat de I/O betreft.

mijn voorkeur gaat uit naar een nucleo proto board, morgen nog eens zoeken welke nucleo het meest geschikt is.

[Bericht gewijzigd door trix op 18 juli 2020 22:52:39 (45%)]

eigenwijs = ook wijs

Op 18 juli 2020 21:46:34 schreef bprosman:
[en meerdere dingen tegelijk]
Dat kan niet echt met 1 microcontroller.

Pardon? Je kunt prima meerdere taakjes "tegelijk" draaien, achter elkaar in een idle loop, met gebruik van interrupts, of met een klein real-time OS; FreeRTOS is vrij gebruikelijk op zulke relatief kleine targets.

De "jonge generatie" snapt wel hoe moderne controllers werken ;)

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
bprosman

Golden Member

Op 18 juli 2020 22:54:23 schreef SparkyGSX:
[...]
Pardon? Je kunt prima meerdere taakjes "tegelijk" draaien, achter elkaar in een idle loop, met gebruik van interrupts, of met een klein real-time OS; FreeRTOS is vrij gebruikelijk op zulke relatief kleine targets.

De "jonge generatie" snapt wel hoe moderne controllers werken ;)

Dat het onder interrup LIJKT of je meerdere taken draait weet ik, maar hij heeft nog altijd maar 1 program counter, dus draait maar 1 instructie tegelijk. Je zet zelf ook niet voor niets het woord "tegelijk" tussen aanhalingstekens ;)
Ik schrijf ook niet voor niets "niet echt"

De jongere generatie loopt veel te vaak zijn PIC achterna.

Dan kan geen enkele single-core CPU dat, en volgens Einstein bestaat "tegelijk" sowieso niet.

Voor alle praktische toepassingen kun je een microcontroller prima meerdere dingen "tegelijk" laten doen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Zelfs simpelere microcontrollers kunnen heel veel (pseudo)tegelijk. (het staat en valt met hoe goed de software geschreven is)
Heb je echt 6 displays nodig? (Is 1 groter display niet veel handiger?)

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
EricP

mét CE

Zelfs simpelere microcontrollers kunnen heel veel (pseudo)tegelijk.

Yep. Ik heb nog een stapel AVRs in het veld staan. Die doen wat LED-7-segment displays multiplexed. Luisteren RS485 mee om te kijken of er wat voor hun voorbij komt. Doen iets met een rotary encoder om in te kunnen stellen 'wat voor hun' is. En de main loop is leeg. (nou ja, er staat 'sleep()' in om eerlijk te zijn.) En het beestje draait op 4MHz, met eigenlijk als voornaamste reden dat mijn toenmalige opdrachtgever nog een sh*tload aan die Xtals had en het is snel zat...

Tuurlijk, het houdt ergens op met dingetjes erbij stoppen. Ik ga ook niet zeggen dat een STM32 een verkeerde keuze is. Maar met 'groter' en 'meer pennen' kun je ook maar beperkt dingen 'oplossen' en het valt of staat toch met de programmeerkunsten. 6 displays? Definieer display... Als het iets is met en eigen controller (zoals een 44780), dan is '6' niet wezenlijk moeilijker dan '1'. Zit je krap in je I/O? Dan een decodertje ertussen zodat je met 3 pinnen 8 adressen kunt maken. Zit je nog krapper in je pinnen? Geef ze allemaal een AVR en maak een serieel protocolletje in de richting van terminal emulatie die je vroeger had. Daar zit een ID in zodat het juiste display luistert. Dan kosten alle displays nog maar 1 I/O pin. Al wil je er 100 aan hangen... Met een beetje mazzel heeft de controller-van-jouw-keuze 2 UARTs, dan hoef je het niet bit-banged te doen (dat wordt toch wel wat armoe...) en kun je gewoon je data in een queue douwen en er is wel een interrupthandler die het naar buiten schuift. En dat maak je 1x. En daarna hoef je er niet meer naar om te kijken.

Kortom: als je een beetje creatief bezig bent... loop je eigenlijk alleen maar 'klem' op flash en RAM. En wellicht snelheid. En natuurlijk... als je al die displays 20x per seconde wilt updaten dan is dit ook niet de juiste setup. Maar zo snel kan ik het toch niet lezen :)

Hij bedoelt 6 pinnen voor het display, geen 6 displays!

Verder kun je de I/O ook uitlezen via wat expansion chips zoals een schuifregister of een paar I2C slave IC's. Daarvoor je optocouplers zetten etc. zodat je de spanningsaanpassing hebt van 24->5 of 3V3.

Een matrix kan niet want de inputs komen uit benaderingsschakelaars.

De hoeveelheid I/O is eigenlijk niet zo van belang dat kun je er makkelijk bij maken of je moet high speed inputs nodig hebben die moet je direct aan kunnen sluiten.

Wat wel belangrijk is de hoeveelheid RAM/Flash en wat voor peripherals erin zitten zoals: Minimaal 2 uarts. Voor je uitlezing van de IR scanner en een debug port t.b.v. wat console achtige messages is ook verrekte handig.

Verder een I2C bus voor eventuele I/O expansie aansluiten andere leuke chippies zoals een RTC of eeprom voor instellingen.

SPI heb ik een bloedhekel aan, is altijd geklungel.

Die LCD parallel interface in de STM is bedoeld om een grafisch display aan te sturen van bijvoorbeeld 240x160 pixels en dat soort spul. Daar zit direct hardware support voor in de chips gebakken bij de grotere series. Ik moet ook de datasheet uitpluizen om uit te zoeken wat ze exact supporten (PS is ook een eval kit voor te krijgen met display).

Henri's Law 1: De wet van behoud van ellende. Law 2: Ellende komt nooit alleen.

Op 19 juli 2020 09:06:16 schreef henri62:
SPI heb ik een bloedhekel aan, is altijd geklungel.

Dat heb ik nou precies andersom; SPI is fantastisch, je zet een buffer klaar, stelt de DMA controller in, die gaat de data pompen (op een paar megabit per seconde, als het moet), en je krijgt een interrupt als de transfer klaar is. I2C leent zich heel slecht voor DMA transfers, je moet een state machine gaan maken om bij te houden waar je bent, want bij elke event krijg je een interrupt, en als je een beetje serieus bezig bent wilt je dat in interrupts doen, want dan kan de rest van je taakjes ook doorlopen. Als je kunt gaan wachten op elke stap wordt het een stuk gemakkelijker, maar bij professionele software kant dat vrijwel nooit.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
bprosman

Golden Member

stelt de DMA controller in, die gaat de data pompen (op een paar megabit per seconde, als het moet), en je krijgt een interrupt als de transfer klaar is. I2C leent zich heel slecht voor DMA transfers

Vraag is of je dat nodig hebt om een displaytje (of meerdere) te updaten.

De jongere generatie loopt veel te vaak zijn PIC achterna.

SPI werkt inderdaad heel fijn en snel. Enige nadeel is dat je voor iedere peripheral een extra /SS nodig hebt.
Daarom is het altijd een afweging tussen I2C en SPI: I2C is vaak handiger voor lage snelheden omdat je maar 2 i/o pinnen nodig hebt...

DMA is handig voor grafische displays omdat daar nu eenmaal grote hoeveelheden data naar toe moeten.
(als je nu in een nieuwe applicatie nog een karakterdisplay toepast wordt 't al snel bestempeld als 'antiek'... ;) )

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
buckfast_beekeeper

Golden Member

Display gewoon serieel via de uart. Voorbeeld. Heb je maar 1 I/O nodig. Wil je een ander display gebruiken, dat niet verkrijgbaar is in seriële versie, kan je nog altijd een eigen controller maken met een ATtiny404/804/1604 of PIC16F690 zoals newhaven doet.

Op 19 juli 2020 10:59:19 schreef Arco:
[...]
(als je nu in een nieuwe applicatie nog een karakterdisplay toepast wordt 't al snel bestempeld als 'antiek'... ;) )

Als dat display net doet wat je wil, wat is er dan mis mee? Ik ben nog aan een projectje bezig met een 4x40 karakters 4,89mm x 2,79mm.

Van Lambiek wordt goede geuze gemaakt.

Er is niets mis mee, maar voor commerciele nieuwe apparaten kan 't eigenlijk niet meer, de consument wil iets zien wat 'trendy' is...
(de markt stuurt nu eenmaal de vraag... ;) )

Zelfde geldt voor through-hole: ook dat wordt als iets ouderwets gezien. (men koopt dan liever een veel duurder 'moderne' versie...)

Ik heb zelfs klanten gezien die jarenlang iets met TH gebruikten en zeer tevreden waren.
Tot ze de binnenkant/print een keer zagen. Toen moest het ding meteen vervangen worden door iets wat er meer 'gelikt' uit zag...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
buckfast_beekeeper

Golden Member

Dan zeg ik domme klanten. Nieuw is niet per definitie beter. In een vorige versie gebruikten we op het werk 5 monitoren 15" per werkpost (merk weet ik al even niet meer). Die hebben het >10 jaar gedaan zonder dat er ook maar 1 is vervangen (hingen er in totaal 40). Vandaag wordt hetzelfde weergegeven op 1 48" scherm per werkpost. Allemaal Samsung. Van de 8 stuks zijn er al 5 vervangen binnen de 2 jaar.

Van Lambiek wordt goede geuze gemaakt.

@buckfast_beekeeper: prima voor de hobby, maar niet voor commerciële toepassingen natuurlijk. Voor een simpel hobby projectje gebruik ik ook wel eens een Arduino met een I2C display, je hebt niet altijd zin in de complexiteit als dat niet nodig is.

SMD is veel gemakkelijker en betrouwbaarder machinaal te produceren, vrijwel niemand heeft nog een TH productiestraat staan.

Ik heb (jaren geleden) ook nog wel iets in TH ontworpen voor een klant die dusdanig kleine aantallen nodig had dat hij ze door een stagiair kon laten solderen.

Anyway, we zijn flink aan het afdwalen. Voor de TS zou ik zeggen, begin met een STM32F4 op een discovery board of Nucleo, je kunt gemakkelijk overstappen binnen de F4 familie.

[Bericht gewijzigd door SparkyGSX op 19 juli 2020 13:06:55 (14%)]

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Dan zeg ik domme klanten.

Tja,

Dat mag zo zijn, maar het zijn wel de mensen aan wie je iets wilt verkopen... ;)
Tegenwoordig moet alles er 'smartphone-achtig' uitzien, anders koopt men het niet...

Liefst in een glimmende behuizing, met blauwe leds, en een grafisch display...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Ja, dat is allemaal zeker waar. Ik vind toch dat wij, insiders, een beetje een opvoedende taak hebben ook, en de goegemeente horen te vertellen dat ze zich niet moeten laten verleiden door modetrends of door commerciële prietpraat. Maar ik heb wel alle begrip voor diegenen die er hun kostje mee verdienen, die zullen uiteraard meegaan met wat de markt vraagt.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Moet je perse 80 io op je controller hebben of mag je ook expanders gebruiken?

PE2BAS
buckfast_beekeeper

Golden Member

Op 19 juli 2020 12:30:26 schreef SparkyGSX:
@buckfast_beekeeper: prima voor de hobby, maar niet voor commerciële toepassingen natuurlijk. Voor een simpel hobby projectje gebruik ik ook wel eens een Arduino met een I2C display, je hebt niet altijd zin in de complexiteit als dat niet nodig is.

SMD is veel gemakkelijker en betrouwbaarder machinaal te produceren, vrijwel niemand heeft nog een TH productiestraat staan.
[...]

In die redenering worden er dus massaal TH componenten vervaardigd, uitsluitend voor de hobby gebruiker. Sorry daar geloof ik geen bal van. Een bedrijf houdt geen componentenreeks in stand uitsluitend voor de hobby gebruiker. Daalt het productie niveau onder een bepaald niveau zullen ze geen dag twijfelen om het product als obsolete te zetten.

Dat TH niet betrouwbaar machinaal kan gemaakt klopt ook niet. Mijn ouders werkten beiden bij GTE Atea. Daar zijn massaal veel telefoons en TH printen gemaakt voor centrales. Net zo betrouwbaar als vandaag de SMD variant. De overschotten 1N4007 en 1N4148 ben ik vandaag nog aan het gebruiken.

Van Lambiek wordt goede geuze gemaakt.
EricP

mét CE

Waarom denk je dat die dioden overschotten zijn? :+
Maar goed... Ik denk dat je 2 soorten betrouwbaar door elkaar haalt. Bij SMD is het vaak zoiets als 'strooi die componenten er maar op en als het minder dan een halve pootdikte ofzo afwijkt, dan trekt de soldeer het wel recht'. Bij THT moet je netjes prikken. Als je naast het gaatje zit, dan is het pootje daarna gewoon krom.

Als het eenmaal in elkaar zit, dan heb ik meer vertrouwen in THT. Zeker met loodvrij solderen. Maar ja, de productie is wel moeilijker. En dus duurder. Een dus wil men het niet meer.

Het zou zomaar kunnen dat er best nog THT productie straten zijn. Alleen niet in de buurt. Arbeid is te duur hier. Dus dat ding moet je aanslingeren en met zo min mogelijk mensen in bedrijf houden. Uitval door 'kromme poten' bekent menselijke interventie. En dat willen we niet...

0.5mm is - voor mensen met goede ogen - best nog wel op de hand te solderen. Een jaar of 10 terug ook nog wel kleine aantallen productie zo gedaan (uitbesteden kost 2.5 weken, zelf doen 2 dagen. De klant wil het einde van de week hebben en betaalt daar ook voor.). Waarom niet op voorraad? Er zat 1 ASIC op (ja, die met die 0.5mm pitch...) en de 'last buy' was geweest. Een tiental producten waar dat ding in zat, dus gebruiken wat je nodig hebt en niet meer.
Niet leuk werk. Maar wel te doen...