Forum: Mikrocontroller und Digitale Elektronik ATxMega o. ARM-Cortex-M3


von Torben (Gast)


Lesenswert?

Hallo, ich würde gerne einen etwas besseren CAN Debugger + Router bauen 
und die Anforderungen lauten wie folgt:

6x CAN 1Mbit(max) MCP2515 o. SJA1000 11Bit + 29Bit Identifier
2x Uart to USB Bridge (z.B. mit FT2232)
1x Uart mit Max232
1x Externen Speicher (der Controller sollte ein externes Memory 
Interface besitzen)
1x Epprom
1x SD-Card
20x GPIO
Freier Compiler + schnelle Einarbeitung + Windows PC zum programmieren.
RTOS ist momentan noch kein Thema auf der Zielhardware
CPU/Mikrocontroller verfügbarkeit sofort(5AT) auch groessere Stückzahlen 
<=200 Stk.

Ich besitze gute HW und SW Kenntnisse für die Atmel Avr Serie auf, aber 
aus Zeitmangel wurde der Sprung auf die ATx oder ARM-Cortex-M3 noch 
nicht gewagt.

Momentan befinde ich mich in der Machbarkeitsstudie und schwanke 
zwischen diesen verschiedenen Kernen. Ein Bild der HW für den AtMega 
sehe ich schon mit meinem geistigen Auge.

Welchen Controller wuerdet Ihr bevorzugen und welchen ARM-Cortex-M3 z.B. 
ST, TI oder doch einen anderen?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ein STM32F20xxx hat bis zu 2x CAN mit drin.
Von NXP gibt es ein LPC2294 mit 4x CAN, der hat aber die anderen 
Anforderungen nicht.

Es gibt noch eine CPU mit 6x CAN, glaube von Renesas. Frag mich jetzt 
nicht nach der Typ-Bezeichnung.

Ich könnte bei der Einrichtung behilflich sein, PN schreiben. 
(Eclipse&Co.)

>2x Uart to USB Bridge (z.B. mit FT2232)
USB/ComPort könnte auch der STM32 direkt, ohne FTDI.

von Torben (Gast)


Lesenswert?

Hallo, internen CAN Controller ist nicht zwingend notwendig, weil es 
auch gerne externe CAN Controller sein dürfen.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die Internen CAN's können direkt über DMA bedient werden. Die externen 4 
MCP's können über 3 SPI Module angeschlossen werden.


2x Uart to USB Bridge (z.B. mit FT2232)
geht, auch direkt USB
1x Uart mit Max232
geht
1x Externen Speicher (der Controller sollte ein externes Memory
Interface besitzen)
geht
1x Epprom
IIC, geht
1x SD-Card
SDIO-IF, geht
20x GPIO
geht

Freier Compiler + schnelle Einarbeitung + Windows PC zum programmieren.
geht

CPU/Mikrocontroller verfügbarkeit sofort(5AT) auch groessere Stückzahlen
<=200 Stk.
bei Farnell anfragen. derzeit nur Einzelstücke verfügbar.

Der STM32F107 wäre ein möglicher Ersatz, da muss man allerdings noch mal 
genauer schauen.

Wieso soll die CPU innerhalb von 5 Tg verfügbar sein, so schnell ist die 
Platine nicht fertig.

von (prx) A. K. (prx)


Lesenswert?

Du erwartest aber nicht, dass der Controller 6 voll ausgelastete 
CAN-Busse per MCP2515 bei 1Mbps fullspeed tracken kann?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

RTC vergessen?

von Torben (Gast)


Lesenswert?

>Du erwartest aber nicht, dass der Controller 6 voll ausgelastete
>CAN-Busse per MCP2515 bei 1Mbps fullspeed tracken kann?

Deshalb wuerde nur memory mapped mode überleiben.

>RTC vergessen?

Stimmt.

STM32 wie ich sehe bringt die Vorteile zwei interne CAN Controller mit 
DMA zubetreiben.

