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: 69)
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
  n Bytes über UDP empfangen Igom 5 262 21.02.2021 10:30
Letzter Beitrag: Tommy56
  Arduino über Serielle Schnittstelle rücksetzen Rainer2 5 345 12.02.2021 13:31
Letzter Beitrag: Tommy56
  Daten Übertragung RS232 Counter_07 5 426 09.02.2021 10:02
Letzter Beitrag: Counter_07
Question Daten auf SD verschlüsseln LK2567 2 254 29.01.2021 12:29
Letzter Beitrag: LK2567
  Daten in Datei löschen Karl Stanger 2 310 13.01.2021 19:54
Letzter Beitrag: Karl Stanger
  Daten zeilenweise von SD-Karte lesen Karl Stanger 3 368 06.01.2021 13:00
Letzter Beitrag: Tommy56
  HM-10 iOS keine Daten Fred0 26 1.412 17.12.2020 18:23
Letzter Beitrag: Fred0
  Bits eines Bytes einzeln nacheinander auswerten HolgerM 3 457 02.10.2020 16:47
Letzter Beitrag: Tommy56
  Mit Wemos D1 Emails empfangen? DO3GE 3 534 07.09.2020 13:48
Letzter Beitrag: DO3GE
  SMS mit Arduino Empfangen –Auswerten georg01 0 583 03.08.2020 16:05
Letzter Beitrag: georg01

Gehe zu:


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