Forum: Mikrocontroller und Digitale Elektronik Welcher CAN Controller an Cypress CY07C68013A?


von Martin K. (mkohler)


Lesenswert?

Hallo zusammen,
Meine nächste Aufgabe besteht darin, mit dem Cypress Mikrocontroller 
CY7C68013A-128AXC eine CAN Bus Anbindung zu realisieren. Der Cypress 
Mikrocontroller ist zwingend einzusetzen. Als weitere Anforderung muss 
der CAN Bus vom Mikrocontroller galvanisch getrennt sein.
Datasheet von Mikrocontroller:
http://download.cypress.com.edgesuite.net/design_resources/datasheets/contents/cy7c68013a_8.pdf

Leider unterstützt der Cypress kein SPI, daher kommt als Interface wohl 
nur der 8051 Adress- und Datenbus in Frage (Adress- und Datenleitungen 
nicht multiplexed).

Als CAN Controller kommt wohl der SJA1000 von Philips nicht in Frage, 
weil dieser nur multiplexed Adress- und Databus unterstützt - was der 
Cypress nicht kann.

Hier http://www.mikrocontroller.net/articles/CAN habe ich nun den 
AN82527 von Intel (entwickelt von Bosch) gefunden, dessen paralleles 
Interface scheint mal grob zu passen.
Detailliert habe ich die Interfaces aber noch nicht verglichen.

