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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.