Forum: Mikrocontroller und Digitale Elektronik SAM-Controller, Einstieg und Auswahl


von Alexxx (Gast)


Lesenswert?

Hallo,

ich habe bisher Atmel-8Bit-Controller programmiert und habe jetzt ein 
neues Projekt, bei dem die Leistungsfähigkeit des XMegas zu knapp sein 
könnte.
Deshalb überlege ich mir, auf einen 32Bitter umzusteigen.
Da wir für die Microchip-SAMs schon einen Debugger haben, wären die 
bevorzugt.
Ich habe schon nach einer Übersicht über die SAM-Controller gesucht,
aber nix gefunden, wo die für mich wichtige Peripherie parametrisch
gesucht werden kann. Habt ihr mir da einen Link?

Wo gibt es eine Info, WAS genau in dem Prozessor mit Gehäuse xy drin 
ist?
*Wo ist die Portbelegung des dezidierten Typs zu finden?*
Wo gibt es gute Tutorials oder Einführungen in einen Prozessortyp?

Meine (sich teilweise sich widersprechenden) Anforderungen:
- maximale Gehäusegröße 7x7, wenn möglich kein BGA, besser QFN.
  5x5 Gehäusegröße wäre wünschenswert
- mindestens 48MHz Systemtakt
- Aller mindestens 3 benutzbare Timer, besser mehr. mind. 2 PWMs
  + >= 1 Modul zum Frequenz messen -> Zeit-Capture
- 2x SPI, DMA-Einheiten
- günstig wäre auch ein Hardware-Multiplizierer
- Stromverbrauch <100mA, @3,3V

Über sachdienliche Informationen würde ich mich freuen.

von Martin (Gast)


Lesenswert?

Würde den D21 im QFN48 in den Ring werfen.
Da hast du 3 Timer für PWM, 3 GP-Timer, 7x7mm Gehäuse, 
Hardwaremultiplier in 1-Cycle Ausführung, die Timer können Capture, SPI 
und DMA geht.
Wenn du kleinere Gehäuse suchst, wirst du um BGA nicht rumkommen.

Alexxx schrieb:
> Wo gibt es eine Info, WAS genau in dem Prozessor mit Gehäuse xy drin
> ist?

Datenblatt, unter 'Configuration Summary'

Alexxx schrieb:
> *Wo ist die Portbelegung des dezidierten Typs zu finden?*

Datenblatt, 'Pinout' und 'I/O Multiplexing'.

Wenn du keine spezielle Peripherie (USB, Ethernet, mehrere Cores) 
brauchst, sind die C und D Serie ein guter Startpunkt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alexxx schrieb:

> Wo gibt es eine Info, WAS genau in dem Prozessor mit Gehäuse xy drin
> ist?

https://www.microchip.com/ParamChartSearch/chart.aspx?branchID=211&popular=1

Wenn du bspw. als CPU einen Cortex-M0+ auswählst, ganz hinten "QFN" beim 
Gehäuse eingibst und dann vielleicht noch die mit der niedrigen 
Pinanzahl wählst, solltest du deine Wünsche problemlos erfüllt bekommen. 
Deine Peripheriewünsche werden ja wohl von praktisch allen Devices 
erfüllt.

von Alexxx (Gast)


Lesenswert?

Danke schon mal.
Was würde ein Cortex-M3 für mich bringen?
Gibt es irgendwo Tutorials, Beispiele für D21 (und Cortex-M3, 
Cortex-M4)?
Die Atmel-/Microchip-Datenblätter finde ich sch... - Da bin ich oft 
verwirrter als zuvor.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alexxx schrieb:

> Was würde ein Cortex-M3 für mich bringen?

Mehr Rechenleistung. Mehr CPU-Power scheinst du aber – zumindest nach 
dem, was du bislang geschrieben hast – nicht ernsthaft zu brauchen. 
Sind ja nicht nur M3, auch M4, M7 und M23.