Wie hoch war eure Einarbeitungszeit? Wie sieht es mit guten Tutorials 
aus? Wie ist die Unterstützung aus Forum? Wenn ich mir die 
dokumentierten Fehler vom Chip anschaue bekomme ich ein bisschen 
Bauchweh.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Von ST gibt es die die Pheriperial Lib mit jede Menge Demo Code. 
Ansonsten hier im Forum gibt es viele die den STM32 gut kennen und gerne 
helfen.

Siehe auch hier:
- STM32
- STM32 Eclipse Installation

Wenn das erste Blink-LED mal läuft und man schon viel mit AVR gemacht 
hat, hält sich die Einarbeitungszeit in den STM32 in grenzen.
Ich denke die größte Schwierigkeit ist ganz von 0 beginnend ein 
funktionierendes Eclipse hin zu bekommen, obwohl es jetzt schon einiges 
an Doku gibt.
Die Errata sieht nicht so dramatisch aus, die Fehler sind, so denke ich, 
für dein Projekt nicht wirklich relevant.

von Torben (Gast)


Lesenswert?

Hallo,

bzgl. DMA

1. Auszug ST DB STM32F20xxx

>The DMA can be used with the main peripherals:
>● SPI and I2S
>● I2C
>● USART and UART
>● General-purpose, basic and advanced-control timers TIMx
>● DAC
>● SDIO
>● Camera interface (DCMI)
>● ADC.

DMA mit dem CAN /IF wird nicht erwähnt übersehe ich etwas?

Externes SRAM Interface besitzt der ARM auch nicht oder wie schliesse 
ich weitere Bausteine an und spreche diese über das Memory Mapped I/O 
an?

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


Lesenswert?

Markus Müller schrieb:
> Von ST gibt es die die Pheriperial Lib mit jede Menge Demo Code.

Sowas habe ich zumindest bei den Atmel-SAM3 auch gesehen.

Torben schrieb:
> 2x Uart to USB Bridge (z.B. mit FT2232)

Was bringt das?  Willst du das Teil zugleich an zwei verschiedene
Hosts anschließen?

USB-PHYs sind bei den Cortexen recht gängig, würde ich statt eines
separaten FT2232 in Erwägung ziehen.

von (prx) A. K. (prx)


Lesenswert?

Torben schrieb:

> DMA mit dem CAN /IF wird nicht erwähnt übersehe ich etwas?

Von DMA habe ich beim CAN der STM32 auch nichts mitbekommen...

> Externes SRAM Interface besitzt der ARM auch nicht

...aber externes RAM geht: FSMC = Flexible Static Memory Controller.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ja, stimmt, CAN kann nicht mit DMA wegkopiert werden.
Dafür hat der CAN Receiver 2 FIFOs mit der jeweils 3 Messages zwischen 
gespeichert werden können, das sollte reichen um bei Interrupt die 
selbst weg kopieren zu können.

von Torben (Gast)


Lesenswert?

Hallo, ein paar Verständnisfragen tauchen nun auf.

FSMC:

Das FSMC Interface arbeitet als non-multiplex, aber meine SJA100 
arbeiten mit multiplexed. In der Appnote wird nur der Anschluss von RAM 
+ Flash beschrieben. Kann ich den SJA1000 relativ einfach an den STM32 
mit FSMC anschliessen? Wenn ja wo finde ich Literatur?

DMA:
Wegkopieren kann ich die Daten nicht, aber wenn ich die Messages in ein 
SRAM FIFO (SW) kopiere, dann könnte ich doch die Daten auf den USART 
kopieren oder verstehe ich das DMA Interface falsch?

Verfügbarkeit:
Schukat führt den STM32F2xxx nicht und die anderen STM32 haben eine 
relativ hohe Lieferzeit. Woher bekomme eine Kleinmenge(2) zur 
Entwicklung und wo kann ich den Controller innerhalb von 5-10AT >200Stk 
beziehen? Die Lieferzeit vom Hersteller kenne ich nicht, aber ich 
vermute die Standardlieferzeit liegt bei 20 Wochen. 20 Wochen sind nicht 
akzeptabel um darauf eine Entwickklung zu tätigen.

