Forum: Mikrocontroller und Digitale Elektronik komisches Problem SPI Takt MCP2515


von Philipp C. (ba4_philipp)


Lesenswert?

Hallo,

ich habe hier ein eigenartiges Problem (zumindest verstehe ich es nicht) 
mit einem Mega8 und einem MCP2515.

Ich habe mehrere Module mit diesen beiden Bausteinen um sie mittels CAN 
zu verbinden. Dabei hat eins dieser Module einen Quarz mit 11,xx MHz 
damit der UART vernünftig läuft. Die anderen Module laufen mit dem RC 
Oszillator zwischen 1 und 8 MHz. Alle MCP2515 haben einen eigenen 16 MHz 
Quarz und die Bitrate sollte auf 125kbit/s eingestellt sein. Ich 
programmiere in C mit dem avr-gcc und verwende für alle Module die 
gleiche can.h und can.c in der die SPI Funktionen und andere CAN 
Funktionen stecken (also überall identisch)

Das Problem ist nun, dass ich hier 2 Module auf dem Tisch habe mit 
unterschiedlichem Takt (einmal die 11MHz einmal 4) der Teiler für den 
SPI Takt ist auf beiden gleich eingestellt (also SPI am 11MHz 
schneller). Die beiden Platinen reden aber nicht miteinander. 2 Platinen 
bei denen jeder Mega8 auf der gleichen Frequenz läuft reden miteinander. 
Wie kann das kommen? Die Bitrate am CAN ist ja durch die Einstellung und 
den Quarz am MCP2515 festgelegt und die sind überall gleich.
Nun dachte ich kommt es vielleicht zu Störungen durch die zu hohe SPI 
Taktrate, deshalb habe ich den SPI Teiler auf den Platinen mit 11MHz mal 
verdoppelt und dann läuft es nun reden alle miteinander. Aber wenn es 
wirklich Störungen waren, warum konnten dann 2 gleichgetaktete AVR 
miteinander reden?
Außerdem stört es mich, dass zZ der SPI Bus nur mit ca. 180kHz läuft.

Hat jmd eine Idee was da passiert?

Vielen Dank
Gruß Philipp

PS: Ich habe mir mal angesehen wie das CAN Signal aussieht und es ist 
beim 11MHz Modul eindeutig schneller (höhere Bitrate)

von Ale (Gast)


Lesenswert?

Kann sein dass die integrität des Signals nicht gut ist ?

von Ralph (Gast)


Lesenswert?

Du schreibst hier einmal CAN und einmal SPI; welche der beiden 
Schnittstellen benutzt du denn jetzt?

Die beiden haben nichts miteinander zu tun, weder von der Logik noch vom 
Protokoll.

Je nach µC liegen sie vieleicht auf den gleichen Pins, können dann aber 
nicht gemeinsam genutzt werden.

Gruß
Ralph

von Philipp C. (ba4_philipp)


Lesenswert?

@Ralph der MCP2515 ist ein CAN Controller der per SPI angeschlossen 
wird. Also zwischen MCP2515 und Mega8 (der hat keinen CAN) läuft SPI und 
zwischen den Modulen läuft CAN (per MCP2515)

@Ale das hatte ich auch erst gedacht, aber warum funktioniert dann die 
Kommunikation zwischen 2 Modulen die beide mit hohem SPI Takt laufen? 
Das dürfte bei zu schlechtem Signal ja nicht funktionieren.

Gruß Philipp

von Ralph (Gast)


Lesenswert?

Dann wirst du dir die CAN Kommunikation mal sehr genau ansehen müssen.
Ein Oszilloskop wird da nicht reichen. Ich denke da eher an CAN 
Diagnosetools wie zb Canalyzer von Vektor.

Und durchforste mal die Datasheets vom MCP2515 welche SPI Bitraten zu 
welchen Canbitraten passen.

Gruß
Ralph

von Philipp C. (ba4_philipp)


Lesenswert?

Beim MCP2515 hab ich im Datenblatt nur gelesen, dass der SPI Takt nicht 
über 10MHz liegen soll. Das erreiche ich mit dem Mega8 bei weitem nicht. 
Was soll auch der SPI Takt mit der CAN Bitrate zu tun haben?

von Ralph (Gast)


Lesenswert?

es gibt da 2 mÖglichkeiten.
1. der MCP2515 hat auch nur einen Taktgenerator und muss beide Takte 
davon ableiten, also ergeben sich da Abhängigkeiten.
2. Die Daten von der einen Schnittstelle müssen in der verfügbaren Zeit 
bis zu den neuen Daten über die andere Schnittstelle übertragen sein, 
sonst drohen Datenverluste.

von Philipp C. (ba4_philipp)


Lesenswert?

zu 1: Wenn er einen HW SPI hat, dann muss es keine Abhängigkeiten geben 
erkönnte es direkt reinshiften, der Takt kommt ja vom SPI Master. 
Diesbezüglich steht auch nichts im Datenblatt nur die Angabe, dass es 
mit bis zu 10MHz funktionieren soll.

zu 2: Wenn es wirklich zu Datenverlust führen würde, dann würde das 
nicht erklären warum 2 Module die beide mit hohem SPI Takt laufen 
kommunizieren können.

Im Datenblatt steht auch nur auf Seite 71 maximal 10MHz und keine 
Abhänfigkeit vom Takt.

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.