welke stm32

bprosman

Golden Member

Op zich een mooi bordje natuurlijk en de STM is een mooie processor maar ben je nu niet je eigen "beginspecificaties" om zeep aan het helpen en je blind aan het staren puur op de term "STM"?

Deze STM32F411RET6 heeft 64 pinnen dus al minder dan de ATMEGA2560, voor de snelheid hoef je he m.i. nog steeds niet te doen (gezien je andere topic wat je aan het maken bent) en je haalt jezelf een hoop 3V3 "ellende" op de nek.

Als het is om de STM te leren kennen prachtig natuurlijk, maar het lost m.i. je originele probleem niet op.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Dat matchen met registers in het datasheet is dus wat "fout" is. De boel is ontworpen als: Deze registers heeft de hardware, hoe laten we de programmeur alle mogelijkheden van de hardware gebruiken.

Ik snap dat de leverancier van die chips dat juist wil, maar voor goede software is het andersom: Wat WIL een programmeur?

Nou, bijvoorbeeld: "een incidentele waarde van een ADC kanaal lezen". Of een stroom repeterende data van het ADC kanaal verwerken met de "HT interrupt". (je geeft een 16 entry buffer en krijgt er steeds 8 tegelijk te verwerken).

Zou zo'n software laag dit soort features bieden, DAN is het nuttig.

Huidige situatie is dat de boel ontworpen is dat je in flash een "GPIO INIT STRUCTURE" kan opslaan en dan met 1 aanroep je hele GPIO of andere peripheral kan initializeren. Leuk, maar alle voorbeelden gaan dat ding dynamisch lopen vullen. Dat is niet sneller of efficienter dan GPIO->PUPDR = 0xaaaaaaa; Wat levert het mij voor gemak op als ik initstructure->PUPDR = 0xaaaaaaa; doe ipv direct in de hardware registers schrijf?

m.i. is dat ding verkeerd geschreven: Ik kan net zo goed direct in de hardware registers poken.

Ook is de hele STM wereld geneigd om te zeggen: Hier hebben we een programma en die maakt je maincode die je uit moet breiden.

Daarmee is er een stuk "hun code" die ineens "mijn code" wordt. Zit daar een bugje in dan gaat een nieuwe release dus NIET mijn code lopen verbeteren.

@bprosman: Overheen gelezen! Dit is een nucleo144.
https://nl.farnell.com/stmicroelectronics/nucleo-f412zg/dev-board-nucl…
De 41x serie is "super goedkoop uit de 4xx serie". Dan hebben ze allerlei "handig maar duur" dingen er uit gelaten. Twee extra ADCS en dat soort dingen.

DE 496 klinkt als een high-end, moderne F4 serie: https://nl.farnell.com/stmicroelectronics/nucleo-l496zg/dev-board-nucl…

De 745 is de bassis voor de 7xx serie: https://nl.farnell.com/stmicroelectronics/nucleo-h745zi-q/nucleo-144-d…

Ik ben bezig met een "doet ethernet" op een 746. (of 745, ze zijn vrijwel hetzelfde in ieder geval. Zodanig hetzelfde dat ik moet opzoeken welke ik heb....).

[Bericht gewijzigd door rew op maandag 20 juli 2020 09:31:15 (22%)

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

Special Member

je haalt jezelf een hoop 3V3 "ellende" op de nek.

Dat noemen we geen ellende, maar vooruitgang...;)   (iedere enigszins moderne CPU werkt op 3.3v of minder...)
Bijna iedere peripheral is tegenwoordig 3.3v, dus daar hoef je geen (of zelfs minder) problemen te verwachten.

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

Op 20 juli 2020 09:26:08 schreef rew:
Huidige situatie is dat de boel ontworpen is dat je in flash een "GPIO INIT STRUCTURE" kan opslaan en dan met 1 aanroep je hele GPIO of andere peripheral kan initializeren. Leuk, maar alle voorbeelden gaan dat ding dynamisch lopen vullen. Dat is niet sneller of efficienter dan GPIO->PUPDR = 0xaaaaaaa; Wat levert het mij voor gemak op als ik initstructure->PUPDR = 0xaaaaaaa; doe ipv direct in de hardware registers schrijf?

Het idee is juist dat die library het gemakkelijker maakt om de juiste bits op de juist plek te zetten. Je schrijft geen "magische getallen" in registers, waarvan je later weer moet gaan achterhalen of het bitpatroon wel klopt, je schrijft het op een leesbare manier, en laat die periferal library het op de juiste plaats zetten.