Jörg Wunsch schrieb:
>Was bringt das?  Willst du das Teil zugleich an zwei verschiedene
>Hosts anschließen?
>USB-PHYs sind bei den Cortexen recht gängig, würde ich statt eines
>separaten FT2232 in Erwägung ziehen.

Torben schrieb:

>2x Uart to USB Bridge (z.B. mit FT2232)

Fehler meiner Seite. Der uC muss eine USB und serielle Schnittstelle 
bieten.

von klausr (Gast)


Lesenswert?

Digikey sollte die haben.

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


Lesenswert?

Torben schrieb:
> Fehler meiner Seite. Der uC muss eine USB und serielle Schnittstelle
> bieten.

Naja, das wirst du bei vielen Cortex-M3-Controllern gleich onboard
finden.  FT2232 kannst du dir dafür wirklich sparen.

Memorycontroller mit gemultiplexten Daten-/Adressleitungen scheinen
eher nicht üblich zu sein bei Cortex-M3.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich meine das geht so:

1x Adress-Leitung (+ Steuersignale)
8x Datenleitung verwenden.

Adresse 1 ansprechen und Adresse schreiben
Adresse 0 ansprechen und Daten lesen / schreiben
(oder umgekehrt, aussage ohne Gewähr)
Ansonsten einfach anstatt FSMC das über GPIO lösen, ist zwar nicht so 
performant, aber auch akzeptabel. (Ich hab jetzt nicht die maximal 
zugelassene Zugriffszeit des SJA im Kopf.)

Bei Farnell gibt es um die 20 Stück sofort. Anrufen und nachfragen wann 
die mehr können.
Ansonsten mal direkt bei ST Deutschland fragen.

Wenn Du heute die 200 Stück einkaufst, bis in 20 Wochen ist dann auch 
die Platine + Software fertig. für die ersten 20 Demo-Boards reicht das 
auch mit Farnell.

Ansonsten bei EBV nachfragen:
http://www.ebv.com/index.php?L=0&no_cache=1&id=58&tx_ebvsearch_pi1[qs]=1&ct_ref=u6&tx_indexedsearch[sword]=STM32F20&tx_indexedsearch[results]=5&tx_indexedsearch[lang]=&search_est=fb0a30ba4490bd598331a4e31e5c1074
Die haben auf Lager und sind günstiger als Farnell.

(Oder bei Arrow oder Mouser....)

von Torben (Gast)


Lesenswert?

Hallo,

Markus Müller schrieb:

>1x Adress-Leitung (+ Steuersignale)
>8x Datenleitung verwenden.

>Adresse 1 ansprechen und Adresse schreiben
>Adresse 0 ansprechen und Daten lesen / schreiben
>(oder umgekehrt, aussage ohne Gewähr)

Das gleiche hatte ich gestern Abend im Internet gefunden mit einem 
Gatter noch an der Adress-Leitung. Zweimal die gleiche Aussage freut 
mich, aber wenn sich dazu ein HW-Entwickler, System-Entwickler oder mit 
funktionierender Hardware positiv melden würde wäre meine Entscheidung 
der ARM.

Hat jmd ansonsten gute Verbindung über seine Firma zu ST 
Systementwickler und würde eventuell meine Frage weiterreichen?

Frage:
Wie wäre Ihre Vorgehensweise bei der Benutzung eines STM32Fxx Anbindung 
mit einem multiplexed device (8Bit) z.B. RAM o. SJA1000 mit dem FMSC 
I/F? Haben Sie Appnotes für die Hardware und Software?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Den FSMC Bus hatte ich selbst noch nie verwendet, jedoch ein Kollege in 
Verbindung mit einem LCD.

Der SJA hat ein Intel/Modorola Mode, den Pin auf PullUp/Down umschaltbar 
machen (GPIO Pin vom STM32)

Dann einfach alle die die entsprechenden GPIO Pins des STM32 verdrahten.

Wenn das nicht tut kann man immer noch die Adresse/Daten "Manuell" über 
die Portfunktionen ansteuern (also GPIO ohne FSMC).

