INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
SPI(?)-Schnittstelle Daten empfangen und auswerten
20.01.2020, 23:36
Beitrag #1
SPI(?)-Schnittstelle Daten empfangen und auswerten
Moin aus dem hohen Norden,

ich bin seit Wochen mit einem Projekt beschäftigt, in dem ein Atmega als Übersetzer zwischen zwei Geräten eingesetzt werden soll. Das eine Gerät (ein VW/Audi-Autoradio) kommuniziert über I2C, das andere (ein CD-Wechsler) empfängt seine Daten über eine serielle Schnittstelle. Diese beiden Schnittstellen habe ich erfolgreich entschlüsselt und mittels Atmega328 übersetzt.

Jetzt fehlt nur noch die Schnittstelle, über die der Wechsler die Informationen über aktuelle CD, Track, Min/Sek und Status ans Radio zurückmeldet, damit dies im Display angezeigt wird. Das sieht mir am ehesten nach SPI aus, aber ich bin da nicht so erfahren. Es gibt nur eine Clk- und Data-Leitung. Der Datensatz wird im Abstand von ca. 40ms immer wieder übertragen, er besteht aus 8 Bytes, wovon das 2. und 3. Byte für mich relevant sind, da sie CD- und Track-Nr. enthalten und ich nur dies übersetzen möchte.

Im Anhang mal 3 Oszi-Screenshots mit unterschiedlicher Time Base. Habt ihr eine Idee, wie ich das ganze Arduino-basiert auswerten könnte?


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.01.2020, 18:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2020 18:08 von GuaAck.)
Beitrag #2
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
Hallo,

die ersten beiden Bilder verstehe ich nicht, das kann an der Auflösung liegen. Das dritte Bild passt zu SPI (Mode 1).

Es dürfte kein Problem sein, das mit dem 328 per SPI zu empfangen. Außer: Die Standard-Arduino-SPI-LIB ermöglicht nur einen Betrieb als Master. Bei Dir scheint aber der CD-Player der Master zu sein. Als musst Du die Register des 328P selbst setzen (ist einfach, es gibt nur drei Regiter zu je 8 Bit).

Es scheint keine Select-Leitung SS zu geben. Da muss man eine Lösung finden, weil der SS die SPI-Zähler initialisiert, sonst könnte der Empfang ja mitten in der Übertragung eines Bytes starten und würde sich nicht synchronisieren. Viellecih verbindet man den SS mit ein Output des 328P und führt Triggert ihn, wenn im Protokoll eiin Fehler erkannt wurde.

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.01.2020, 23:17
Beitrag #3
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
(21.01.2020 18:07)GuaAck schrieb:  Hallo,

die ersten beiden Bilder verstehe ich nicht, das kann an der Auflösung liegen. Das dritte Bild passt zu SPI (Mode 1).

Es dürfte kein Problem sein, das mit dem 328 per SPI zu empfangen. Außer: Die Standard-Arduino-SPI-LIB ermöglicht nur einen Betrieb als Master. Bei Dir scheint aber der CD-Player der Master zu sein. Als musst Du die Register des 328P selbst setzen (ist einfach, es gibt nur drei Regiter zu je 8 Bit).

Es scheint keine Select-Leitung SS zu geben. Da muss man eine Lösung finden, weil der SS die SPI-Zähler initialisiert, sonst könnte der Empfang ja mitten in der Übertragung eines Bytes starten und würde sich nicht synchronisieren. Viellecih verbindet man den SS mit ein Output des 328P und führt Triggert ihn, wenn im Protokoll eiin Fehler erkannt wurde.

Gruß
GuaAck

Moin und danke schonmal - das letzte Bild zeigt ein übertragenes Byte, bei den beiden anderen Bildern habe ich quasi "rausgezoomt" - Bild Nr. 2 zeigt einen Datensatz bestehend aus 8 Bytes, Bild Nr. 1 zeigt das Muster der sich wiederholenden Datensätze.

Die Datenleitungen, die ich bisher implementiert habe, hatten Taktraten von unter 1 kHz und ließen sich daher über einfaches Auslesen/Schalten der digitalen Pins des Arduino einbinden. Technisch sicher nicht schön, aber es funktionierte. Diese Schnittstelle hat nun einen Takt um ca 114 khz - das ist zu schnell für diese Variante, aber ich habe mit Libraries keinerlei Erfahrungen.