Die galvanische Trennung sollte wohl kein grösseres Problem sein, im CAN 
Controller kann offenbar ein Flag gesetzt werden, so dass TX0 und RX0 
als Aus- resp. Eingang auf einen separaten CAN Transceiver geführt 
werden können. (z.B. PCA82C251 
http://www.datasheetcatalog.org/datasheet/philips/PCA82C251T.pdf)
Die beiden Leitungen können dann einfach galvanisch getrennt werden.

Fragen:
- Hat jemand Erfahrung mit dem AN82527?
- evtl. in Verbindung mit dem Cypress Mikrocontroller?
- Sollte ich einen anderen Ansatz wählen, z.B. "Software-SPI" und einen 
MCP2515 von Microchip?

Sonstige Anregungen, was als CAN Anfänger noch zu beachten ist?

Danke für die Antworten.
Gruss, Martin

von crazy horse (Gast)


Lesenswert?

hm, 8051-Architektur - bei dem konnte man doch die UART auch in einen 
synchronen Modus setzen? Kann man da nicht den MCP2515 ranstricken?

Software-SPI kann schnell zum Flaschenhals werden. Kommt aber auch auf 
deine geforderte CAN-Bus-Baudrate an.

Den AN82527  kenne ich nicht.

von Martin K. (mkohler)


Lesenswert?

crazy horse wrote:
> hm, 8051-Architektur - bei dem konnte man doch die UART auch in einen
> synchronen Modus setzen? Kann man da nicht den MCP2515 ranstricken?
Hmmm... Da muss ich nachschauen, das habe ich bisher nicht beachtet.

> Software-SPI kann schnell zum Flaschenhals werden. Kommt aber auch auf
> deine geforderte CAN-Bus-Baudrate an.
Genau. Das wäre auch der letzte Strohhalm. Die Baudrate sollte bis 
1MBaud möglich sein.

von Christian S. (manatarms)


Lesenswert?

SJA1000

alt gedient, Fehler sind bekannt, Beispielcodes gibts genug.

ALE des SJA1000 über Logik aus Adresse/WR/CS oder ähnlich generieren.

Der SJA1000 hängt so bei mir an einem XSCALE.

Und dann über nen Analog Devices ADUM oder nen Silabs Isolator 
(guenstiger) und nen NTE0505 oder ähnlich an den Bus.

von Martin K. (mkohler)


Lesenswert?

Christian S. wrote:
> SJA1000
> alt gedient, Fehler sind bekannt, Beispielcodes gibts genug.
heisst Augen offen halten. Danke.

> ALE des SJA1000 über Logik aus Adresse/WR/CS oder ähnlich generieren.
> Der SJA1000 hängt so bei mir an einem XSCALE.
Hat der XScale denn auch getrennten Adress- und Datenbus wie der 
Cypress? Sonst sind wir ja bei den Äpfeln und Birnen.

> Silabs Isolator (guenstiger)
Noch nie eingesetzt. Wie sind die in Handhabung/Betrieb im Vergleich zu 
Optokopplern?

>  und nen NTE0505
DC/DC Wandler.

von Christian S. (manatarms)


Lesenswert?

Hier gibts nen Schaltplan in dem alles drin ist, was du brauchst!

http://www.toradex.com/@api/deki/files/27/=Colibri_EvaluationBoard_Schematics_Rev2.1.pdf

den 245er brauchst du nicht, wenn du keine Pegelanpassung machst. 
genausowenig wie den FET fuer die Pegelanpassung beim Interrupt.

Bin nicht von der Firma setzte aber deren Produkte ein.

Digital Isolator:

https://www.silabs.com/products/power/isolators/Pages/default.aspx

Handhabung extrem einfach. Ist wie ein Logikbuffer, den du dazwischen 
hängst. Evtl. ein bissel teurer als Optokoppler. Kommt allerdings auf 
die Geschwindigkeit an. Optokoppler find ich fuer galvanisch getrennte 
Eingänge gut, da sie robuster gegen den ein oder anderen Surge sind. 
Beim CAN hast du allerdings sowieso den Transceiver dazwischen und da 
ist es egal.

DC/DC brauchste fuer die isolierte Spannungsversorgung.

Wenn du das Produkt fertig hast kannste dich ja mal bei mir melden. 
Biete günstige und qualititativ gute Elektronikfetigung und -entwicklung 
in Asien an (deutsche Leitung und Engineering vor Ort). Beraten auch bei 
der Entwicklung bei der Wahl von Komponenten zur Kostenoptimierung. 
Hoffe das ist jetzt nicht zuviel Werbung.

Wenn du auf der SPS in Nürnberg sein solltest kannste gerne mal auf 
unseren Stand kommen. Meld dich per PM wenn du Eintrittskarte und 
Standinfo brauchst.

von Martin K. (mkohler)


Lesenswert?

Hallo Christian,
Danke für die Antwort und v.a. den Schaltplan (Seite 26).
Sehe ich das richtig, dass zwei Systembus Zugriffe erforderlich sind, um 
einen Zugriff auf den CAN Controller durchzuführen?

Elektronikentwicklung und -fertigung erledigen wir über die bereits 
bestehenden Kontakte. Danke trotzdem für das Angebot, man weiss ja nie.

von Christian S. (manatarms)


Lesenswert?

Das mit den Zugriffen siehts du richtig. Beim Setup ist dies ja von der 
Performance eh kein Problem und beim Empfang der Nachricht liest du eh 
nur von einer Adresse, da der SJA intern automatisch die Adresse im FIFO 
hochzaehlt.

von Martin K. (mkohler)


Angehängte Dateien:

Lesenswert?

Sodele, dann haben wir hier mal einen Entwurf der Schaltung.
Der SJA1000 wird direkt an den Cypress Controller angeschlossen, da 
dieser 5V-tolerante Inputs hat.

Bildlegende:
D[0:7]     : direkt an den Datenbus des uC angeschlossen
CAN_nRESET : kommt von einem Digital OUT des uC
CAN_nIRQ   : geht auf Interrupt Eingang !IRQ5 des uC
CAN_A4     : Adressleitung A4
alle weiteren Signale kommen direkt vom uC

Nach Datenblatt liefern die uC Outputs mind. 2.4V @ 4mA für einen High 
Pegel, der SJA1000 braucht 2.0V (ALE, !CS, !RD, !WR) um ein High zu 
sehen. Das sollte also passen.

Beim Reset Input muss ich wohl noch einen Level Shift einbauen, dieser 
braucht mind. 2.4V für einen High Pegel. Passt mit Open Collector und 
Pull-up also auch.

Sieht da noch einer ein Problem mit der Beschaltung?

Gruss, Martin

von Martin K. (mkohler)


Lesenswert?

Keine Kommentare?
Dann wird das so wohl passen ;-)

von Martin K. (mkohler)


Lesenswert?

Nachtrag:
Die galvanische Trennung wird dann später eingebaut, d.h. einfach RX0 
und TX0 per Optokoppler auftrennen.

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.