Wat is hier mis mee? Ik zie in één oogopslag wat er ingesteld wordt, en als ik die pull-up wil veranderen naar pull-down, is dat triviaal. Als jij zelf lange hexadecimale getallen in registers gaat schrijven, kan ik niet direct zien of je wel de correcte pull-up of pull-down bij het correcte pinnetje schrijft.

code:


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

Als je het zelf gaat doen, ben je steeds met triviale vragen bezig. Begint de nummering bij 0 of bij 1? Heeft elk pinnetje 1 of 2 bits in dit register? Is open-drain 0 en push-pull 1? Was pull-up nou 0 en pull-down een 1? (hint: allebei fout, maar het is ook niet andersom)

Op die manier is code ook niet triviaal te controleren; wat bij mij direct duidelijk is, kost bij de "magische getallen methode" al gauw een paar minuten om te controleren.

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

Golden Member

voor de atmega gebruik ik atmel studio 7. welk programma gebruik je het best voor de STM ?

eigenwijs = ook wijs

Zoals ik al zei, ik gebruik al jaren Atollic Truestudio, die is een paar jaar geleden overgenomen door STM, en sindsdien kun je gratis alle luxe features gebruiken. De nieuwe ontwikkelomgeving is CubeMX, maar die vind ik echt verschrikkelijk.

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

Golden Member

had je inderdaad al gezegd, en ik had het ook gelezen.
ik zal eens kijken. tnx.

eigenwijs = ook wijs

De ST-link die op deze bordjes zit, kan ook gebruikt worden als virtuele seriele poort. Dus via de usb aansluiting van het bordje kan je dan serieel communicerern met de PC. Daarnaast heb je natuurlijk ook nog de extra usart op de GPIO pinnen.
Mijn ervaringen met een van de eerste Discovery bordjes vindt je hier :
http://wiki.robotmc.be/index.php/STM32_Discovery_Print_met_ARM_Cortex_…
Ook alles gedaan met de standard peripheral library.

Op 20 juli 2020 13:54:18 schreef SparkyGSX:
Als jij zelf lange hexadecimale getallen in registers gaat schrijven, kan ik niet direct zien of je wel de correcte pull-up of pull-down bij het correcte pinnetje schrijft.

Precies. Dat is helemaal fout.

code:


palSetPadMode (GPIOB, 5, PAL_MODE_INPUT | PAL_MODE_PUPD_PU); 
palSetPadMode (GPIOB, 6, PAL_MODE_INPUT | PAL_MODE_PUPD_PU); 

(en als je voor je input ook nog OSPEED_50 wil hebben moet je die vooral toevoegen).

Dit is korter en overzichtelijker. Als je het vaak doet, dan maak je een INPUT_PULLUP define die de twee flags combineert. (misschien is die er al gewoon).

Ik zelf vind het vervelend dat ik voor veen GPIOs moet weten welke poort en pin (als twee aparte dingen) hij zit. Als ik heel PORTC als "software PWM" wil doen, dan WEET ik dat ik met PORTC bezig ben. Maar als ik drie ledjes op een GPIO Heb zitten dan wil ik gewoon een define "LED1" die naar PB4 en "LED2" die naar PC6 wijst. En als m'n LED2 ineens op PD14 moet zitten dan hoef ik maar 1 ding te veranderen. Merk op dat als PB5 en PB6 nu op 1 poort zitten, je structurele wijzigingen in je code moet aanbrengen als de functie van PB6 in een volgende revisie op PD12 komt te zitten!

De gast die ChibiOS maakt is dit de laatste tijd aan het integreren. Ik heb het aangedragen, hij heeft een opmerking gemaakt in de geest van: "Whoa, gaaf idee!" en sindsdien kan je bij steeds meer dingen als "set mode" met 1 parameter doorgeven welke pin je bedoelt. Dit gaat de goede kant op. (Veel andere dingen nog niet :-( ).

Maar goed. Programmeerstijl-discussies.... Het lijdt een beetje af van de vraag: "Wat voor STM?".

De 411 is een "aardige" met redelijk wat RAM. Als ik het goed begrepen heb: Over een paar jaar zouden we een RDA8810PL achtige MCU nemen die gewoon 256Mb interne RAM heeft!

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

Op 21 juli 2020 08:23:57 schreef rew:
Ik zelf vind het vervelend dat ik voor veen GPIOs moet weten welke poort en pin (als twee aparte dingen) hij zit.

Daar heb je absoluut gelijk in! Zelf gebruik ik dan meestal een struct met een pointer naar de poort en het pinnummer, maar het zou triviaal zijn om de pinnen gewoon oplopend te nummeren.

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

Golden Member

is de nieuwe ontwikkel omgeving: STM32cubeIDE echt een drama om mee te werken zoals sparkyGSX beweerd, of ligt het gewoon aan hem :)............... (geintje sparky ;) )
ik ben een beetje huiverig om de oude atollic treu studio te gebruiken, omdat hij straks niet meer ondersteund word of zo, of zal je de oude IDE altijd kunnen blijven gebruiken ?