Die M3 & Co. haben aber bei Atmicrochip eine völlig andere Peripherie 
als die M0+. Die Peripherie der M0+ finde ich insgesamt recht angenehm, 
modern, dagegen wirkt die vielfach von den älteren SAMs 
(prä-Cortex-M-Ära) übernommene der M3 … M7 irgendwie dinosaurierhaft.

: Bearbeitet durch Moderator
von Stefan F. (Gast)


Lesenswert?

Ein kleiner Schwenk von SAM zu STM: STM32F3 (Cortex M4F) gibt es in 
LQFP32 7x7mm

Falls Dir 32MHz genügen: STM32L0 (Cortex M0+) gibt es ebenfalls in 
LQFP32 7x7mm. Einige STM32L0 Modelle gibt es auch in TSSOP20 6,5x4,4mm 
und in UQFP20 3x3mm

Dazu kann ich Tutorials anbieten: 
http://stefanfrings.de/stm32/index.html

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Ein kleiner Schwenk von SAM zu STM32

Warum die Missioniererei?

Er schrieb doch recht deutlich, dass er für die Atmel-Linie bereits 
Entwicklungswerkzeuge hat. Ansonsten sind STM32 einfach mal anders, aber 
deshalb nicht notwendigerweise überall besser, und die paar relativ 
simplen Anforderungen, die der TE stellt, werden von derart vielen MCUs 
problemlos erfüllt, dass es kein Problem ist, auf den Wunsch Rücksicht 
zu nehmen, bereits vorhandene Entwicklungswerkzeuge beizubehalten.

von Stefan F. (Gast)


Lesenswert?

Jörg W. schrieb:
> Warum die Missioniererei?

War nicht so gemeint. Ich habe nichts gegen SAM, nur keine Ahnung.

> Ansonsten sind STM32 einfach mal anders

ohne Zweifel

> aber deshalb nicht notwendigerweise überall besser

das will ich auch nicht behaupten.

Ja, die Atmel Debugger sind (vermutlich) nicht für STM32 geeignet. 
Debugger für STM32 bekommt man allerdings fast geschenkt, insofern kann 
ein Blick ins andere lager nicht schaden.

Vielleicht gefallen ihm meine Tutorials ja so gut, dass er deswegen 
wechselt.

Das soll kein Witz sein, das waren für mich die Gründe, mich nicht 
weiter mit Atmel Produkten zu beschäftigen (ich meine jetzt nicht mein 
eigenes Tutorial sondern insgesamt die Verfügbarkeit von für mich 
verständlichen Anleitungen).

Aber wie gesagt will ich niemandem die SAM Controller mies machen. Die 
sind auch gut - gar keine Frage.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefanus F. schrieb:

> Ja, die Atmel Debugger sind (vermutlich) nicht für STM32 geeignet.

Sie gehen schon auch, aber natürlich nicht mit den 
Atmel/Microchip-Tools. Mit OpenOCD kann jeder mit jedem.

> Debugger für STM32 bekommt man allerdings fast geschenkt, insofern kann
> ein Blick ins andere lager nicht schaden.

Man muss auch mit den SAMs nicht unbedingt ein AtmelICE benutzen. Mit 
OpenOCD gehen auch FT2232-basierte Teile prima (wie natürlich auch für 
alle anderen Cortex-M), wird aber vermutlich von Atmel Studio nicht 
unterstützt.

> Das soll kein Witz sein, das waren für mich die Gründe, mich nicht
> weiter mit Atmel Produkten zu beschäftigen (ich meine jetzt nicht mein
> eigenes Tutorial sondern insgesamt die Verfügbarkeit von für mich
> verständlichen Anleitungen).

Bei den SAMDxx muss man als Einstiegshürde eigentlich nur das Clock 
System nehmen, das ist ein bisschen komplex mit seinen vielen 
Taktgenerator-Modulen. Es gibt aber hier auch schon ein paar Threads 
dazu, wie man das Ganze "bare metal" in Betrieb nehmen kann (also ohne 
ASF oder Atmel Start oder sowas).