Könnte man SS z.b. über einen Pin triggern, ausgelöst durch eine "Taktpause" größer 20ms auf der Clk-Leitung?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.01.2020, 00:20
Beitrag #4
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
Das mit dem SS nach der Taktpause würde gut gehen, die 20 ms habe ja gut Toleranz, da würde es ja eine einfach Schleife mit einer banalen Rechnung machen.

Ich hatte im letzten Jahr mal ein SPI-Problem und hatte mir mit einem UNO einen SPI-Slave gemacht. Den Sketch habe ich beigefügt. Im Setup müsstest Du den Mode anpassen und aus der Loop das nehmen, was Du brauchst.

Gruß
GuaAck


Angehängte Datei(en)
.ino  UNO_as_Slave.ino (Größe: 4,06 KB / Downloads: 41)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.01.2020, 13:30
Beitrag #5
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
Vielen vielen Dank!
Das werde ich heute Abend mal ausprobieren ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2020, 16:56
Beitrag #6
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
(22.01.2020 00:20)GuaAck schrieb:  Ich hatte im letzten Jahr mal ein SPI-Problem und hatte mir mit einem UNO einen SPI-Slave gemacht. Den Sketch habe ich beigefügt. Im Setup müsstest Du den Mode anpassen und aus der Loop das nehmen, was Du brauchst.

Gruß
GuaAck

Ich muss nochmal ganz blöd nachfragen. Um den Mode anzupassen müsste ich CPHA auf den Wert 1 setzen, das ergibt dann eine Summe von 0x44 - soweit bin ich nun. Aber das ist ja alles auskommentiert - wo muss das im Code verändert werden?

UND: Ich habe festgestellt dass auf der Datenleitung eine 1 gleich ein LOW-Pegel ist. Kann ich das auch irgendwo einbauen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.01.2020, 19:43
Beitrag #7
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
Meinst Du, dass Du durch Crossposting bessere Antworten bekommst?

Wo willst Du denn nun die Antworten haben? Oder willst Du keine mehr?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.01.2020, 00:54
Beitrag #8
RE: SPI(?)-Schnittstelle Daten empfangen und auswerten
(23.01.2020 16:56)RivaDynamite schrieb:  
(22.01.2020 00:20)GuaAck schrieb:  Ich hatte im letzten Jahr mal ein SPI-Problem und hatte mir mit einem UNO einen SPI-Slave gemacht. Den Sketch habe ich beigefügt. Im Setup müsstest Du den Mode anpassen und aus der Loop das nehmen, was Du brauchst.

Gruß
GuaAck

Ich muss nochmal ganz blöd nachfragen. Um den Mode anzupassen müsste ich CPHA auf den Wert 1 setzen, das ergibt dann eine Summe von 0x44 - soweit bin ich nun. Aber das ist ja alles auskommentiert - wo muss das im Code verändert werden?

UND: Ich habe festgestellt dass auf der Datenleitung eine 1 gleich ein LOW-Pegel ist. Kann ich das auch irgendwo einbauen?
SPCR = (1 << SPE) | (1 << CPHA);

Zum Pegel: Musst Du im Datenblatt/Registerbeschreibung nachlesen, ich glaube, es gibt kein Bit "Invertieren".

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mit Wemos D1 Emails empfangen? DO3GE 3 160 07.09.2020 13:48
Letzter Beitrag: DO3GE
  SMS mit Arduino Empfangen –Auswerten georg01 0 285 03.08.2020 16:05
Letzter Beitrag: georg01
  Zeichenkette auswerten Benny86 7 588 17.07.2020 16:59
Letzter Beitrag: Tommy56
  Daten auf Nextion abfragen Lampe 24 2.054 30.04.2020 15:37
Letzter Beitrag: hotsystems
Sad Frage zu Daten die vom Nextion kommen Lampe 2 557 26.04.2020 12:53
Letzter Beitrag: Lampe
  Waage über RS 232 / Serial auswerten 425t 9 1.077 31.03.2020 06:44
Letzter Beitrag: 425t
  Serielle Schnittstelle 50 baud Rainer2 14 1.250 26.03.2020 21:29
Letzter Beitrag: MicroBahner
  Vorlage für Char Array über Serielle Schnittstelle Luis90 2 645 08.03.2020 18:05
Letzter Beitrag: hotsystems
  Problem mit den Daten aus dem CAN BUS Gary 10 1.871 19.10.2019 10:21
Letzter Beitrag: Gary
  Steuerprogramm aus Matlab und Daten von Joystick miteinander verbinden Vithushan 2 816 27.09.2019 16:28
Letzter Beitrag: ardu_arne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste