Ich habe ein Projekt mit einer Reihe digitaler Mikrofone, an deren Ausgang ich mit einem leistungsstarken ARM-Mikroprozessor eine ausgefallene Signalverarbeitung durchführen möchte.
Ich mag die Idee, digitale Mikrofone zu verwenden, weil ich mich nicht mit Vorverstärkern herumschlagen muss. Wie auch immer, jedes digitale Mikrofon ist mit einem dedizierten Mikrocontroller verbunden, der die PDM-Ausgabe in PCM umwandelt.
Ich muss in der Lage sein, die Daten jedes Mikrofons auf meinen ARM-Mikroprozessor zu übertragen. Nehmen wir an dieser Stelle an, dass alles synchronisiert ist, um den Anschein eines gleichzeitigen N-Kanal-Sample-and-Hold-ADC zu erwecken. Meine derzeitigen Gedanken sind, dass jeder an ein Mikrofon angeschlossene Mikrocontroller seine Daten bis zu einem gewissen Grad puffern und über SPI spülen würde, wenn seine Slave-Auswahl vom Master wackelt. Der Meister würde einfach nacheinander mit jedem Sklaven sprechen.
Meine Frage ist, gibt es eine elegantere Möglichkeit, dies zu implementieren?
Dies wäre wahrscheinlich ein perfekter Job für einen FPGA, aber das übersteigt im Moment ein wenig mein Können.
Slaves mit Chipselect-Eingängen sind keine schlechte Idee. Dieser Weg kostet viele Ports Ihrer MCU, aber wenn Sie diese Ressourcen haben, empfehle ich, bei dieser Idee zu bleiben. Wenn Sie mit RTOS vertraut sind (freertos.org ist eine kostenlose gute Option), können Sie Code wie einen SPI-Treiber implementieren, um die Kommunikation zwischen allen Slaves zu teilen und zu schalten. Ich habe dies in einigen meiner Projekte getan. Ich habe meinen Treiber "SPIShared" genannt.
Durch die Verwendung eines RTOS-Mutex schützen Sie jeden Slave, um eine vollständige Transaktion mit Ihrem Master durchzuführen. Danach wird der Mutex freigegeben, um eine neue Kommunikation zu ermöglichen.
Beobachtung: Sie können eine gemeinsam genutzte SPI erstellen, obwohl jede einen anderen Slave-Standard hat. Vor jeder Transaktion müssen Sie Ihr SPI-Peripheriegerät mit dem Slave-Kommunikationsstandard neu initialisieren.
Eugen Sch.
Sam Delaney
Eugen Sch.
Flippiger Typ
gbulmer
Sam Delaney
Flippiger Typ
Sam Delaney
rdtsc