Mein ARM Cortex M0 SAMD21 Mikrocontrollermodul

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo Forumgemeinde :)

Inzwischen ist mein neues Mikrocontrollermodul NanoSAMD21 fertig. :cool:


Wie der Name sicherlich verrät, basiert das Mikrocontrollermodul auf dem SMART ARM-based Mikrocontroller SAMD21 von Atmel.

Das Modul eignet sich einerseits als Einstieg in die ARM-Welt, andererseits ist es sicherlich auch durch seine extrem kompakte Bauform für den einen oder anderen Fortgeschrittenen interessant. :)






Das Modul im neuen Shop
https://www.dev-tools.de/NanoSAMD21
(ebenfalls fertig: NanoSAMD09 zum Shop, zum Forum)

Datenblatt + Schaltplan (PDF)
Atmel Studio (Atmel, Website)
SAMD Family (Atmel, Website)
SAMD21J17A Datasheet (Atmel, PDF)




Bestückt ist ein ATSAMD21J17A Mikrocontroller von Atmel, welcher alle Features der Mikrocontroller aus der SAM D Familie besitzt. Der SAM D Mikrocontroller basiert auf einem ARM Cortex M0 Kern. Er verfügt über 128kB Flash Memory und 16kB SRAM.


Der Mikrocontroller läßt sich über das Serial Wire Debug Interface (SWD) programmieren und debuggen. Auf dem Mikrocontrollermodul sitzt hierfür ein 10poliger Cortex Debug Connector (siehe Bild links). Dieser ist kompatibel zu vielen Programmierern. Ihr könnt zum Beispiel den Atmel®-ICE Programmer einsetzen, die Signalbelegung des Connectors ist pin-kompatibel zu dessen SWD-Interface (siehe Bild ganz unten). Als Entwicklungsumgebung ist Atmel Studio geeignet, diese ist kostenlos.


Das Mikrocontrollermodul ist super klein geworden, alles ist in SMD bestückt, vieles in 0603. Wenn ihr das Mikrocontrollermodul in Verbindung mit Lochrasterplatinen einsetzen möchtet, kein Problem das passt. Die Stiftleistenanschlüsse liegen auf einem 2,54mm Rastermaß. Das Mikrocontrollermodul hat eine Größe von 38mm x 44mm.


Die Ecken habe ich "abgerundet" und jeweils eine Montagebohrung vorgesehen. Die Leiterkarte wird gefräst, sie ist im Nutzen nicht geritzt. Sie liegt gut in der Hand, besonders wichtig, wenn man sie nicht montiert hat und den USB-Stecker in die MicroUSB-Fassung steckt.


Im Bereich USB habe ich ein Suppressordiodenarray und Filterelemente eingesetzt (ESD und EMI Schutz für D+, D-, VBUS).


Das Microcontrollermodul läßt sich entweder über USB VBUS mit Betriebsspannung versorgen oder über eine externe 5V Spannung am Pin P2-1. Ein linearer LDO Spannungsregler regelt daraus 3,3V. Diese werden für den SAMD21 benötigt (VDDIO, VDDIN, VDDANA).
Auf dem Modul sitzt ein Power Switch (TPS2113APW, siehe Bild links), welcher automatisch zwischen den beiden möglichen Betriebsspannungsversorgungen umschaltet. Wird keine externe Betriebsspannung an Pin P2-1 angelegt, erfolgt die Versorgung über den USB-Stecker, falls dieser angeschlossen ist. Wird eine externe Versorgungsspannung angelegt, hat diese Vorrang vor USB VBUS, das Modul wird in diesem Fall extern versorgt. Der Power Switch übernimmt noch weitere Aufgaben, es wird das sog. reverse- und cross-conduction verhindert und es wird der Strom begrenzt (typ. 640mA, genaueres siehe Datenblatt).


Im linken Bild seht ihr den bereits angesprochene LDO Linearregler (TS1117-3.3).


Am external clock/oscillator XOSC ist ein 12MHz Quarz angeschlossen.


Auch ein Uhrenquarz ist vorhanden (XOSC32K).


Am Pin PB30 des SAMD Mikrocontrollers ist eine LED angeschlossen, hier kann man sich schnell einmal einen Status anzeigen lassen.


Ich habe einen Taster für RESET und einen Taster - angeschlossen an PA13 - vorgesehen.