eigenwijs = ook wijs

Atollic is inmiddels obsolete, en opgevolgd door STM32CubeIDE.

Allebei gebaseerd op eclipse. Eigenlijk zie ik niet zoveel verschil, dus er is geen reden om op Atollic te blijven hangen volgens mij.

Atmel studio ondersteunt ook ARMs, maar dat zijn dan wel de Atmel chips natuurlijk (SAM's). Ik heb daar geen ervaring mee trouwens dus ik kan daar verder weinig over zeggen.

Atollic wordt niet meer ge-update, maar waar heb je dat voor nodig?

Er zijn blijkbaar ook een boel mensen die CubeMX wel ok vinden, dus het is goed mogelijk dat het aan mij ligt. Ik gebruikte Atollic al een jaar of 4 voordat CubeMX uitkwam, misschien dat het wel meevalt als het allemaal nieuw voor je is. Wat houd je tegen om het gewoon allebei te proberen? Je kunt een Atollic project importeren in CubeMX, en de code wordt er niet anders van. Andersom gaat niet zomaar, maar als je van CubeMX naar Atollic wilt kunt je altijd een nieuw project maken en daar je code files in kopieeren.

[Bericht gewijzigd door SparkyGSX op donderdag 23 juli 2020 20:43:55 (17%)

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

Golden Member

even een oude topic afstoffen.

ik zie bij reichelt en mouser dat de ST chips niet of moeilijk leverbaar zijn. heeft dat met ook het chip tekort te maken ? ik dacht eigenlijk dat dat de wat meer gecompliceerde chips betrof.

eigenwijs = ook wijs

ja. Nope. (respectievelijk).

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

Ja dat lijkt mij wel, wij hebben ook grote moeilijkheden om chips te krijgen (Niet alleen ST, maar ook Infineon en andere fabrikanten)
Wij bouwen zelfs al ontwerpen om gewoon om te kunnen stappen op andere producenten als het nodig is.
Laat staan hoe het voor Hobbyisten of kleinere verbruikers moet zijn, onderdelen is op het moment heel lastig.

"Stupidity is also a gift of God, but one mustn't misuse it." - Pope John Paul II

Zo ongeveel alles is kommer en kwel kwa leveringen. Ik hoorde pas dat de i.MX RT serie CPU's nog wel redelijk goed leverbaar zijn.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
trix

Golden Member

maar hopen dat het snel beter word.

eigenwijs = ook wijs
trix

Golden Member

ik heb nu een:
nucleo-64 met een stm32f411 64 pins erop.
ik ben nu aan het kijken voor een grafisch display liefst blauw/wit, en ik had een 240x128 in gedachten daarvoor.
wat is een goed display hiervoor ? wat betreft aansturing b.v.
tnx.

eigenwijs = ook wijs

Die '411, en eigenlijk alle 64-pins STMs hebben eigenlijk nog niet genoeg pins om een "parallel LCD interface" te gaan ondersteunen. Bovendien zijn daar nogal wat fabrikant-afhankelijke dingen die dan meespelen, hetgeen als je aan kleine aantallen denkt niet interessant is om uit te zoeken of tijd in te steken.

Bovendien weet "men" dat bij dit soort resoluties de boel waarschijnlijk vanuit een klein machientje (zoals een '411) wordt aangestuurd. De chips die dit faciliteren ondersteunen dan een 24-bit-parallel interface, maar ook SPI. Ik raad aan om gewoon SPI te gebruiken. Dat kan best rap (18MHz o.i.d.) en is zolang je geen video wil afspelen gewoon prima. En als je stom doet met te lange draden, dan zet je de SPI snelheid lager en werkt het wel.

Ik zet tijdens ontwikkeling de boel niet sneller dan 6MHz zodat ik dan met m'n 12MHz logic analyser gewoon kan volgen wat er heen en terug gaat. En dan wil het me wel eens overkomen dat ik daar nooit meer aankom.

Ik heb voor een project iets van deze gekocht:
https://www.tinytronics.nl/shop/en/displays/tft/waveshare-1.8-inch-tft…

Net niet de door jou gewenste resolutie. Ik heb de Arduino driver voor dat ding naar STM geport en vooralsnog werkt dat prima. D'r zitten ook truken in dat als je een LIJN op een bepaalde kleur wil zetten, dan zeg je tegen de chip: "data writes gaan nu naar x= 100-100, y = 100-200. En dan schrijf je 100x dezelfde pixelwaarde. Dat 100x dezelfde pixel waarde kan dan met DMA, waarbij de DMA controller verteld wordt dat ie de geheugenplek niet hoeft op te hogen. Je ene pixel wordt dan dus 100x met DMA naar de chip gestuurd zonder dat je CPU daarmee belast wordt.

Volgens mij ben jij met een "1x" project bezig. Is het dan niet gewoon veel fijner om voor een tientje extra een 3.5" display van 320x240 te kopen? (dit display van mij komt op een product waar er 1000 per jaar van verkocht gaan worden wat mi.i. eigenlijk niet eens een display nodig heeft).

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

Golden Member

bedankt voor de reactie _/-\o_ .
snelheid is bij mij niet van belang, het is enkel voor text en b.v. een icoontje, SPI zou dan inderdaad wel mooi zijn (of zelfs I2C), en hoe minder draadjes hoe liever :). kleur hoeft het niet te zijn, blauw/wit is voldoende (stond ook in mijn vraag). qua afmetingen wel zo groot mogelijk (5 inch of zo zou mooi zijn). en de prijs is eigenlijk ook niet van belang, tot 150 euro b.v. is goed. backlight is wel een vereiste, zodat het in een wat donkerde omgeving goed te lezen is.

eigenwijs = ook wijs

Ik haak af als ze meer dan 20 euro kosten. :-)

In theorie kan je geld besparen door een monochroom wit-blauw scherm te kopen. Maar geld is bij jou niet zo'n probleem kennelijk. https://www.tinytronics.nl/shop/en/displays/lcd/lcd-display-128*64-pix… Dat is zo'n wit-blauw monochroom ding, maar nog steeds kleiner dan de door jou gewenste 5". (ik zou denken 98mm van links naar rechts, buitenkant PCB, maar dat is een gok. Ik heb nog niet naar interface opties gekeken van dat ding omdat ie op meerdere punten niet aan je eisen voldoet.

Ik zou afstappen van "het goedkoopste kopen omdat je de features niet nodig hebt" (zoals dat 128x64 van zojuist: dat is jaren tachtig technologie). Koop gewoon een echt LCD. En dan kennlijk zo groot mogelijk

Groter dan 3.5 inch wordt vaak al snel meer dan 320x240. En dat stapt dan weg uit de "kleine processor" hoek en dan zie je minder en minder de "low pin count" interfaces.

De eerste 5" die ik vond: https://www.tinytronics.nl/shop/en/displays/tft/waveshare-5-inch-dpi-i… heeft bijvoorbeeld een DPI interface: je CPU wordt geacht over een parallelle bus 60x per seconde de hele 800x480 pixel in 24 bit aan te bieden. (misschien maar 18 bits... wow...)

Ik denk dat je naar zo'n panel moet https://www.aliexpress.com/item/4000433742861.html als je een SPI interface wil hebben. Deze heeft op z'n minst OOK de parallelle interface, vertrouw niet op mij dat ALS er SPI op zit dat die niet bij voorbeeld alleen voor de TOUCH controller en/of SD kaart is.

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

Je zou ook eens naar een nextion display kunnen kijken. Geen idee hoeveel interactie je wilt, maar kan er grafisch best eenvoudig iets fatsoenlijks mee maken.

trix

Golden Member

Maar geld is bij jou niet zo'n probleem kennelijk.

nou, nou, nou, dat is dan niet goed over gekomen :). het is wel zo dat voor zoiets beeld bepalends van een project, het niet het goedkoopste hoef te zijn.
het zou natuurlijk ook wel makkelijk zijn, als er een bibliotheek (zeg ik dat goed ?) voor een scherm zou zijn in een STM32F411.
het moeet ook niet een scherm zijn wat over ca. 5 jaar niet meer aan te komen is, dan vallen al die "chinezen" eigenlijk al af.
ik ben de nextion en andere nog aan het bekijken.
het valt me wel tegen om een goed geschikt scherm te vinden, terwijl dit toch een veel gebruikt item is rondom een processor.

eigenwijs = ook wijs
trix

Golden Member

nou heb ik denk ik een geschikt scherm gevonden, een nextion:NX8048K070
https://wiki.iteadstudio.com/NX8048K070
nu is die er in 4 verschillende uitvoeringen, het liefst wil ik hem zonder touchscreen, maar die is moeilijker verkrijgbaar. dus bestel ik er een met touchscreen waarvan ik waarschijnlijk het touch gedeelte niet ga gebruiken.
maar ik vroeg mij af wat het verschil is tussen:

Resistief Touchscreen
Capacitive Touchscreen (is duurder)
tnx.

eigenwijs = ook wijs