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
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?
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.
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?
nein leider nicht, kann mit memory mapped nichts anfangen bin noch relativ neu in der materie.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.