Hallo, ich habe da ein Problem. ich will jeweils 2 Werte parallel über SPI senden. Die Werte kommen über einen I²S rein werden gewandelt und die beiden Kanäle werden nun nicht hintereinander sondern parallel weiter gesendet. So weit zur Theorie, als Prozessor würde mir ein STM32F0 / F1 am besten gefallen. Aber da fehlt mir immer eine Schnittstelle, oder ich überlese ständig was. Aber 2 SPI / I²S Leitungen sind halt nicht 3. Eigentlich bräuchte ich noch eine SPI zum Steuern, also 4. Bin aber offen für viele andere kleine (Pin)Prozessoren. Der Prozessor ist immer der Slave,also der Takt kommt von aussen! Ich hatte schon dran gedacht einen Port per DMA zu benutzen und meine Werte von BIT in Bytes um zu mappen. Aber da rechne ich den armen Prozessor platt. Müsse ja 2* 16Bit in 1*16 Byte verpacken. Sind zwar nur 48KHz aber die Daten müssen noch bearbeitet werden. Hat jemand eine Idee wie ich die Daten raus senden könnte? VG, Uli
Hallo Uli, Aus dem was du da geschrieben hast wird mir nicht so ganz klar was du da vor hast. Also ich versuch es mal. Du hast einen Sensor ( oder ähnliches) der mit 48 Khz 32 Bit über die I2S schickt. Das wird von einem STM32 gelesen, der diese Daten dann verrechnen und über 2 SPI Kanäle weitersenden soll. An den gleichen, oder 2 unterschiedliche Empfänger ? Für was wird die SPI zur Steuerung benötigt ? Passt das so ? Es wäre wahrscheinlich sinnvoller wenn du beschreibst was du da machen willst und nicht eine Teillösung vorgibst. P.s bei der Datenrate ist der STM gnadenlos überdimensioniert. Gruß, Ralph
Uli schrieb: > Hat jemand eine Idee wie ich die Daten raus senden könnte? Müssen die Werte unbedingt bitsynchron an die jeweiligen Empfänger gesendet werden? Wofür brauchst du das? Was soll damit erreicht werden?
Schau mal nach STM32 mit "Quad-SPI interface" wie z.B. die STM32L4x1 Serie. Mit dem "Quad-SPI interface" kannst ud 4bit-Streams synchron mit einem SPI Clk rausgeben. Wird zum schreiben lesen schneller SPI Flashes vervwendet, kann aber sicher für deine Zwecke angepasst werden. Cheers
Die Quad-SPI ist nichts anderes was ich mit dem DMA-Port kram machen kann. Leider kann ich da nicht auf den 2/4 SPI Daten Leitungen unterschiedliche Bytes senden. Da wird nur das Byte auf die Leitungen verteilt. Der STM32L443CC würde mir zwar gefallen wegen der 4 SPI Leitungen aber der hat keine I²S Leitung und somit fallen die ganzen STM32L4x raus. Leider die wären echt gut dafür. Die normalen F4 Typen zB. STM32F410CBU6 wäre da vielleicht eine Alternative. muss ich mir noch ansehen. Ist nur schwerer zu löten. Was ich machen will? Nun wie schon beschrieben bekomme ich Audio Daten, Rechne damit etwas. Dann senden ich die Kanäle Parallel an 2 DACs raus. Warum Parallel? Weil ich es so will und es in dieser Anwendung am besten passt. VG, Uli
Uli schrieb: > Dann senden ich die Kanäle Parallel an 2 DACs raus. Dann brauchst du keine parallele Datenübertragung sondern eine parallele Datenübernahme am DAC. Das ist nicht das gleiche. Also 2 getrennte SPI mit "hand" kontrolliertem Chipselect. Datenübernahme beim DAC geschieht dann beim Wechsel des Chipselect von AKTIV auf PASSIV. Du musst dann nur die beiden Chipselect parallel bedienen. Übrigens, ist der STM hier der Master auf der SPI. Ich hab noch keinen DAC gesehen der als SPI Master läuft. Oder, was fast noch eleganter ist. Häng beide DAC hintereinander an die SPI mit einem gemeinsamen Chipselect. Sende dann die Daten für beide nacheinander raus. Beim ersten DAC werden die Daten für den 2. durch geschoben und mit CS inaktiv werden dann bei beiden synchron die Daten übernommen. Und immer noch bei 48000 Samples pro Sekunde mit 32 bit langweilt sich der STM.
Hast Ja recht die SPI vom Ausgang (DAC Eingang) ist ein Master. Der Takt dafür kommt aber indirekt vom I²S Eingang, zu dem muss ich schon Synchron bleiben. Meine ersten Überlegungen waren das ich direkt aus den I²S Signalen mir die SPI Signale erzeuge und somit der Slave wäre. Hintereinander hängen wäre schön, die liegen aber Parallel am Bus mit getrennten Datenleitungen. Würden die blöden CS nicht parallel hängen wäre es einfacher was zu machen. So wie es aussieht wird es ein STM32F410CBU6. Macht einen netten eindruck, ist scheller als benötigt und die Leitungen muss ich mir halt zurecht biegen. Aber selbst mit dem DMA-PORT System sollte der keine wirklichen Probleme bekommen. Ich baue mir das demnächst mal auf und schaue dann ob es geht. VG, Uli
Psoc 4M? Kannst die ganze Synchronisation mittels programmierbarer Logik in Hardware erledigen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.