Die eigentlichen Peripherals sind relativ straightforward, gerade dann, 
wenn man sowieso schon von den Xmegas kommt.

von Alexxx (Gast)


Lesenswert?

Danke auch für den Hinweis auf die STM32.
Bei den Sams (D21) kann die Peripherie und die Ports nur mit maximal 
24MHz laufen?
Toll finde ich beim D21 dass er ein Eventsystem hat.
Bei meinen Anforderungen bin ich noch vorsichtig, da ich noch nicht 
alles beieinander habe, was ich brauche.
Jedenfalls habe ich komplexe Timings, muss einen Datenstrom von mind. 
2MBits/s einlesen, verarbeiten und Datenframes vorbereiten zum 
ausgeben...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alexxx schrieb:
> Bei den Sams (D21) kann die Peripherie und die Ports nur mit maximal
> 24MHz laufen?

Ja, ich glaube.

Die größeren sind da natürlich auch schneller, wir haben hier gerade 
Cortex-M7 mit 160 MHz Peripherietakt in Benutzung.

von Frank K. (fchk)


Lesenswert?

Der Programmer ist nicht der Kostenfaktor. Ja, jeder Hersteller hat da 
was eigenes, aber Du kannst Dier auch einen JLink kaufen, der so gut wie 
alle ARM-Controller sowie PIC32 (MIPS, ähnliche Leistungsklasse) Renesas 
RX und RISC-V kann. Das ist sozusagen der Standard im Embedded-Bereich.

fchk

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Jörg W. schrieb:
> Die M3 & Co. haben aber bei Atmicrochip eine völlig andere Peripherie
> als die M0+. Die Peripherie der M0+ finde ich insgesamt recht angenehm,
> modern, dagegen wirkt die vielfach von den älteren SAMs
> (prä-Cortex-M-Ära) übernommene der M3 … M7 irgendwie dinosaurierhaft.

Atmel hat doch mal damit geworben, dass die Periph. gleich bleibt für 
neuere Devices, damit man schneller umziehen kann.
Das sorgt dann natürlich für Dinosaurier Periph aus ARM7TDMI Zeiten 
selbst bei neueren Cortex-A5 SoCs.

Die STM32 Periph wird dann bei Cortex-M90 (oder sowas) sicher auch 
irgendwann also Dino beschimpft.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Mw E. schrieb:
> Atmel hat doch mal damit geworben, dass die Periph. gleich bleibt für
> neuere Devices, damit man schneller umziehen kann.

Zum anderen haben sie dann wieder so sinnfreie Aktionen dabei: beim 
Umzug von SAM4E auf SAME70 bekam das TWI eine Erweiterung, um schneller 
arbeiten zu können. Daher ist es jetzt ein "High-Speed Two-Wire 
Interface", folglich wurden nicht nur die Basisregister von TWIx auf 
TWIHSx umbenannt, sondern natürlich auch (wie zu Kernighan und Ritchies 
Zeiten) alle Bitfelder und Konstanten darin heißen dann statt TWI_XXX 
jetzt TWIHS_XXX. Selbstredend, obwohl die Register bis auf die 
zusätzlichen Bits für die Feature-Erweiterung 1:1 identisch sind.

Die Hardwareentwickler, die diese Umbenennung so gedankenlos 
durchgezogen haben, sollte man mal ein Vierteljahr in die 
Softwareentwicklung stecken …

: Bearbeitet durch Moderator
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Kannst ja das Softpack/ASF nuzen.
Oh moment, da heißt es ja auch anders ;)
(ist zudem auch genauso verbuggt wie der STM32 HAL)
Ist schon geil, wenn der USART ein FractionalPart hat aber der vom 
Treiber nicht genutzt wird und man sich wundert wieso der UART die 
1Mbaud mit 4% Abweichung raushustet obwohls bangOn gehen sollte mit FP 
:/

