Forum: Mikrocontroller und Digitale Elektronik CAN controller an externen Bus


von Klaus S. (Gast)


Lesenswert?

Hallo,

ich möchte einen Standard CAN-Controller an den 16 Bit externen Bus 
eines TI DSP TMS320VC5509A anschliessen (EMIF).

Leider sind bei den meissten CAN-Controllern die Address- und 
Datenleitungen gemultiplext.

Gibt es da eine simple Lösung oder muss ich ein CPLD o.ä. dazwischen 
tun?

SPI fällt als Möglichkeit weg, auch kann der DSP nicht gewechselt 
werden.

Der Intel 82527 kann zwar 8 bit non-multiplexed was aber relativ wenig 
nutzt, der DSP im 8 bit modus nur lesen kann.

Vielen Dank,

Klaus

von H.Joachim S. (crazyhorse)


Lesenswert?

mit nem externen Register?

Im Prinzip wie da:
http://www.cs.ucr.edu/cs120B/cs120b_03fal/8051.pdf
Seite 4

von (prx) A. K. (prx)


Lesenswert?

Klaus S. schrieb:

> Der Intel 82527 kann zwar 8 bit non-multiplexed was aber relativ wenig
> nutzt, der DSP im 8 bit modus nur lesen kann.

Wo ist denn das Problem, einen 8-Bit Baustein an einen 16-Bit Bus zu 
hängen? Schreib 16 Bits und die eine Hälfte davon wird automatisch 
ignoriert weil nicht angeschlossen.

von Klaus S. (Gast)


Lesenswert?

Hallo,

vielen Dank erstmal für die schnellen Antworten.

Das mit dem Register ist dann nötig wenn ich einen normalen asynchronen 
Speicher an den gemuxten Intel bus anschliesse. Ich habe ja das 
umgekehrte Problem!

Das mit dem 8 bit Modus am 16 bit Bus ist richtig. Wäre natürlich 
effizienter, wenn die 16 bit auch komplett genutzt werden könnten.

Viele Grüsse,

Klaus

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Den SJA1000 kennst Du?
Der hat einen gemultiplexten und 8Bit Bus. Ich habe den schon benutzt 
und der funktioniert gut.

von H.Joachim S. (crazyhorse)


Lesenswert?

Ups, hab ich komplett falsch verstanden...

von Frank K. (fchk)


Lesenswert?

Klaus S. schrieb:

> ich möchte einen Standard CAN-Controller an den 16 Bit externen Bus
> eines TI DSP TMS320VC5509A anschliessen (EMIF).
>
> Leider sind bei den meissten CAN-Controllern die Address- und
> Datenleitungen gemultiplext.
>
> Gibt es da eine simple Lösung oder muss ich ein CPLD o.ä. dazwischen
> tun?

Du kannst fürs CAN einen extra Microcontroller mit eingebautem CAN 
verwenden, der das Message Handling übernimmt und nur noch die Messages 
bekommt. Ich denke da an irgendwas in Richtung PIC18F. Wird jedenfalls 
billiger als ein CPLD.

fchk

von Klaus S. (Gast)


Lesenswert?

@Markus:
Danke für den Hinweis, ja hab den SJA1000 gesehen ist auch von der 
Leistungsaufnahme besser als der Intel. Laut Datenblatt hat er einen 8 
bit gemuxten Bus. Mein Problem ist aber wie ich so einen gemuxten Bus an 
meinen nicht gemuxten DSP anschliesse.

@Frank
Ja das mit dem PIC könnte eine Lösung sein. Preis spielt aber eher eine 
untergeordnete Rolle. Wichtig für mich ist Zuverlässigkeit und 
Geschwindigkeit.

Klaus

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die Multiplex-Umschaltung an die Adress-Leitung anschließen (ALE).
Man schreibt die SJA1000 Adresse auf den Bus, dann auf eine andere 
Adresse R/W die SJA1000 Daten.

von Klaus S. (Gast)


Lesenswert?

D.h. dass ich einen zusätlichen 16 bit 2-1 mux benötige der abhängig vom 
ALE-Signal den gemuxten Bus entweder auf A oder D schalte. Ansonsten 
müsste ich ja die A- und D-Leitungen miteinander verbinden, was beim 
Schreiben ja problematisch wird...

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Nein, nicht so.
- Die A0 Adressleitung mit ALE verbinden
- D0..7 der CPU mit AD0..7 vom SJA.
- 1. Write auf Adress-Maske + 1 >> Schreibt die Adresse in den SJA
- 2. Wr/Rd auf Adress-Maske + 0 >> Schreibt/liest von dem Register

Man müsste sich das Timing-Diagramm genau anschauen, der SJA unterstützt 
die Modes Motorola und Intel.

Somit werden vom externen Speicher nur 2 Adressen benötigt.

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.