Alternativ:
Besorge Dir ein Demo-Board mit einem STM32Fxxx mit mindestens 100 Pins, 
bei dem auch der FSMC Bus herausgeführt ist und schließe da den SJA an 
und teste es selbst.
Ich hab Grad kein so board rum liegen und auch keine Lust dort einen SJA 
ran zu löten ;-)

Alternative 2:
den MCP mit SPI nutzen. Vorteil: viel weniger Leitungen auf der Platine.

Alternative 3:
Noch 2x Prozessor mit 2xCAN rein machen, die über SPI mit dem 
Haupt-Prozessor kommunizieren und auch intelligent die Daten aufbereiten 
können.
Ist zwar etwas "oversized", dafür gibt es kein Problem bei der 
Datenmenge, da der STM32 auch einiges an RAM für das Zwischenspeichern 
hat.

von m.n. (Gast)


Lesenswert?

Abweichend zu Deinen Vorzugstypen gibt es noch µCs von Renesas, die auf 
jeden Fall einen externen Bus haben und auch einen address/data MPX 
Modus bieten. Die SJA1000 anzuschließen wäre damit kein Problem, neben 
RAM und auch SDRAM an einem ext. Bus. Im Datenblatt wird es unter 'BSC' 
beschrieben.
Bei Interesse: H8SX.... und SH7286 als Beispiele.

von Torben (Gast)


Lesenswert?

Renesas steht leider nicht zur Diskussion.

Ich hoffe es meldet sich jmd noch bzgl. non-multiplexed I/F zu 
multiplexed I/F Aufbau.

von (prx) A. K. (prx)


Lesenswert?

Zumindest das FSMC der STM32F1xx kann lt. Manual sowohl muxed als auch 
nonmuxed, und es sieht so aus als ob sich sowohl diese Eigenschaft als 
auch das Timing für alle 4 Banks getrennt wählen lässt. Damit wäre 
prinzipell eine Konfiguration möglich, die muxed SJAs und nonmuxed SRAM 
erlaubt.

von Torben (Gast)


Lesenswert?

A.K.:

>Zumindest das FSMC der STM32F1xx kann lt. Manual sowohl muxed als auch
>nonmuxed, und es sieht so aus als ob sich sowohl diese Eigenschaft als
>auch das Timing für alle 4 Banks getrennt wählen lässt. Damit wäre
>prinzipell eine Konfiguration möglich, die muxed SJAs und nonmuxed SRAM
>erlaubt.

Wo hast du das gelesen?

von (prx) A. K. (prx)


Lesenswert?

Torben schrieb:

> Wo hast du das gelesen?

In der Reference (RM0008). Bei NOR-Flash und PSRAM geht muxed und 
nonmuxed. In der Reference vom STM32F2xx steht das genauso drin.

von Torben (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, hab mein STM32-P107 erhalten.

http://www.olimex.com/dev/index.html

Zum Test hab ich mir kurz das IAR ARM 6.30.xxx gedownloaded und wollte 
die Beispielrpogramme z.B. Blinky compilieren von Olimex.

Ich bin nach der Anleitung gegangen, also das Projekt geladen und "Make" 
ausgeführt. Jetzt bekomme ich die ganzen Fehler im Anhang. Arm Type 
wurde nochmal kontrolliert und sollte soweit passen. Hat jmd eine Idee?

von Torben (Gast)


Lesenswert?

Wird wohl ein Versionskonflikt sein, weil das Beispiel auf V5.5 getestet 
wurde oder?

von Torben (Gast)


Lesenswert?

CMSIS erneuert auf V2.1 nun klappt das kompilieren.

von Stefan (Gast)


Lesenswert?

schau dir auch den uc3c von atmel an, kannst deine tools wiederverwenden 
und avr studio 5 hat dazu den c compiler zu bieten. 2x can mit je 16 
mailboxen, bis 144pin incl externen bus interface und 64kb sram im core 
und 4kb aufm bus fuer peripherie·

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.