Alles muss man selber machen, sonst ist es sch**sse.

von Adam P. (adamap)


Lesenswert?

Alexxx schrieb:
> Wo gibt es eine Info, WAS genau in dem Prozessor mit Gehäuse xy drin
> ist?
> *Wo ist die Portbelegung des dezidierten Typs zu finden?*

Grobe Übersicht:
http://ww1.microchip.com/downloads/en/DeviceDoc/60001455D.pdf

Genaue infos dann im jeweiligen Datenblatt.

Wenn du auch mit 10x10 leben könntest, dann nimm den SAM4S oder eher den 
SAM4E.

Aber nimm nicht den SAM4L...der ist bzgl. DMA echt so umständlich.

Beim SAM4E hat jede Peripherie die DMA (PDC) unterstützt, direkt 
Register bei der Peripherie....beim SAM4L muss man alles umständlich 
zuweisen.

Ist nur ein Vorschlag. JA, es entspricht nicht deiner gewünschten 
Baugröße aber Power haben sie. :)


Die SAM D nutzen das neue Framework, ja das ist Geschmackssache, außer 
du progst eh alles selbst, dann ist es eh egal ;)

Das ASF ansich hat paar Bugs oder manchmal sogar nicht alles enthalten, 
aber lässt sich recht leicht ändern/erweitern.

Gruß

: Bearbeitet durch User
Beitrag #5979050 wurde von einem Moderator gelöscht.
von Alexxx (Gast)


Lesenswert?

Danke nochmals für die ganzen Infos zu euren Erfahrungen.

Ich finde das ASF undurchschaubar, alles in zig unter-unter...-Ordnern 
verteilt.
Gibt es für den D21 etc. keine überschaubare, schlanke HAL?
Nochmal die Frage nach Tutorials!
Die Explain-Spielzeug-Boards benutzen ja das ASF. Da lernt man nicht die 
ganzen Feinheiten von Takterzeugung, den Bridges und anderer Peripherie.
Wie hat die grundsätzliche Initialisierung statt zu finden?
Welche Fallstrike/Einschränkungen/Dokulücken gibt es?
Im SAM D21 Family Data sh. gibt es keinen Errata-Abschnitt mehr?

Für was ist eigentlich das auxiliary Flash? Kann man da einfach 
Justierkonstante etc. speichern?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Alexxx schrieb:
> Gibt es für den D21 etc. keine überschaubare, schlanke HAL?

Eigentlich steht alles was man wissen muss im ReferenceManual.
Die Bitedefinitionen muss man nicht abtippen, dafür gibts die CMSIS 
Header.
Die CMSIS Header sollten sich auf der Herstellerwebseite oder in einem 
der vielen ASF Ordner finden lassen.

Im Gegensatz zu den AVRs musste ersteinmal für jede Periph, die du 
nutzen willst, den Takt einschalten.
ARM SOCs haben nämlich meist sowas wie einen System Controller und Power 
Manager.

Desweiteren starten die mit einem Grundtakt aus einem internen RC 
Oszilaltor und dann darfste selber per PLL den neuen, hohen Takt 
einstellen.
Auf ein externes Quarz muss man auch selber umschalten.

Die Bridges sind ersteinmal egal, die sind transparent.
Erst bei größeren SOCs kann man an der der Busmatrix Prioritäten und 
Schedulingverfahren umstellen.

von Rudolph R. (rudolph)


Lesenswert?

Ich benutze inzwischen ganz gerne die C21, die C20 sind die Variante 
davon ohne CAN, das müssten so ziemlich die aktuellsten M0+ von Atmel 
bzw. Microchip sein.
Das TQFP32 von denen hat 7x7 mm mit 0,8mm Pitch.
Danach kamen die D5x/E5x auf den Markt, das sind M4F die bis 120MHz 
getaktet werden sollen.
Die QFN48 davon haben ebenfalls 7x7 mm.

