Forum: Mikrocontroller und Digitale Elektronik Atsam3X8E DMA Config Key


von Flunder (flunder)


Lesenswert?

Ich versuche gerade bei einem Arduino Due die DMA anzuwerfen. Ein 
Problem, dass eigentlich jeder in der Situation gehabt haben muss finde 
ich weder bei Microchip noch bei Google.

Teile der Einstellungen sind gegen verändern geschützt, bis man einen 
Key in ein SFR schreibt. Im Datenblatt 
(Atmel-11057C-ATARM-SAM3X-SAM3A-Datasheet_23-Mar-15 Seite 380 
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf) 
steht ein 4 Byte langer Key für 24 Bit Platz im SFR -> WTF!

Ein Errata finde ich nicht auf der Atmel Seite.

In einem anderen Forum habe ich einen Code-Schnipsel gefunden. Da 
schreibt einer die ASCII Codes für "PIO" in den Platz für den Key. Das 
klingt verdächtig nach Copy-And-Paste, denn so entsperrt man die SFRs 
der GPIO.

Frage : Wie lautet folgende Code-Zeile korrekt ?
1
  DMAC->DMAC_WPMR = 0x444D414300UL;  // Disable Write Protection

von Wastl (hartundweichware)


Lesenswert?

Flunder schrieb:
> Wie lautet folgende Code-Zeile korrekt ?

Mehr als 32 Bit wirst du in das Register nicht schreiben können.

von Flunder (flunder)


Lesenswert?

Eben ! Genau darum geht es. Ich muss den Schlüssel und die Nullbits für 
kein Schutz gewünscht in ein 32-bitiges Special Function Register 
schreiben, aber der Schlüssel allein hat im Datenblatt schon 32 Bit.

Ich habe in Quelldateien vom ASF den Wert 0x444D41 für den Schlüssel 
entdeckt und werde damit mal einen Versuch starten.

: Bearbeitet durch User
von Flunder (flunder)


Lesenswert?

Könnte natürlich auch etwas aus der Abteilung, was nicht passt, wird 
passend gemacht sein.

von Wastl (hartundweichware)


Lesenswert?

Flunder schrieb:
> Ich habe in Quelldateien vom ASF den Wert 0x444D41 für den Schlüssel
> entdeckt und werde damit mal einen Versuch starten.

So viele Möglichkeiten gibt es ja nicht, da kann man ja leicht
mal herumprobieren.

Mein Versuch wäre  0x444D4101  für Enable
und                0x444D4100  für Disable

von Dieter S. (ds1)


Lesenswert?

Die Doku ist offensichtlich bei WPKEY für DMAC fehlerhaft. Wie der WPKEY 
funktioniert sieht man ja ganz gut bei den Werten für die andere 
Peripherie, dort stehen dann auch nur drei Bytes.

Und konsistent sind sie in der Doku auch nicht, WPKEY heißt teilweise 
WP_KEY.

: Bearbeitet durch User
von Flunder (flunder)


Lesenswert?

Dieter S. schrieb:
> Und konsistent sind sie in der Doku auch nicht

Ja, das interne Ram wird auch als "peripheral" bezeichnet.

Und eigentlich dachte ich, ich hätte die DMA schonmal benutzt, um dann 
zu merken, dass das Ding zwei völlig verschiedene DMAs hat.

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.