Leiterkarte:
Layer: 2
Material: FR4
Lötstopplack: dev-tools-blue
Silkscreen: weiß (Signalbezeichnungen)
Oberfläche: Immersion Gold




NanoSAMD21 mit angeschlossenem Atmel®-ICE Programmer und USB-Kabel
 
Zuletzt bearbeitet:

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1.030
13
38
Korntal-Münchingen, Germany
Sprachen
ANSI C, C++, PHP, Java
Hey Dirk,

sehr sehr cool, was Du da mal wieder auf die Beine gestellt hast. :adore:

Zum Thema SWD habe ich noch etwas und zwar man kann bei den Cortex-MCUs entweder den herstellereigenen Debugger (Atmel, NXP, TI, ST, ...) verwenden oder aber auch sowas wie ein Segger J-Link. Von dem gibt es eine EDU-Version, hat den gleichen Funktionsumfang wie J-Link Base, kostet nur ein Bruchteil von dem und darf nicht für den kommerziellen Einsatz verwendet werden.
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo Heinrich,
... oder aber auch sowas wie ein Segger J-Link. Von dem gibt es eine EDU-Version, hat den gleichen Funktionsumfang wie J-Link Base, kostet nur ein Bruchteil von dem und darf nicht für den kommerziellen Einsatz verwendet werden.
genau, den J-Link setze ich ebenfalls ein. Mit der EDU Version erhält man einen sehr günstigen Programmer/Debugger.

Dirk :ciao:
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Inzwischen habe ich für das ARM-Mikrocontrollermodul NanoSAMD21 eine Programmiersoftware für Windows und einen Bootloader fertig.

Die Programmiersoftware NanoProgrammer könnt ihr auch direkt in AtmelStudio einbinden. Wie dies funktioniert, werde ich noch erläutern. Der Bootloader nutzt das USB-Modul des ARM-Mikrocontrollers und erstellt ein CDC-Device, einen virtuellen COM-Port.

Die Software und Anleitungen werde ich in der nächsten Woche in das Forum stellen.

Dirk :ciao:

AtmelStudio_Configuration_009.png


NanoProgrammer09beta.png

Nano-Programmer_zip.png

 
Zuletzt bearbeitet:
  • Like
Wertungen: micado und maik

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo Achim,

er ist eigentlich schon länger fertig, veröffentlicht habe ich ihn aber noch nicht. Ich möchte noch etwas Dokumentation schreiben (leider habe ich nicht so viel Zeit dafür).

Getestet habe ich bis Windows 8.1, auf Windows 10 noch nicht (habe noch kein Windows 10).

Damit du den SAMD21 über die USB-Schnittstelle programmieren kannst, muss der Bootloader im SAMD21 programmiert sein. Das Mikrocontrollermodul wird dann auch mit programmiertem Bootloader bestellbar sein.

Ich werde die Programmiersoftware demnächst ins Forum stellen.

Dirk :ciao:
 

achim S.

Mitglied
Premium Benutzer
16 Jan 2010
548
8
18
Nähe Basel
Sprachen
ANSI C
Hallo Dirk
muss noch mal was fragen.
Deiner Antwort entnehme ich, das der ARM über USB nur programmiert werden kann, wenn ein Bootlader drauf ist. über den Atmel ICE Programmer kann er auf den ISP (???) programmiert werden ohne Bootlader? über den AVR ISP mk2 geht es nicht?
Leider gibt es zu wenig Info für sowas. Vielleicht können wir was zusammen machen. Deine Info und meine Zeit, das passt doch.
achim
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo Achim,

genau. Du kannst mit dem Atmel®-ICE Programmer (leider im Shop gerade nicht vorrätig) direkt den Mikrocontroller über SWD programmieren.

(AVRISPmkII hat ISP, PDI und TPI)

Interface: SWD (Serial Wire Debug Interface)
Connector: Cortex Debug Connector 10polig

Der SWD Connector des Atmel®-ICE Programmer passt direkt auf die Stiftleiste des Moduls.

Dirk :ciao:
 

achim S.

Mitglied
Premium Benutzer
16 Jan 2010
548
8
18
Nähe Basel
Sprachen
ANSI C
Hallo Dirk
das ist schade. Habe gerade den Nano Sam bei dir bestellt und werde was draus machen. Vom Aufbau bis zur programmierung, mit Bilder, Beispielen und Programmen. Es passt alles wunderbar in mein System
achim
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)