Die neuesten Controller aus der Familie müssten die SAML11 sein, die 
haben aber weniger Peripherie als die C21 und die E51.
Nur finde ich die ohne CAN-FD ohnehin nicht sonderlich interessant. :-)

Die Errata sheets sind extra Dokumente:
https://www.microchip.com/wwwproducts/en/ATSAMC21E18A

von Stefan F. (Gast)


Lesenswert?

Alexxx schrieb:
> Die Explain-Spielzeug-Boards benutzen ja das ASF. Da lernt man nicht die
> ganzen Feinheiten von Takterzeugung, den Bridges und anderer Peripherie.

Gut erkannt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rudolph R. schrieb:
> das müssten so ziemlich die aktuellsten M0+ von Atmel bzw. Microchip
> sein.

Die C sind halt 5-V-Typen, dürften ansonsten den Ds sehr ähnlich sein.

Alexxx schrieb:
> keine überschaubare, schlanke HAL?

So recht nicht, aber das, was andere als HAL bezeichnen, ist durchaus 
auch nicht wirklich schlank, leider.

Wie gesagt, es gibt hier im Forum Threads für einen "bare metal"-Anfang, 
der die grundlegende Initialisierung der diversen Takte enthält.

Grundsätzlich laufen die Dinger auch erstmal mit einem internen Takt 
los, der ist eben nur vergleichsweise langsam (2 MHz wimre.).

: Bearbeitet durch Moderator
von Martin (Gast)


Lesenswert?

Auf registerebene gibt es auf github von ataradov ein paar Starter 
Projekte, die ich gerne nehme

Beitrag #5980056 wurde von einem Moderator gelöscht.
Beitrag #5980064 wurde vom Autor gelöscht.
Beitrag #5980070 wurde von einem Moderator gelöscht.
Beitrag #5980074 wurde von einem Moderator gelöscht.
Beitrag #5980077 wurde von einem Moderator gelöscht.
Beitrag #5980084 wurde von einem Moderator gelöscht.
Beitrag #5980087 wurde vom Autor gelöscht.
Beitrag #5980088 wurde von einem Moderator gelöscht.
Beitrag #5980092 wurde vom Autor gelöscht.
Beitrag #5980095 wurde von einem Moderator gelöscht.
Beitrag #5980097 wurde von einem Moderator gelöscht.
Beitrag #5980103 wurde von einem Moderator gelöscht.
Beitrag #5980106 wurde vom Autor gelöscht.
Beitrag #5980110 wurde vom Autor gelöscht.
Beitrag #5980112 wurde von einem Moderator gelöscht.
Beitrag #5980113 wurde von einem Moderator gelöscht.
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Vor allem ist seine erste Aussage grundlegend falsch.
Hier sind genausoviele STM Leute anwesend wie ATSAM.
Beides wird ziemlich gleich empfohlen mit einer Tendenz zum STM32.
-> Daher: er will nur stänkern mit dümmsten Trollaussagen

Da der Fred bisher zivilisiert war und son Kasper hier querschießen muss 
könnten wir ja mal ab seinem ersten Post bis hierher den Löschhammer 
ansetzen?

von Rudolph R. (rudolph)


Lesenswert?

Alexxx schrieb:
> Bei den Sams (D21) kann die Peripherie und die Ports nur mit maximal
> 24MHz laufen?

Nein, mit bis 48MHz wie der Core.
Das ist etwas versteckt im Datenblatt, ab Kapitel 37.6, Seite 985.
Ein paar Timer laufen auch mit bis zu 96MHz.
Wie das gehen sollen ohne den Core auch auf 96MHz laufen zu lassen ist 
mir allerdings gerade ein Rätsel, denn nur GCLKGEN0 verträgt die 96MHz 
und da hängt der Core dran.

