CAN Controller

Gast #1651635
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?
Gast #1651640
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.
#1651643
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?
#1651670
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
#1651674
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren