mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik komisches Problem SPI Takt MCP2515


Autor: Philipp Co (ba4_philipp)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Ale (Gast)
Datum:

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

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp Co (ba4_philipp)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp Co (ba4_philipp)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp Co (ba4_philipp)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.