Beim C2x ist das ab Kapitel 45.6, Seite 1155.
Und da sieht man schon, dass der C2x anders ist, GCLKGEN0 bis 2 laufen 
mit bis zu 96MHz und 3 bis 8 laufen mit bis zu 66MHz.

Beim D/E5x ist das ab Kapitel 54.6, Seite 1989.
Der hat von allem mehr, die ersten 8 Takt-Generaoren laufen bis 200MHz 
und die meiste Peripherie läuft mit bis zu 100MHz.
Die haben auch zwei PLLs, damit ist nicht automatisch alles an den Takt 
vom Core gekoppelt.
Beim C21 bin ich gerade mit der (unbegründeten und damit sinnlosen) 
Anforderung konfrontiert, dass der CAN-Controller mit 40MHz oder einem 
vielfachen davon laufen soll, mit nur einer PLL kann ich somit den Core 
auch "nur" mit 40MHz laufen lassen, oder weniger genau aus dem internen 
Oszillator.



Was mir bei den ATSAM ansonsten sehr angenehm aufgefallen ist sind die 
ganzen SET/CLEAR/TOGGLE Register, so quer durch die ganze Peripherie.
Bei einem kurzen Ausflug zu MSP432 wat ich etwas überrascht die da nicht 
zu finden.

Sehr nett, wenn auch zum Einstieg manchmal lästig, ist auch die 
Enable-Protection mit der je nach Register auch mal einzelne Bits 
gesperrt werden.
Und oben drauf hat man noch den PAC, Peripheral Access Controller.

von Rudolph R. (rudolph)


Lesenswert?

Jörg W. schrieb:
> Grundsätzlich laufen die Dinger auch erstmal mit einem internen Takt
> los, der ist eben nur vergleichsweise langsam (2 MHz wimre.).

Die D21 starten mit 1MHz, die C2x mit 8MHz und die D/E5x mit 48MHz.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rudolph R. schrieb:
> Was mir bei den ATSAM ansonsten sehr angenehm aufgefallen ist sind die
> ganzen SET/CLEAR/TOGGLE Register, so quer durch die ganze Peripherie.

Daher schrieb ich ja oben, dass er mit dem Teil beim Umstieg von Xmega 
die wenigsten Probleme haben dürfte.

von Rudolph R. (rudolph)


Lesenswert?

Jörg W. schrieb:
> Rudolph R. schrieb:
>> Was mir bei den ATSAM ansonsten sehr angenehm aufgefallen ist sind die
>> ganzen SET/CLEAR/TOGGLE Register, so quer durch die ganze Peripherie.
>
> Daher schrieb ich ja oben, dass er mit dem Teil beim Umstieg von Xmega
> die wenigsten Probleme haben dürfte.

Da es keinen Xmega mit CAN gibt, kenne ich die so gut wie nicht.
Bei den AVR32 dürfte es ähnlich aussehen, nur waren die praktisch schon 
tot als die endlich mal in den Umlauf gingen.

Also mich hat das überrascht und ich finde es auch generell ziemlich 
krass, wie viel Peripherie in die Dinger gestopft wurde.
Dazu kommt, dass die Preise offenbar so gestaltet sind, dass man sich 
endlich mal von den AVRs verabschieden soll.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rudolph R. schrieb:

> Bei den AVR32 dürfte es ähnlich aussehen, nur waren die praktisch schon
> tot als die endlich mal in den Umlauf gingen.

Ja, sie sind von den ARMs überholt worden. Ein Nischendasein führen sie 
noch in Form der EDBG-Chips.

> Also mich hat das überrascht und ich finde es auch generell ziemlich
> krass, wie viel Peripherie in die Dinger gestopft wurde.

Das dürfte allerdings bei so ziemlich allen ARM-MCUs der Fall sein, also 
egal ob Atmicrochip, ST, NXP, ...

Daran merkt man einfach, dass die Chipfläche deutlich billiger ist als 
bei den Steinzeit-Technologien, in denen die AVRs so gefertigt werden.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.