Hallo, für ein Projekt nutze ich einen PIC24FJ256GA704. Dieser steuert im Projekt sämtliche Peripherie inklusive eines JQ8400 Soundchip über UART. Wenn der der JQ8400 Musik abspielen soll, holt er sich die entsprechenden Daten von einem 32 Mbit Flash Speicher. Im Prinzip läuft das Ganze wie auf einem JQ8400-Fl Board welches man bei Ali für wenig Geld kaufen kann. So ein Board funktioniert sehr gut. Das ganze habe ich schon getestet. Auch die Ansteuerung via UART ist recht einfach. https://de.aliexpress.com/item/1005005462625040.html Allerdings möchte ich nun auch mit dem PIC24 auf den Flashspeicher zugreifen, um dort vorher abgelegte Bilddateien auf einem TFT anzuzeigen. D.h. ich möchte sowohl mit dem PIC als auch mit dem JQ8400 auf den gleichen Flashspeicher zugreifen, allerdings nie zur gleichen Zeit. Bis jetzt habe ich nur die Lösung gefunden, die einzelnen SPI Leitungen vom PIC und dem JQ8400 über zwei 74HC4053 zu führen und den jeweiligen Ausgang an den Flashspeicher anzuschließen. Die einzelnen Komponenten vom JQ8400 Board sollen später auf einem gemeinsamen PCB mit dem PIC und dem TFT und ein bisschen Hühnerfutter platziert werden, wenn die Patine entsprechend dem Design erstellt ist. Ich hoffe die Erklärung war verständlich. Meine Frage ist nun, gibt es eine einfachere Lösung als 2 Mux/Demux Chips wie den 74HC4053 zu nehmen? Beim PIC24 ist es kein Problem die SPI Schnittstelle, wenn Musik abgespielt wird, auf Tri-State zu setzen. Beim JQ8400 kann ich das aber nicht, es gibt auch nirgendwo ein Datenblatt über den Chip als solches, leider nur eines über das Board, in dem nur beschrieben beschrieben wird, wie man den JQ8400 über UART ansteuert, um Musik abspielen zu können. Gruß Thomas
PIC ist bei mir schon länger her, aber könntest du nicht den Flash an den PIC hängen und den JQ8400 an die „Configurable Logic Cell“ des PIC und dann darüber die Verbindung zum Flash zu steuern? (KA ob man mit der In und Out durchscahlten kann, war grad so ne Idee)
:
Bearbeitet durch User
Tic T. schrieb: > PIC ist bei mir schon länger her, aber könntest du nicht den Flash an > den PIC hängen und den JQ8400 an die „Configurable Logic Cell“ des PIC > und dann darüber die Verbindung zum Flash zu steuern? > (KA ob man mit der In und Out durchschalten kann, war grad so ne Idee) Das ist sicher ein guter Ansatz, aber leider habe ich kaum noch Pins frei für die Configurable Logic Cell und des weiteren habe ich mich damit noch nie beschäftigt. Da muss ich mich erstmal einlesen. Danke für den Tipp
Ich habe mal einen Entwurf eines Schaltbildes gezeichnet. Es sind nur die Komponenten drauf auf die es ankommt, alles andere habe ich zur Vereinfachung weggelassen.(Auch die Abblockkondensatoren) Da der JQ8400 nur 3 PIN SPI hat, habe ich das Design mit dem 100 Ohm Widerstand vom JQ8400 Board erstmal übernommen. Der 10k Widerstand ist nur dazu da, um beim Einschalten einen definierten Zustand herzustellen.
:
Bearbeitet durch User
> Meine Frage ist nun, gibt es eine einfachere Lösung als 2 Mux/Demux > Chips wie den 74HC4053 zu nehmen? 1. Du hast zugriff auf die Firmaware und kannst du anpassen. Faellt also wohl weg. 2. Du hast zugriff auf die Resetleitung des Moduls und kannst denn in Reset halten. Dann sollte er seine Leitungen zum Flash auch hochomig haben. 3. Deine Loesung mit dem umschalten aller Signale. 4. Logicgatter! Den Datenausgang vom Flash kannst du ja problemlos an beide Controller anschliessen. Was anderes sind die anderen Leitungen. Schau dir den Ruhepegel an und ueberlege dir wie du die mit einem And/Nand/Nor Gatter verknueppern kannst. Du musst dann den Player nur in einen Modus bringen wo du weisst das er gerade nicht zugreift und kannst dann einfach drauf zugreifen. Vanye
Fassen wir mal zusammen: Zwei Master an einem SPI-Bus, und über einen der Master (JQ8400) hast du keine Kontrolle. D.h. die Master können gegenseitig die Datenübertragung stören. Das Ganze ist nicht in erster Linie ein Hardware-Problem, sondern ein Steuerungs-/Timing-Problem und damit ein deinem Fall ein Softwareproblem. Da du nur den PIC programmieren kannst musst du dort höllisch aufpassen, dass du nicht in die Datenübertragung des JQ8400 rein pfuschst und irgendwie dafür sorgen dass der JQ8400 nichts versucht während der PIC Daten überträgt. Zur Hardware: Ich würde die Umschaltung (egal ob mit Logikbausteien oder analogen Schaltern) über die /CS-Leitung eines der Master steuern. Ich sehe keinen Grund eine zusätzlichen Pin des PIC zur Umschaltung zu verwenden.
Ich würde den Ansatz mit dem Reset des JQ8400 verfolgen. Zusatzaufwand nur eine Leitung und neu starten wird man den sowieso müssen, wenn man ihm hinter seinem Rücken die Daten ändert.
Harald A. schrieb: > Ich würde den Ansatz mit dem Reset des JQ8400 verfolgen. Zusatzaufwand > nur eine Leitung und neu starten wird man den sowieso müssen, wenn man > ihm hinter seinem Rücken die Daten ändert. Leider kann ich den JQ8400 nicht direkt in einen Reset Status bringen, da er keinen Reset Pin hat. Ob man ihn über UART oder 1-Wire in eine Art Resethaltung bringen kann, so dass die SPI Pins Tri-State sind weiß ich nicht. Darüber gibt es leider nicht genug Informationen von Seiten des Datenblatts bzw des Herstellers. Ich habe mal den Schaltplan von einem JQ8440 MP3 Board und ein ins englische übersetztes Datenblatt mit angehängt. Vielleicht habe ich da ja was übersehen. Ansonsten habe ich mal über die CLC des PIC24 etwas schlauer gemacht. Das klingt sehr vielversprechend. Durch ein anderes Design des PIC24 könnte ich die nötigen Pins freischaufeln. Ich werde in den nächsten Tagen erstmal diesen Ansatz weiter verfolgen. Thomas
Mal ganz dumm gefragt: Warum nimmst Du nicht für den PIC24 ein extra Flash? Damit ist das Problem gelöst. Meine Vermutung: Über den Audio-Chip werden die ganzen Daten per USB ins Flash geladen. Da gibts genug PIC24 und dsPIC33, die auch USB-Hardware haben, und Microchip hat für Dich einen kompletten USB-Stack mit CDC, HID und Mass Storage. Dann einen 2-Port USB Hub, und die Sache wäre ohne Klimmzüge gegessen. fchk
:
Bearbeitet durch User
> Mal ganz dumm gefragt: Warum nimmst Du nicht für den PIC24 ein extra > Flash? Damit ist das Problem gelöst. Man koennte auch noch duemmer fragen wieso man ueberhaubt noch einen extra MP3 Mikrocontroller verwenden will. :-D Ich hab das mal so vor 8-9Jahren mit einer fertigen MP3-Lib auf einem 200Mhz Controller gemacht der damals zu 50% ausgelastet war wenn er auch 320kbit MP3 abspielen sollte. Ich denke mal fuer irgendeinen einfachen Firlefanz wie Tuerklingel, Spielzeug, bekommt man problemlos auf einen aktuellen 50Mhz Controller hin. Ein RP2040 fuer 1Euro sollte das muehelos schaffen. Vanye
Frank K. schrieb: > Meine Vermutung: Über den Audio-Chip werden die ganzen Daten per USB ins > Flash geladen. Da gibts genug PIC24 und dsPIC33, die auch USB-Hardware > haben, und Microchip hat für Dich einen kompletten USB-Stack mit CDC, > HID und Mass Storage. Dann einen 2-Port USB Hub, und die Sache wäre ohne > Klimmzüge gegessen. Da hast du vollkommen recht. Ich kann die Musik- und Bilddaten sehr einfach vom PC übertragen. Leider sind meine Kenntnisse sehr, sehr rudimentär in Bezug auf USB-Stack mit CDC, HID und Mass Storage und allgemein ist USB auch nicht wirklich einfach im Gegensatz zu SPI, I2C oder UART. Ich habe mich vor Jahren mal als Autodidakt in die Mikrocontroller Welt eingearbeitet, hatte beruflich nie damit zu tun gehabt. Vanye R. schrieb: > Ich denke mal fuer irgendeinen einfachen > Firlefanz wie Tuerklingel, Spielzeug, bekommt man problemlos auf einen > aktuellen 50Mhz Controller hin. Ein RP2040 fuer 1Euro sollte das > muehelos schaffen. Da hast du sicherlich recht. Aber dann müsste ich mich in den RP2040 einarbeiten. Mit dem habe ich noch nie gearbeitet. Ich weiß auch nicht, ob die Hardware besonders geeignet ist um mit Batterien betrieben zu werden. Bei dem Projekt handelt es sich tatsächlich um ein Spielzeug, aber die MP3 Files beinhalten sowohl Musik als auch Sprache. Über die USB Anbindung des JQ8400 schien der gemeinsame Zugriff auf den Flash für meine übersichtlichen Hard und Softwarekenntnisse der geeignete Weg. Thomas
Moin, Thomas E. schrieb: > Da hast du vollkommen recht. Ich kann die Musik- und Bilddaten sehr > einfach vom PC übertragen. Leider sind meine Kenntnisse sehr, sehr > rudimentär in Bezug auf USB-Stack mit CDC, HID und Mass Storage und > allgemein ist USB auch nicht wirklich einfach im Gegensatz zu SPI, I2C > oder UART. > Ich habe mich vor Jahren mal als Autodidakt in die Mikrocontroller Welt > eingearbeitet, hatte beruflich nie damit zu tun gehabt. Mit diesen Voraussetzungen wuerde ich an deiner Stelle stumpf das so mit den Multiplexern machen. Vielleich noch mal gucken: Die "normalen" Analogschalter sind bei kleinen Betriebsspannungen eher hochohmig. Da gibts speziell fuer niedrige Betriebsspannungen gepimpte, pinkompatible Alternativen. Gruss WK
Thomas E. schrieb: > Bis jetzt habe ich nur die Lösung gefunden, die einzelnen SPI Leitungen > vom PIC und dem JQ8400 über zwei 74HC4053 zu führen und den jeweiligen > Ausgang an den Flashspeicher anzuschließen. SPI sind Digitalsignale. Zum Schalten derer verwendet man Logik-Gatter oder Bus-Transceiver. Mit Open-Collector-/ -Drain-Ausgängen und Enable-Eingängen, ließe sich sowas sicherlich realisieren. Bei zwei Geräten braucht man auch nur eine Steuerleitung. Man muss halt detektieren, ob dein Soundchip gerade auf das FLASH zugreift ("Busy"-Leitung?!) Für sowas stellt man Logiktabellen auf...
Dergute W. schrieb: > Mit diesen Voraussetzungen wuerde ich an deiner Stelle stumpf das so mit > den Multiplexern machen. Vielleich noch mal gucken: Die "normalen" > Analogschalter sind bei kleinen Betriebsspannungen eher hochohmig. Da > gibts speziell fuer niedrige Betriebsspannungen gepimpte, pinkompatible > Alternativen. Anstelle von Analogschaltern solltest Du das ganze mit einem 74HC125 und einem 74HC126 lösen. https://www.ti.com/lit/ds/symlink/sn74hc125.pdf https://www.ti.com/lit/ds/symlink/sn74hc126.pdf In jedem Chip sind 4 Puffer enthalten, die das Signal am Eingang auf den Ausgang leiten. Jeder Puffer hat einen Steuereingang, mit dem man den Ausgang hochohmig (quasi abschalten) kann. Beim 74HC125 schaltet ein Low den jeweiligen Puffer ein und ein High aus, beim 74HC126 ist es umgekehrt. Die Signale vom PIC führst Du durch den einen Chip, den vom Musikchip durch den anderen. Dann kannst Du mit den Steuersignalen zwischen den beiden umschalten, und es ist echt digital. fchk
Mal als Idee: Wenn der Flashspeicher nur an einem µC verbunden wäre. Dieser erste µC hat einen zweiten SPI oder UART, der dann mit dem zweiten µC verbunden ist. Wenn der zweite Daten will, dann werden diese über den ersten µC geleitet. Vorteile: - Keine extra Bauteile - Keine Probleme bei möglichem doppeltem Zugriff, bzw. Abgleich wer denn nun darf. - Die Kommunikation Flash <> µC ist immer konsistent, da nur einer das managt.
Markus M. schrieb: > Mal als Idee: > > Wenn der Flashspeicher nur an einem µC verbunden wäre. > Dieser erste µC hat einen zweiten SPI oder UART, der dann mit dem > zweiten µC verbunden ist. Wenn der zweite Daten will, dann werden diese > über den ersten µC geleitet. > > Vorteile: > - Keine extra Bauteile > - Keine Probleme bei möglichem doppeltem Zugriff, bzw. Abgleich wer denn > nun darf. > - Die Kommunikation Flash <> µC ist immer konsistent, da nur einer das > managt. Nachteil: SPI hat keine Flusskontrolle. Wenn der dazwischen hängende Controller nicht schnell genug ist, gibt es unweigerlich Datenverlust. Du kannst den Musik-Chip nicht ausbremsen und nur bedingt steuern. Dumme Idee also. fchk
Frank K. schrieb: > Anstelle von Analogschaltern solltest Du das ganze mit einem 74HC125 und > einem 74HC126 lösen. Danke, das ist ein guter Tipp. Den 74HC125 u. 74HC126 werde ich mir mal näher anschauen. Wenn das mit der CLC nicht klappt, werde ich es mit den 74HC125/74HC126 versuchen. Vielen Dank an alle für die vielen konstruktiven Vorschläge. Mir ist durchaus bewusst, dass meine Herangehensweise sicher keine Expertenlösung ist, aber ich muss erstmal mit dem arbeiten, was ich an Wissen zur Verfügung habe und dazu gehört leider nicht USB im direkten Anschluss an einen PIC. Gruß Thomas
:
Bearbeitet durch User
Thomas E. schrieb: > Danke, das ist ein guter Tipp. Den 74HC125 u. 74HC126 werde ich mir mal > näher anschauen. > Wenn das mit der CLC nicht klappt, werde ich es mit den 74HC125/74HC126 > versuchen. Es geht einfacher. Es reicht EIN einfacher Multiplexer, wer hätte DAS gedacht? Siehe Anhang. MISO kann man direkt verbinden, das sind 2 Eingänge, welche vom Flash getrieben werden.
Falk B. schrieb: > Es geht einfacher. Es reicht EIN einfacher Multiplexer, wer hätte DAS > gedacht? > Siehe Anhang. MISO kann man direkt verbinden, das sind 2 Eingänge, > welche vom Flash getrieben werden. Danke für den Hinweis Falk B. ich werde den 74HC157 mit in meine weiteren Überlegungen aufnehmen. Thomas E.
Falk B. schrieb: > Es geht einfacher. Es reicht EIN einfacher Multiplexer, wer hätte DAS > gedacht? > Siehe Anhang. MISO kann man direkt verbinden, das sind 2 Eingänge, > welche vom Flash getrieben werden. Und sogar den Steuerpin am PIC könnte man noch einsparen, indem man einfach das CS vom MP3-Chip als Kanalwahlsignal benutzt. Blöd ist natürlich, dass der PIC dann nicht sicher sein kann, dass er gültige Daten liest. Aber besser der PIC, auf den der TO Zugriff hat und eine Validitätsprüfung einbauen kann als der MP3-Chip, der beliebigen Müll machen kann, wenn er ungültige Daten liest. Und der sich ja nicht mal resetten läßt, wenn er sich deswegen aufhängt.
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.