Streaming über SPI

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hallo zusammen,

ich bastle ja nebenbei einen MP3-Player. Als Decoder verwende ich einen VS1053 von VLSI. Der IC wird über SPI mit Daten gefüttert. Die Daten kommen von der SD-Karte (na wer hätte das gedacht).

Der VS hat einen DREQ-Pin. Ist dieser Pin low, ist der FiFo vom VS (zu) voll, geht er auf High, kann man mindestens 32 Byte an Daten an den VS senden.

Vom Datenfluss sieht es also dann so aus:

SD-Karte -> MCU -> VS1053.

In meinen Augen ist es suboptimal, weil:
-> Bandbreite zum Lesen der Daten wird verbraten
-> Bandbreite zum Schreiben der Daten wird verbraten
-> wenig Zeit für anderes Zeug, was die MCU noch macht

Deswegen habe ich mir überlegt ob es möglich wäre, die SD-Karte auf den SPI schreiben zu lassen und den CS-Pin vom VS1053 auf low ziehen, damit er diese dann empfängt. Sprich der Atmega würde den SPI nur noch takten, mehr aber nicht.

Würde es so funktionieren oder habe ich mal wieder was durcheinander gebracht?

Grüssle
Heinrich
 
Hi Hemi,

ich denke, daß geht HW technisch gar nicht mit einer Standard SPI Bus Schaltung.
Die Slaves senden auf der MISO Leitung und empfangen auf der MOSI Leitung.
Damit die Slaves untereinander Daten austauschen können, müssten hierzu die Leitungen gekreuzt sein. D.h. die Output Leitung der SD-Karte müsste mit der Input Leitung des MP3-Chips verbunden sein.

Vielleicht kann man sich hierzu eine Schaltung ausdenken mit der man irgendwie diesen Anwendungssfall abfangen kann. Hört sich allerdings kompliziert an.:eek: Die Idee an sich finde ich jedenfalls gut:)

Gruß
rangar
 
Hi Rangar,

irgendwie muss es aber gehen. Ich habe mir das hier angeschaut. Da schreibt der gute Mann unter anderem:

http://www.dingeldein-online.de/basteln/vs1011.html schrieb:
Eine weitere Optimierung wäre, die Daten gar nicht erst in den AVR zu laden, sondern die SD-Karte auf SPI schreiben zu lassen, zusätzlich den VS1011 zu selektieren (SDI-Mode, er liest dann Bytes vom SPI-Bus) und den Bus durch den AVR nur takten zu lassen. Dann wird nur die Hälfte der Busbandbreite benötigt.

Die Frage wäre, wie er es sich vorstellt :(

Grüsse
Heinrich
 
Hallo,

also nach meiner Meinung wird das folgendermaßen erledig ...

Die SPI-Schnittstelle besteht ja eigentlich nur aus einem Schieberegister
das zwischen SI und SO geschaltet ist. Man muß also nur die Register
der SD-Karte und des Wandlers in Reihe schalten. Man initialisiert die
beiden Geräte, dann werden die Register in Reihe geschaltet und danach
taktet der Atmel nur noch den Bus damit diie Daten fließen können.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)