Forum: Mikrocontroller und Digitale Elektronik CAN Controller


von g0nz00 (Gast)


Lesenswert?

Hallo,

ich habe mal eine Frage:

Welchen vorteil/nachteil hat das einbinden eines SJA1000 bei einem Mega 
µC in den oberen adressbereich für externe RAM.

Ist das einfacher/schneller als die kommunikation über SPI bei einem 
MCPxxxx?

Gruß

g0nz00

von g0nz00 (Gast)


Lesenswert?

also auf der seite von Fabian Greif

steht folgendes:

Der SJA1000 hängt am externen Bus Interface eines ATMega162 und kann so 
Memory-Mapped in den oberen RAM-Bereich des AVRs “eingeblendet” werden.

hat dieses vorteile im gegensatz zum SPI Can-Controller?

von Matthias (Gast)


Lesenswert?

Eigentlich sind "Memmory Mapped" Zugriffe etwas einfacher zu handhaben,
wenn man weiss was man tut. Außerdem geht es schneller.

Steuert man das über SPI, dann muss man alles durch einen kleinen 
Flaschenhals quetschen, da man nicht nur die Adressierung, sondern
auch das Handling des Chip-Select (Slave-Select) abhandeln muss.

Beim MMIO (Memmory Mapped IO) greift man nur auf Variablen (im RAM)
zu. Den Rest erledigt das ext. Speicherinterface. Die einzige 
Schwierigkeit besteht darin, die VAriablen zu definieren, so dass die 
Zugriffe auch
auf die richtigen Adressen erfolgen.

von Иван S. (ivan)


Lesenswert?

g0nz00 schrieb:
> Der SJA1000 hängt am externen Bus Interface eines ATMega162 und kann so
> Memory-Mapped in den oberen RAM-Bereich des AVRs “eingeblendet” werden.
>
> hat dieses vorteile im gegensatz zum SPI Can-Controller?

Du musst dann eben nichts über SPI rausdrücken, der RAM-Zugriff ist 
(meistens) schneller. Überdies sparst Du somit einen I/O-Pin.
Die Vorteile von Memory Mapped sind Dir jedoch klar, oder?

von g0nz00 (Gast)


Lesenswert?

nein leider nicht, kann mit memory mapped nichts anfangen bin noch 
relativ neu in der materie.

von g0nz00 (Gast)


Lesenswert?

danke für die erklärung.

Die CAN Bibliothek kann ja auch den SJA1000 bedienen. Da sollten doch 
die Adressen bereits enthalten sein.

Werde die mir mal angucken.

Gruß

g0nz00

von Иван S. (ivan)


Lesenswert?

Speicherzugriffe sind gegenüber Schnittstellenzugriffen schneller, 
einfacher zu programmieren und sparen Peripherie. Nachteil (muss jetzt 
nicht auf dein konkretes Projekt zutreffen): Weniger Programmspeicher 
bleibt über.

Pendant: Port-I/O (Isolated I/O): Eigener Adressraum für die 
Ein/Ausgabe.

Iwan

von H.Joachim S. (crazyhorse)


Lesenswert?

Das sieht dann für dich als Programmierer (fast) so aus, als wäre der 
SJA1000 im Chip integriert. Du schreibst und liest RAM-Adressen.
Geschwindigkeitsvorteil wurde schon erwähnt, du musst eben nicht alles 
durch die SPI quälen.
Welche Variante besser ist, kommt auf den Rest des Geräts an. Z.B. noch 
andere traffic-intensive an der SPI? Andere zeitkritische Interrupts, 
die dir einen guten Teil der Rechnerzeit abzwacken?
Ich habe bis jetzt noch nie nen parallelen CAN-Controller rangezwirbelt. 
Entweder den MCP2515 oder, wenn Probleme absehbar waren, direkt einen MC 
mit integriertem CAN. Die Auswahl ist inzwischen reichlich. Ob SJA + MC 
mit Speicherinterface ne kostengünstige Lösung ist? Platz- und 
routingmässig ist sie es nicht. Falls sowieso ext. RAM am Controller 
nötig ist, macht es evtl. Sinn. Den SJA als einziges paralleles Bauteil 
dürfte nie Sinn machen.

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.