Forum: Mikrocontroller und Digitale Elektronik Erstes Arm CortexM4 Projekt - Schaltplan Check


von Alex V. (bastel_alex) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe bisher nur Projekte mit 8-Bit AVR gemacht - und möchte jetzt 
mit den um einiges mächtigeren ARM Prozessoren Erfahrung sammeln.

Dazu (für die Anwendung, die ich mir ausgedacht habe), habe ich einen 
ATSAM4S ausgewählt - genauer ATSAM4S16CA-AU - und eine Schaltung 
entworfen, die ihr im Anhang seht. Funktionsumfang soll sein:

- Bluetooth Kommunikation mit einem PC über SPP mit einem SPBT2632C2A 
Modul.
- Nutzung der 4 PWM Kanäle für unabhängige PWM Erzeugung im <10kHz 
Bereich
- Nutzung einer oder mehrerer onboard ADC Channel, z.B. zur 
Batteriestandsmessung
- Nutzung des onboard DAC für Signalerzeugung (erstmal allerdings 
DC-Level)
- Kommunikation mit SPI-Slaves. Davon wird einer ordentlich Daten 
schaufeln, Übertragungsrate >144kbit/s
- Programmieren/Debugging über JTAG ICE 3

Da ich nun noch nie eine Schaltung mit einem ARM Controller entworfen 
habe, habe ich mein Vorwissen von den AVR Controllern verwendet und 
möglichst viel Literatur gewälzt - u.A. das ATSAM4S Datenblatt 
(http://www.atmel.com/Images/Atmel-11100-32-bit-Cortex-M4-Microcontroller_Datasheet.pdf) 
und die Dokus zu allen Evalboards zum ATSAM4S, die ich in die Finger 
bekommen konnte (u.A. 
http://www.atmel.com/tools/atsam4s-xpro.aspx?tab=documents)

Trotzdem bin ich natürlich an einigen Stellen unsicher, was das Projekt 
angeht. Daher würde ich mich sehr freuen, wenn ihr mir ggf. Feedback 
geben könntet:
Fehlt was, ist was falsch, kann man wo reduzieren?


Außerdem (zum Verständnis) ein paar Fragen:
-Kennt ihr (so wie für die AVRs z.B. von P. Fleury) für den ATSAM4S 
irgendwo eine implementierte UART-RingBuffer-Bibliothek, die ich für die 
BT-Kommunikation nutzen kann?

-Wie funktioniert eine SPI-Kommunikation zwischen einem 32Bit Kontroller 
und normalem 8Bit-Slave? Hat die SPI-Schnittstelle des ATSAM4S 
8-Bit-Register?

- Ich möchte den Controller mit 48MHz betreiben (Baudratenfehler bei 
48MHz, 115.2kbaud/s und CD= 26 im UART_BRGR Baud Raten Generator 
Register: 0.15%). Nun habe ich gesehen, dass (anders als bei meinen 
AVRs) der MCU takt durch z.B. einen externen 12MHz Quarz und internem 
PLL+Divider erzeugt wird. Ich habe das konzept noch nicht so ganz 
verstanden: Der PLL funktioniert nur zwischen 80-240MHz. Wie bekomme ich 
aus 12MHz Crystal mein 48MHz Signal (Faktor 4)?

Beste Grüße - vielleicht kann ja jemand die (mit euren Rückmeldungen) 
verbesserte Schaltung hier auch noch gebrauchen!

von Easylife (Gast)


Lesenswert?

- VDDIO2 ist nicht versorgt.
- 100K pullups an JTAG sehr schwach.
- an RTS und CTS würde ich mir mal noch Testpunkte legen. Evtl. müssen 
hier pullups hin...

- Reset besser nicht mit 100K/4.7n.
Für gleiche Zeitkonstante 10K/47n -> stabiler bei ESD
- an JTAGSEL vielleicht nen jumper zu VCC?

von Alex V. (bastel_alex) Benutzerseite


Angehängte Dateien:

Lesenswert?

Danke für deine Anmerkungen Easylife!

Das mit den 100k pullups hatte ich mir aus p14 vom SAM4S-EK Development 
Board User Guide abgeschaut (www.atmel.com/Images/doc11139.pdf), ATASM4S 
Datenblatt sagt auch "Typical pull-up and pull-down value is 100 kΩ for 
all I/Os." - Deshalb lasse ich die mal besser so.

VDDIO2 ist korrigiert

Die RTS CTS Anmerkung war wichtig, hatte ich völlig vergessen! Am 
ehesten muss CTS vom BT Modul ja pulldown oder?

Den Reset Pullup mache ich auch wieder lieber mit 100k - vorallem, weil 
ja Batteriebetrieb und damit Faktor 10 weniger Stromverschwendung an der 
Stelle.

Zum JTAGSEL:
Ich verstehe nicht so ganz, was der macht (bisher auch nur über AVR ISP 
mkII ohne JTAG programmiert). Das Datenblatt sagt ja
"SW-DP or JTAG-DP mode is selected when JTAGSEL is low." und
"The JTAG pin and PA7 pin are used to select the JTAG Boundary Scan when 
asserted JTAGSEL at a high level and PA7 at low level."

Sofern ich das richtig verstanden habe, brauche Ich den JTAG-DP mode zum 
Programmieren/Debuggen - also JTAGSEL auf GND. Was ist denn der JTAG 
Boundary Scan, den ich bei nem Jumper zu VCC ermögliche?

Im Anhang die aktuelle Schaltung, auch um ein paar LEDs erweitert.

Kann mir zufällig jemand die Fragen zum PLL - oder 32Bit SPI - oder UART 
Ringbuffer beantworten?

Beste Grüße

von isidor (Gast)


Lesenswert?

Alex v. L. schrieb:
> ATASM4S
> Datenblatt sagt auch "Typical pull-up and pull-down value is 100 kΩ for
> all I/Os." - Deshalb lasse ich die mal besser so.

Das sind die intern "generierten" Werte. Hat nichts mit der äusseren
Beschaltung zu tun.

Lass dich beraten wenn du es schon anbietest. du wirst mit 100K
Widerständen nicht glücklich werden weil die Pegel zu leicht durch
äussere Einflüsse (Induktionsspannungen, kapazitive Aufladung/Entladung
verändert werden können.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Alles klar, gerne! Ich habe eigentlich auch nur widersprochen, weil die 
Atmel Evalboards auch 100k nutzen. Dann gehe ich aber auf nummer Sicher 
mit 10k für die JTAG-Pullups!

Um die Verringerung des RST Pullups komme ich auch nicht herum? 
(Argument Batterieversorgung)

von Easylife (Gast)


Lesenswert?

Alex v. L. schrieb:
> Um die Verringerung des RST Pullups komme ich auch nicht herum?
> (Argument Batterieversorgung)

Durch den RST pullup fließt nur solange Strom, bis der Kondensator 
aufgeladen ist. Da der RST Eingang recht hochohmig ist, dürfte es kaum 
eine Rolle spielen, ob extern 10K oder 100K verbaut sind.
10K und größerer Kondensator hat wie gesagt den Vorteil, dass die 
Resetleitung zuverlässiger auf high gehalten wird, wenn ein ESD Puls in 
das Reset Netzwerk einstreut, und das Signal kurzzeitig "nach unten" 
beeinflußt.

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.