Hallo Dies ist der Projektthread zur Sammelbestellung des DAB+ Moduls. (siehe auch: Beitrag "[Sammelbestellung] DAB+ Modul KeyStone 8650" sowie: Beitrag "[S] DAB+ Modul oder Bausatz") Zunächst mal Danke an Marco, der die Bestellung angestoßen und durchgeführt hat. Für diejenigen, die nicht an der Sammelbestellung teilgenommen haben, aber trotzdem interessiert sind, kann man das Modul auch unter http://www.coolcomponents.co.uk/t2-l4a-8650c-dab-dab-dab-radio-fm-radio-module.html bekommen. Anfangen möchte ich damit, die bisher geposteten Infos zum Modul hier zumindest ansatzweise zusammenzutragen: Das Modul wird u.a. auf dem Monkeyboard eingesetzt. Auf der Homepage (monkeyboard.org) gibt es auch einige Infos und Programmschnipsel. Die genauen Datenblätter gibt es aber offiziell lediglich per NDA. Bei wem und wie man diese beantragen muss, sollte hier nochmal beschrieben werden (bei den Jungs von Monkeyboard oder beim Modulhersteller). Vom Modul wird neben FM (87.5~108MHz) und dem Band-3 (174~240MHz) auch das L-Band (1452MHz~1492MHz) unterstützt. Das letztgenannte ist aber wohl nicht so interessant. Unter anderem Namen habe ich im Thread des 1. Links gepostet, dass ich zum Empfang vom Band-3 hervorragende Erfahrungen mit Amateuerfunk-Dualband-Antennen für 2m/70cm gemacht habe. Das gilt aber eigentlich nur für schwache Empfangsgebiete. Alle anderen sollten wohl auch bequem mit einer einfachen Zimmerantenne fürs TV klarkommen. Ich werde das Modul zunächst auf ein Stück Lochrasterplatine befestigen und mit Fädeldraht an die externen Bauteile anschließen. Ich denke, wir können uns da bei (dem open-source Projekt?) monkeyboard bedienen. Zunächst möglichst einfach, z.B. wird der PIC entfallen, der wohl nur USB-UART-Funktionen hat. Ich werde das Modul direkt per Raspberry an den UART anschließen, da brauch ich den PIC nicht. Da sowohl Raspberry als auch das Keystone-Modul 3,3V-UART-Pegel haben, ist ein direktes Anschließen ohne Pegelwandler möglich. Einen ersten Schaltplan erstelle ich zur Zeit. Bei der Software bin ich zur Zeit unschlüssig: Es gibt recht viel beim monkeyboard-Projekt, auch für den Raspberry. Außerdem in unterschiedlichen Programmiersprachen (VB.net, Python, LabView). Zunächst werde ich aber die Funktionen direkt per UART testen, wohl auch in Python. Gruß Gerrit
Hier, wie versprochen, ein erster Schaltplan. Wie gesagt, ist dies die Vereinfachung des Monkeyboard. Die Induktivitäten L2 und L3 sind vmtl. bei sehr wenigen Anwendungen notwendig(?). Die Bestellliste rechts unten enthält nur Reichelt-Bestellnummern von Bauteilen, die ich hier nicht in meiner Bastelkiste habe.
Du hast sogar ein neues Symbol für das Modul gemacht, nicht das vom Monkeyboard übernommen? Ich würde auch I2C und SPI anschließen, als schnellere Kommunikationspfade. Da können hoffentlich auch Bilder rauskommen, DMB Video hierzulande leider nicht mehr. Hoffentlich kommt sogar I2S Audio raus, das passt vielleicht an P5 von neueren Raspberries. Allgemein: Auf die Gefahr hin was überlesen zu haben, mir ist nicht ganz klar was "unser" Modul eigentlich kann. Der Chip hat internes Flash, da ist eine Firmware drin. Ja nach Anwendung kann das fix und fertig ein Radio sein, mit Display, Tasten, Drehgeber und IR-Fernbedienungsempfänger. Das wäre lt. Datenblatt der "Master Mode", eine Kommunikation über UART/I2C ist aber trotzdem noch möglich? Dann gibt es noch den "Slave Mode" ohne Tasten und Display. Etliche Pins haben eine Doppelfunktion, aus der Tastatur wird digitales I2S Audio (was mich sehr interessiert!), aus dem Display wird SPI. Haben wir immer den Slave Mode, oder wie wird der ausgewählt? Ich habe keine Kommandos gefunden die etwas umkonfigurieren, wie z.B. eine Art I2S Enable. Es gibt wohl unterschiedliche Firmware, für das Monkeyboard eine andere als für Keystone-Kunden. Zitat von http://monkeyboard.org/86-technical-documents/81-keystone-dab-fm-module-programming-api "Although our boards use KeyStone’s module, the API were created differently and will act different from modules sourced directly from KeyStone Semiconductor." Das war für die Grund genug die Monkey-API in eine mir unzugängliche "Member Area" zu verschieben. Welchen Kommandosatz haben wir? Jörg
ich frag mich gerade, welches Display im Mastermode unterstützt wird, bzw. ob es irgend eine Konfigurationsmöglichkeit gibt. Irgendwie steig ich da noch nicht durch.
Hallo zusammen, Ich habe heute auf http://www.coolcomponents.co.uk/t2-l4a-8650c-dab-dab-dab-radio-fm-radio-module.html# unter Resources eine Excel-Datei mit Kommandos entdeckt. Versuche sie hier auch als Anhang hochzuladen. PS: Ich finde es widersprüchlich im "Antwortformular" zu bitten, längeren Code als Datei anzuhängen, und dann zu verwarnen, dass nur Bilder erlaubt sind. Also wenn ich jetzt gegen die Regeln verstoße, dann bitte nur die Datei und nicht den Link löschen.
Eugen Kremer schrieb: > Ich finde es widersprüchlich im "Antwortformular" zu bitten, > längeren Code als Datei anzuhängen, und dann zu verwarnen, dass nur > Bilder erlaubt sind. Das steht da nicht. Lies Dir den Text nochmal genauer durch. Deine Excel-Datei ist also schon in Ordnung.
:
Bearbeitet durch User
Hey Die Excel-Datei ist ja super. Auf dem ersten Blick scheint die Slave-Mode-Kommunikation vollständig beschrieben. Ich warte zur Zeit auf meine fehlenden Bauteile (und Urlaub) um an diesem Projekt weiter zu arbeiten. Wie schonmal angesprochen, habe ich mich mal mit den Labview-Ressourcen vom Monkeyboard beschäftigt (siehe: http://www.monkeyboard.org/tutorials/78-interfacing/88-using-labview-to-control-the-dab-dab-fm-digital-radio-board). Die machen eigentlich nichts anderes, als eine DLL aufzurufen. Im Link beschrieben ist wohl ein 'Hello World', also eine Minimalkonfiguration um das System zu starten. Im Einzelnen ist dies (soweit ich das verstehe): Step 1 - SYSTEMGetSysRdy - UART-OUT: FE 00 00 01 00 FD - UART-IN: ?? Step 2 - STREAMSetVolume - UART-OUT: FE 01 0C 01 01 08 FD - UART-IN: ?? Step 3 - STREAMPlay - UART-OUT: FE 01 00 01 05 00 00 00 00 00 FD - UART-IN:? Step 4 - STREAMGetPlayStatus - UART-OUT: FE 01 05 01 00 FD - UART-IN: ?? Step 5 - STREAMGetProgrameName - UART-OUT: FE 01 0F 01 05 00 00 00 01 01 FD - UART-IN: ?? Step 6 - STREAMGetEnsembleName - UART-OUT: FE 01 15 FE 05 00 00 00 01 01 FD - UART-IN: ?? Step 7 - STREAMGetProgrameText - UART-OUT: FE 01 10 01 00 FD - UART-IN: ?? Das wird verifiziert, wenn ich die Möglichkeit habe. Es gibt ja offensichtlich neben diesem Slave-Mode einen Master-Mode (wie oben von Jörg angesprochen). Das ist mir aber zur Zeit zu wenig dokumentiert. Ich werde zunächst mal schrittweise den Slave-Mode testen. Gerrit
Gibt es eigentlich jetzt irgendwo ein gescheites Datenblatt zu dem Modul wo unter anderem auch mal die Stromaufnahme der einzelnen Versorgungsspannungen definiert sind? Muss ja nicht immer ein LM317 sein wenn da nur wenige mA fließen.
In diesem Beitrag wurden schon mal Datenblätter veröffentlicht: Beitrag "Re: [S] DAB+ Modul oder Bausatz" Drei Postings weiter oben wurde zum Modul auf auf coolcomponents.co.uk unter "Resources" verwiesen, auch da ist ein Datenblatt. Die Stomaufname ist max. 75 mA auf 1,2V, 70 mA auf 1,8V. Für die 1,2V ist ein LM317 nicht so gut, der geht nur bis 1,25V runter. Ist allerdings noch im Toleranzbereich. Gerrit ist noch nicht auf meine Interfacing-Vorschläge für Rasberry Pi eingegangen. Ich habe gestern mal dran gemessen, Anschluß an der seriellen wäre ungünstig. Da gibt der Raspi eine Bootmeldung drauf aus und später eine Login-Shell. Könnte das Keystone-Modul verwirren... Also besser I2C/SPI. Zur Not kann man ja noch unbestückte 0 Ohm zum UART vorsehen. Jörg
Ok, danke. Jetzt habe ich es auch gefunden. Dann reichen ja kleine SOT23 LDOs aus, schön.
Für meine ersten Tests bin ich jetzt dabei, alles auf ein Stück Lochraster aufzubauen. Daher ist es zur Zeit für mich zweitrangig, ob ich mit den LM317 etwas großzügig bin. Es gibt noch ein paar Änderungen ggb. der ersten Schaltplanversion. Sobald ich fertig bin, werde ich meinen aktuellen Stand hier posten. Der Hinweis mit den möglichen UART-Problemen ist gut. Die Kommunikation des Raspberry wird sich zwar mit Sicherheit irgendwo abschalten lassen, die Möglichkeit über I2C ist aber wohl interessanter. Lässt sich ja einfach verdrahten. Es werden aber nicht alle hier Anwesenden mit dem Raspberry arbeiten wollen, sondern möglicherweise das System per PC anschließen. Da siehts mit dem I2C leider nicht so gut aus (zumindest ohne zusätzlichen Adapter). Da wäre RS232 eben besser gewesen.
So. Wie versprochen habe ich den Schaltplan etwas überarbeitet. Die wesentlichen Änderungen sind 1) eine kleine Analogausgabeverstärkerschaltung mit nachgeschaltetem PC-Lautsprecher, der für die ersten Tests ausreichen muss. 2) Verbindung der I2C-Leitungen zum Raspberry. Pullups werden wohl nicht benötigt, da auf dem Raspberry 1,8kOhm-Pullups vorhanden sind. 3) Ich hab dem 8650c noch ein paar 100nF-Kerkos an den Versorgungspins gegönnt. 4) ein paar Bugs wie z.B. fehlende Verbindungen gefixt Im Anhang noch ein Bild von meinem Aufbau. Ich werde jetzt mit der Software starten. Gruß und schon mal schöne Weihnachten Gerrit
Hallo Gerrit, danke dir für den ersten Schaltplan. Leider ist die Schrift in der PDF irgendwie Crappy, sodass man die Werte nur schwer erkennen kann und im Datenblatt erst einmal nachlesen muss. Was für du für eine Spannung an C13 anliegen hast, kann ich leider absolut nicht erkennen. Imho steht da 5V, müssten das aber nicht 3,3V sein? Und mal eine Frage an alle: Ich habe mir jetzt mal das Datenblatt zum Modul angesehen. Momentan sieht es für mich so aus, als ob ich den Sound des Radios über Pin 26/27 LOUT/ROUT ausgeben müsste. Bei einem Digital-Radio würde es aber IMHO eher Sinn machen, das Signal digital auszugeben (SPDIF), entweder über Coax oder Glasfaser. Im Datenblatt habe ich aber leider keine Funktion gefunden, die so etwas macht. Was meint ihr?
Hallo, auch ich war lötend tätig, hier Bilder von meinem Testaufbau. Ohne Schaltplan, ist auch nichts besonderes dran, nur Spannungswandler, I2C, Kopfhörer- und Antennenbuchse. Der 1,2V Regler wurde sogar ein Schaltregler, ich hatte grad nichts anderes im Haus. Nach erstem Test sind die Spannungen OK, aber das Modul antwortet nicht auf I²C, ein Scan mit dem Linux-Tool "i2cdetect" zeigt keinen neuen Teilnehmer. Ich muß wohl doch mal die serielle anschließen... Zum Digitalausgang: möchte ich auch haben. Dafür muß man zusätzlich einen Transmitterchip vorsehen, der aus I²S (nicht zu verwechseln mit I²C) ein S/PDIF-Signal macht. Z.B. DIT4096 von TI, TS8406 von Cirrus, AK4103 von Asahi Kasei. Es gibt kleine TOSLINK-Transmitter (Everlight PLT13x) die man hinter die Klinkenbuchse montieren kann, um sie wahlweise auch zu einem optischen Ausgang zu machen. Keine Ahnung ob I²S automatisch geht oder irgendwie eingeschaltet werden muß. Das ist eine Zweitfunktion der Display- und Tasten Anschlüsse. Wie gesagt, mir ist unklar ob man eine bestimmte Firmware braucht, was unsere denn für eine ist und was die kann. Jörg
:
Bearbeitet durch User
Hat denn schon irgendjemand mit den Modulen was erfolgreiches hinbekommen? Mein Modul meldet sich nicht über I2C und über UART komme ich lediglich in einen Bootloader.
1 | KeyStone DAB Boot Loader CE |
2 | 1. Update UIP/DAB Code: |
3 | 2. Update MCU/DAB Code: |
4 | 3. Update DSP Code: |
5 | 4. Update ZSP Code: |
6 | 5. Update Boot Loader: |
7 | 6. Reset System: |
8 | 7. Update Resource: |
9 | 8. Check CS: |
10 | 9. Update FT Code: |
11 | 0. Restore to Default: |
Ach ja, da war ja noch ein Projekt... Ich habe nun einen RS232-Pegelwandler angeschlossen und erstmal die Leitung beobachtet. Etwa eine Sekunde nach dem Einschalten sehe ich da ein einzelnes Byte, ein 0xE5 mit 38400 Baud. Dann habe ich die Windows-Software vom Monkeyboard ausprobiert. Zu meiner Freude hatte ich damit ziemlich sofort Radioempfang in FM, es kann sogar RDS-Text, Beweisfoto anbei. Allerdings auch nur FM, der DAB-Scan läuft durch ohne was zu finden. Als Antenne habe ich derzeit einen guten Meter fliegenden Draht. Sollte hier in der Stadt eigentlich ausreichen. FM ist aber recht lausig, obwohl es 100% Feldstärke anzeigt selten in Stereo (und dann mit viel Rauschen), noch seltener mit RDS, nur wenig Stationen. Ich hoffe noch auf ein Einstellungsproblem mit DAB, das wir hier andere Kanalfrequenzen haben als in Australien, oder sowas. Jörg
0xE5 bekomme ich auch. Allerdings funktioniert die Software bei mir nicht. Nach der Portauswahl dauert es etwas und ich komme wieder zur Portauswahl.
Update: Es gibt erste digitale Zuckungen, nachdem ich die 2 Fonts installiert habe. Da besteht vermutlich kein Zusammenhang, der Empfang ist sehr wackelig. Anbei also ein neues "Beweisfoto". Hast du den seriellen Port vielleicht noch in einem Terminal offen? Das war erst mein Fehler. Die bei mir aktuell laufende Software habe ich selbst kompiliert weil ich erst dachte daß kein .exe dabei ist. Kann ich dir zum Test gern schicken. Jörg
Noch ein Update: Ich habe jetzt etliche Meter Draht als Wurfantenne vor den Fenstern verlegt, damit klappt es schon besser. Die originale Monkeyboard-Software vom 17. November (der neueste Stand den man dort runterladen kann, ohne git zu bemühen) funktioniert bei mir. Das Keystone-Modul kann nichts dafür, aber ich bin von DAB doch ziemlich enttäuscht. Die Bitrate ist unterirdisch, ich höre gurgelnde Kompressionsartefakte wie aus der mp3-Frühzeit. Nicht besser als Internetradio, mein Radio wird das nicht... Ein durchschnittlicher Privatsender hat hier 72 kBit/s (Sprachformate noch weniger), die besten Stationen wie Deutschlandfunk haben 128 kBit/s, mehr ist nicht. Gute Nachrichten hingegen von I²S, das liegt einfach an, wie mittlerweile auf monkeyboard.org auch erwähnt. Man könnte da also einen SPDIF-Encoderchip anschließen. Bei der gebotenen Audioqualität kein Gewinn, aber mag "Medienbrüche" vermeiden. Ein Rev2 Raspberry Pi kann theoretisch I²S sampeln, dann könnte man da das Audiosignal reinsaugen und über HDMI mit ausgeben. Jörg
Wie hast du das Modul denn beschaltet? Ich habe mal meinen Schaltplan angehängt, habe ich da etwas vergessen? VCC geht auf 3 Spannungsregler, die Ausgangsspannungen der Spannungsregler passen und sind stabil.
Sieht gut aus, ich habe mir das auch nur vom Monkeyboard abgeguckt. Der Pullup an BAT_DET hat bei mir 1k, der am Reset 100k, sonst finde ich keine Unterschiede. Jörg
Danke Jörg für deine Hilfe. Wichtig ist, dass BAT_DET 1k bekommt, statt 10k. Es funktioniert jetzt.
Na prima! Und, wie ist der Empfang, wie das Programm? Ich habe mittlerweile den I²S-Ausgang abgehorcht, mit einem LA (USBee) aufgezeichnet und per Script eine .wav daraus gemacht. Das funktioniert. Der Lautstärkeregler beeinflußt auch die I²S-Daten, wir haben einen geregelten Digitalausgang. Jörg
Hi Jörg, > Ich habe mittlerweile den I²S-Ausgang abgehorcht, mit einem LA (USBee) > aufgezeichnet und per Script eine .wav daraus gemacht. Das klingt super! Kannst du vielleicht genauer beschreiben, script oder ein paar Links geben, wie man daraus eine wav macht? Danke
Empfang ist eher schlecht, könnte aber an meiner "Antenne" liegen. FM sind zwei bis drei Sender, über DAB(+) findet es zwar die ganzen HR und SWR Sender, stabil bekomme ich aber nur SWR solange ich mich nicht bewege. klanglich ist DAB mit 120kb/s gar nicht so schlecht.
Omega G. schrieb: > Wichtig ist, dass BAT_DET 1k bekommt, statt > 10k. Andersrum ist es ja interessant, das man mit größerem Widerstand in einen Bootloader kommt. Das könnte ja mal nützlich sein. Ließ sich dessen Menü eigentlich bedienen? Jörg
Eugen Kremer schrieb: > Das klingt super! Kannst du vielleicht genauer beschreiben, script oder > ein paar Links geben, wie man daraus eine wav macht? Hast du denn eine USBee? Mein Weg ist recht spezifisch dafür, ansonsten schreibe ich mir hier ganz umsonst die Finger wund. ;-) Es geht auch nicht kontinuierlich, sondern nur für ein paar Sekunden die in den Capture passen. Jörg
Ja, das Menü lässt sich bedienen. Man kommt da rein, in dem man mit 57600 Baud 0x81 sendet, bis das Menü erscheint.
Woa, ich habe gerade was entdeckt: Der I²S-Output ist auch aktiv wenn man FM hört! Also ein UKW-Radio mit Digitalausgang. Ich weiß nicht warum, ob das intern ein Software Defined Radio ist? Normalerweise ist UKW ja eine ziemlich analoge Sache, ich hätte erwartet daß dessen Output dem DAC des DAB-Dekoders analog zugemischt wird, um einen gemeinsamen Analogausgang zu haben. Stattdessen nimmt auch FM digitale Pfade. Vielleicht wird es auch nur am Schluß digitalisiert, um auch durch den Equalizer und diese anderen optionalen Klangverschlimmbesserungen laufen zu können? Dagegen spricht aber, das bei FM die Samples mit 32 kHz rauskommen, bei DAB mit 48 kHz. Jörg
Hallo Jörg, wenn ich mir das Modul und die ganzen Spezifikationen so anschaue, dann ist es eher ein SoC, als ein DAB/FM Modul. Jetzt denk mal an einen Kunden, der ein fertiges Radio mit dem Modul kauft. Wie schließt er es an seine Anlage an? Entweder über Stereo oder SPDIF. Ich würde auf jedem Fall SPDIF nehmen, da es einfach weniger Leitungen sind. Ich denke, wir sind uns einig, dass dann das Digitalradio diesen Digitalweg nehmen soll bzw. kann. Doch was ist mit dem analogen? Soll der Kunde dann vier weitere Leiter legen für Stereo? Deshalb macht es imho einfach Sinn, alles über SPDIF bzw. I2S rauszuhauen.
Hallo, ich habe mein Modul an den rasperry pi über UART angeschlossen. An BAT_DET habe ich einem Pull-UP von 1k. Nun habe ich das Problem, dass das Modul nicht auf Befehle reagiert. Es gibt lediglich nach einem Reset einmalig den Wert 0x1b aus. wenn ich den Pull-Up Widerstand an BAT_DET auf 10k erhöhe gibt mir das Modul den Wert 0x1b ca. alle 7 Sekunden aus. Hat vielleicht jemand eine Idee, was ich falsch mache bzw. was ich tun muss das das Modul reagiert? Grüße Georg
Machst du denn am UART alles richtig? Hast du mal einen PC per Pegelwandler angeschlossen und die Beispielsoftware probiert? Benutzt du den UART am Erweiterungsstecker vom Raspi? Da ist normalerweise eine Shell drauf aktiv, hast du die totgelegt? Was schickst du dem Modul denn so? Die Windows-Software sendet dem Modul als allererstes ein Paket mit FE 00 00 01 00 00 FD, das Modul antwortet mit FE, 00, 01, 01, 00, 00, FD. (Alles mit 57600 Baud) Das einzelne 1B nach dem Einschalten sehe ich auch. Jörg
Die Shell die auf die Header des Raspi geht habe ich deaktiviert und da ich das 1B nach einem Reset sauber empfange glaube ich auch am UART keinen Fehler gemacht zu haben. Dem raspi schicke ich die Nachricht: FE 00 00 01 00 00 FD Für die 01 in der Nachricht habe ich auch schon andere Werte probiert, da zu diesem Byte in der Spec steht dass eine Nummer 0x01 und 0xFF verwendet werden darf. Den UART hab ich auf 57600 eingestellt. Einen Pegelwandler habe ich leider nicht zur Hand, ansonsten hätte ich es schon probiert ;-) Georg
Wie hast du die Shell deaktiviert, wie sendest und empfängst du? Ich habe es auch gerade ausprobiert, mit folgendem Python-Skript:
1 | import serial |
2 | import time |
3 | |
4 | ser = serial.Serial('/dev/ttyAMA0', baudrate=57600, timeout=0.1) |
5 | while True : |
6 | ser.write("\xFE\x00\x00\x01\x00\x00\xFD") |
7 | answer = ser.read(7) |
8 | print "answer:", |
9 | for character in answer: |
10 | print character.encode('hex'), |
11 | |
12 | time.sleep(1) |
Damit das läuft habe ich zuvor ein "sudo apt-get install python-serial" gemacht, sowie die Shell in /etc/inittab totgelegt, die letzte Zeile auskommentiert. Das Skript liefert mir pro Sekunde eine Zeile in der Art:
1 | answer: fe 00 01 01 00 00 fd |
Beim ersten Schleifendurchlauf noch nicht, denn da wird merkwürdigerweise das 0xFE doppelt gesendet, mit etwas Lücke dazwischen. (Python-Bug, Puffer-Problem?) Jörg PS: einen Pegelwandler kann man mit 2 Transistoren und 3 Widerständen bauen...
:
Bearbeitet durch User
Eigentlich habe ich heute was anderes ausprobiert, nämlich das Modul per SPI zu bespaßen. Das war leider genauso erfolglos wie I2C, ich sehe keine Antwort. In der Doku habe ich kein Beispiel gefunden, wie denn ein SPI-Transfer aussähe, konnte nur rumprobieren. Ich habe alle 4 SPI-Modes probiert, mit und ohne die einrahmenden FE/FD Bytes, teils auch die Bit-Order gedreht, kein Effekt. Es scheint, unsere Firmware hat nur den UART als Kommandoschnittstelle implementiert, schade. Bei SPI und I2C ist unklar, ob das Modul ggf. Master sein will, für z.B. ein angeschlossenes Display. Jörg
Hallo Jörg, die Shell auf dem UART habe ich nach einer der vielen Anleitungen im Netz deaktiviert (in zwei Dateien etwas auskommentieren bzw. löschen). Für meine Kommunikationsversuche mit dem Modul habe ich ein recht ähnliches Python Script geschrieben. Auch ein C-Programm habe ich schon geteste, leider beides ohne Erfolg. Zur Ansteuerung des Moduls mit I2C gibt es in der "SlaveMode_spec" des Moduls eine recht gute Beschreibung. Ich habe die PDF Datei an diese Nachricht angehängt. Georg
Hallo, ich habe nun doch eine Platine entworfen, siehe Anhang zur Diskussion. Basis war das Monkeyboard, aber dieses ist viel kleiner und bietet folgende zusätzliche Features: - optischer Digitalausgang, durch die Audiobuchse hindurch geleuchtet (es gibt LWL-Kabel, die auf der einen Seite 3,5mm Klinkenbuchsen-kompatibel sind, z.B. Reichelt "LWL TOS 9". - Betrieb "standalone" mit USB-Anschluß, es ist ein kleiner RS232/seriell Wandler drauf, oder: - Betrieb als Raspberry Pi Aufsteckboard, dann bietet es zusätzlich noch folgende Optionen: - IR-Empfänger, um daraus ggf. ein "vollständiges" Gerät mit Fernbedienung zu bauen - Einspeisung des I2S-Digitalaudio für Rev.B Boards (wenn der Kernel das mal kann) - Steuerung über I2C oder SPI ist auch vorgesehen, falls das Modul das irgendwann doch kann Muß man aber nicht alles bestücken, man kann das auch ganz rudimentär lassen. Nicht-RasPi-User könnten links noch einen guten Zentimeter absägen, dann wird es sehr kompaakt. Nur das Modul ist auf der Rückseite, guckt bei RasPi-Montage nach oben, alles andere nach innen. Die Platine misst ca. 55,25*34,3mm. Ich trage mich mit dem Gedanken, sie bei pcb-devboards.de fertigen zu lassen. (Der günstigste den ich kenne, habe ich aber noch nicht ausprobiert.) Gelegenheit für Trittbrettfahrer: Je nach Nutzengröße kostet eine Platine dann vielleicht 4€. Der nächste Fertigungstermin dort ist am 10.2., die Platinen hat man dann schon wenige Tage später. Was meint ihr zu dem Design? Es ist noch nicht ganz zuende gezupft, die Lage der Buchsen will ich noch genauer überprüfen. Ferner überlege ich, den L-Band Eingang per Bestückungsoption doch zugänglich zu machen, und ob man vielleicht ggf. das Kopfhörerkabel als Antenne mitnutzt. Bin aber kein HF-Experte. Jörg
Das Modul hat lt. Datenblatt 50 Ohm Eingangsimpedanz. Auf dem Board weiß ich das nicht zu kontrollieren. Ich habe mich lediglich bemüht, die Verbindungen kurz zu halten. Wenn da jemand was zu beitragen kann, immer gern. Jörg
Hallo, ich hätte evtl. Interesse an einem Board! Zur Impedanz: Mit welchem Programm hast Du das Layout erstellt? Altium kann z.B. wenn man die Board Parameter angegeben hat, Leitbahnimpedanzen simulieren, bzw. automatisch so Routen dass die Impedanz auf dem Board eingehalten wird. Grüße Holger
Hallo, nach vielen misslungen Versuchen habe ich nun endlich rausgefunden wie man das Board per HTerm und HEX Befehlen zum spielen bekommt :-) Porteinstellungen: Baud: 57600 Data: 8 Stop: 1 Party: None Dann sieht der Befehl für das Abspielen der UKW Frequenz 104,4Mhz wie folgt aus: FE 01 00 01 00 05 01 00 01 97 D0 FD Aufschlüsslung: FE = Start-Byte 01 = Command type 00 = Command id 01 = Serial Number 00 = Length Byte 4 (MSB) 05 = Length Byte 5 (LSB) 01 = Stream mode = FM 00 = Frequenz in Hex MSB 01 = Frequenz in Hex 97 = Frequenz in Hex D0 = Freqzenz in Hex LSB FD = Stop-Byte Das Modul antwortet dann: FE 00 01 01 00 00 FD Diese Antwort heißt "Command suceeds" Sollte das Modul mit FE 00 02 01 00 01 00 FD antworten, bedeutet das "Command fails" Falls vom Modul gar keine Antwort kommt, stimmt die Anzahl der Datenbytes nicht, welche über die beiden "Length Bytes" eingestellt wird nicht. Hier gibt es jetzt zwei Fallen, es muss immer die Length eingestellt werden die in der Tabelle steht, und diese Byte müssen auch gesendet werden! Und genau in der Lenght-Spalte liegt in der Excel-Tabelle eine böse Falle, hier steht nur das LSB drin, das MSB (h00) steht nicht drin! Muss allerdings zwingend gesendet werden, sonst macht das Modul nichts! Hoffe es ist verständlich was ich meine. Grüße Holger
Hallo, (Glückwunsch an Holger zum Kommunikations-Durchbruch) Ich habe mich etwas schlau gemacht zum Layout der Antennenverbindung, habe einen Online-Rechner für Impedanzen auf Platinen gefunden: http://www.eeweb.com/toolbox/microstrip-impedance/ Laut dem ist bei doppelseitiger 1,6mm dicker Standardplatine und FR4-Basismaterial mit
eine 50 Ohm Leitung etwa 3mm breit. Ganz so dick kriege ich sie nicht hin, aber ich werde mal sehen was sich machen läßt. Der Leiterbahnzug ist keine 2 cm lang, das ist deutlich kleiner als
was bei 200 MHz 75 cm wären, aber die erscheinen glaube ich auch verkürzt um obige 4,7, macht 16 cm. Das ist also nicht wirklich ein Thema, wir machen keine Mikrowellen, das ist nur "aus Spaß" und weil noch Platz ist. Die Platine ist mit Eagle erstellt, verräterisch grüne Leitungen und rote Symbole im Schaltplan. Altium kenne ich vom Hörensagen, in der Firma arbeiten die Kollegen damit. Das ist aber auch kein "Field Solver", der berechnet nur Dicke und Abstand (bei differentiellen Paaren). Bisher zähle ich 3 Platinenmitbesteller, da kostet eine Platine doch mehr, etwa 7,50€. Beim Platinensammler Jakob sind es ziemlich genau 10€, plus umgelegte 5€ Bearbeitungsgebühr. Dafür gibt es auch Bestückungsdruck, bei pcb-devboards.de nicht. Jörg PS: ich habe mich hier erstmals am Formelsatz versucht, wie kriegt man denn den Text fließend drumrum?
:
Bearbeitet durch User
Jörg H. schrieb: > Ich habe mich etwas schlau gemacht zum Layout der Antennenverbindung. > Der Leiterbahnzug ist keine 2 cm lang, das ist deutlich kleiner als was > bei 200 MHz dann 75 cm wären. Funk habe ich bisher immer gemieden, aber die 75cm beziehen sich imho auf die Antenne. Also wenn du quasi deine Antenne auf dem Board unterbringen willst in Form von Kupferleitungen, dann muss sie 75cm lang sein bei Lambda/4. "Wir" wollen ja die Antenne nicht auf dem Board haben, sondern eine externe Antenne anschließen. Somit ist es nur "wichtig", dass die Leitungen dahin die 50 Ohm Impedanz haben. Wobei ich momentan glaube, dass es eine relativ kleine Rolle spielt, was auf dem Board drauf ist, da die Zuleitung zur Antenne >> die Leitungslänge auf dem Board. Jörg H. schrieb: > Bisher zähle ich 3 Platinenmitbesteller, da kostet eine Platine doch > mehr, etwa 7,50€. Zwei Platinen würde ich auch nehmen. Wann wollt ihr die denn bestellen? Ich wollte auch noch ein Mal über das Layout drüberschauen, bevor ich die endgültig bestelle. Leider hat mir bisher die Zeit gefehlt, meine Module liegen momentan im Schrank und warten auf freie Zeit.
Ich habe bei meinem Testaufbau herumprobiert ob es empfangtechnisch etwas bringt, das Modul abzuschirmen. Habe dazu von einem alten Tuner Blech herausgeschnitten und entsprechend zugeschnitten. Das Keystone Modul hat ja angedeutete Flächen für einen Schirm und Schlitze zum Einsetzen und Verlöten. Ich kann einen besseren Empfang noch nicht beziffern, es scheint aber doch etwas zu bringen. Wenn ich meine DAB-Antenne habe kann ich mehr sagen.
Hallo, auch von meiner Seite würde ich mal Interesse an 2 Platinen anmelden :)
Hallo, nun sind doch ein paar Interessensbekundungen für Platinen zusammengekommen, 5 Stück hier öffentlich, 5 per PN, plus meine 2 macht 12 Stück. Von pcb-devboards.de bin ich mangels Bestückungsdruck wieder ab, aktueller Kandidat ist Fischer. Da komme ich mit deren Versandkosten umgelegt und MWSt auf ca. 6,50€, bei Lieferung in 10 Arbeitstagen, plus Versand zu euch. An der Platine habe ich noch optimiert, der Trace der Antennenleitung ist kürzer und breit geworden (hat vielleicht 65 Ohm, 50 schaffe ich nicht), per optionalem 0 Ohm Widerstand kann auch L-Band angeschlossen werden. Ich täte das wohl nach dem Wochenende bestellen, zu lange möchte ich nicht drauf warten. Disclaimer: Die Platine ist naturgemäß noch nicht getestet, weil sie ja zum ersten Mal gefertigt wird. Ich kann keine Funktionsgarantie bieten. Sollte zwar eigentlich klappen, ich bin kein Anfänger, aber man weiß ja nie ob da noch was gepatcht werden muß. Jörg
Hallo, hier der aktuelle Stand zum "Peer Review". Die Verdrahtung um die Antennenbuchse ist wie besprochen neu, ferner habe ich einen Dämpfungswiderstand in die S/PDIF-Leitung eingefügt, weil die recht lang ist und dem Antenneneingang nahe kommt. Zur Sammelbestellung: sowas braucht klare Regeln, die ersten fragten mich schon. Also: <diktatormodus> Die Platinen kosten wenn alle dranbleiben 6,50€, Versand zu euch im schlanken 50 Gramm Brief 1€, andere Versandformen wenns sein muß extra. Wer mitbestellen möchte, schicke mir bitte eine "verbindliche" PN mit Stückzahl und seiner Anschrift für den Versand. Das gilt auch für jene, die mir bereits geschrieben haben, Versandadresse kam nämlich noch von niemandem. Ich schicke euch dann eine Bestätigung mit meiner Bankverbindung. Als Deadline setze ich Donnerstag, 13.2. um 12:00 Uhr fest, dann bestelle ich und feinjustiere ggf. den Preis. Bezahlung dann zur Bestellaufzeit, die dauert ja noch. </diktatormodus> Ich überlege noch, ob ich es mir antue auch Teilesätze anzubieten, ihr braucht ja auch Bauteile (meine habe ich allerdings schon), die von ca. 3 Versendern jedem einzeln auch keinen Spaß machen. Das meiste gibt es bei Mouser, den USB-Chip leider nicht, die verbaute Klinkenbuchse ist von Reichelt weil ich von der weiß das sie hinten offen ist und ich sie schon mal verbaut habe, ein Symbol erstellt habe. Viele Grüße, Jörg
:
Bearbeitet durch User
So, die Bestellung ist raus, ich habe den Beteiligten das auch gerade per Email bestätigt. Außer dem Kollegen Holger S. (holger_s74) sind alle dabei die Interesse bekundet hatten, er hat sich bis zur Deadline trotz Extra-Einladung nicht gemeldet. Ich habe aber eine Platine mehr bestellt, zur Sicherheit. ;-) Falls es eine Überproduktion gibt haben Nachzügler noch die Möglichkeit, das weiß ich aber erst in 2 Wochen. Um den PL2303SA habe ich mich zugegeben nicht recht gekümmert, es gibt ihn in USA bei Saelig, oder vielleicht in China bei Alibaba/Aliexpress. (Oder aus USB-Seriell Kabeln ausschlachten?) Spricht für Bauteil-Sammelbestellung, an der es überwiegend Interesse gab. Kann aber auch gern jemand von euch machen... Jörg
:
Bearbeitet durch User
Hallo zusammen, sorry Jörg, dass ich mich nicht gemeldet habe, ich bin die letzte Woche so gut wie nicht ins Netz gekommen, und deine extra Einladung habe ich auch erst gesehen als es schon zu spät war :-(. Super dass du eine extra Platine bestellt hast, wenn es möglich ist würde ich die nehmen ;-), PN geht gleich raus. Grüße Holger
Weil ich zu faul zum löten war und möglichst schnell mit dem Modul rumtüfteln wollte, hab ich mir das Monkey Board besorgt. Erste Aktion: Pin 9 vom PIC ablöten! Damit kann man dann auch was hören wenn man mit z.B. HTERM Kommandos absetzt. Abgesehen davon ist das gezirpe auf der Audioleitung damit auch weg. Nach der Initialisierung durch das mitgelieferte Programm lässt sich schon mal FM mit gewünschter Frequenz einstellen. Der Beep (Mode 3) funktioniert übrigens auch :O) Bzgl. der restlichen Kommandos überlege ich die Daten vom mitgelieferten Programm zu sniffen.
Die Platinen sind angekommen. Es sind 22 Stück geworden, also haben auch Nachzügler noch Gelegenheit. Wer will nochmal, wer hat noch nicht? 2 Kollegen haben wenn ich mich nicht irre noch nicht bezahlt (ähem, Olaf und Holger), die Platinen an die anderen schicke ich hoffentlich morgen los. Zum Wochenende solltet ihr sie haben. Jörg
Hallo, ich habe ein bischen das Löten angefangen. Ist noch nicht fertig, weil ich doch noch nicht alle Teile habe. Es gibt ein paar Problemchen: 1. Den Kondensator C10 habe ich zu nah an dem Elko C21 plaziert, kann man in dem Layout ein paar Postings weiter oben auch sehen. Wenn man C10 so "südlich" wie möglich einlötet sollte es aber noch passen. 2. Der schon erwähnte USB-Seriell-Wandler PL2303SA. Ich habe den verwendet weil er klein ist und quasi keine weiteren Bauteile braucht, die Beschaffung erstmal verdrängt. Es gibt ihn bei Saelig oder Alibaba: http://www.saelig.com/IC2/PUSB007.htm http://www.aliexpress.com/item/5PCS-PL2303SA-SOP8/1586332984.html Ich tendiere zu den Chinesen. Ist ein nützliches Bauteil, kann man immer mal gebrauchen, ich würde einfach 20 Stück bestellen. Lieferung dauert dummerweise sehr lange. 3. Die Klinkenbuchse führt Reichelt nicht mehr, das hatte ich leider nicht überprüft. Das angehängte Datenblatt hatte ich seinerzeit dort runtergeladen, ich weiß aber nicht wer die Buchse herstellt. Bei Digikey, Mouser, Farnell, RS und Conrad habe ich mich durchgewühlt, nichts in der Art gefunden, vielleicht hat noch jemand eine Idee? Sie ist 4polig, was wir hier nicht brauchen, aber ich hatte das Symbol und die Buchse im Haus... Durch Google habe ich sie hier zu kaufen gefunden: http://www.soselectronic.de/?str=371&artnum=7610&name=jf35-4b-ts47 (Klaus-Conrad-Str. 1 in Hirschau, na sowas ;-) Leider will der Shop 50€ netto Mindestbestellmenge. Findet da jemand noch was für sich? Wer will denn bei Buchsen-Sammelbestellung mitmachen? (Ich vermute alle, ohne Buchse müßte man ein Kabel anlöten und den optischen Ausgang ggf. anders lösen) Grüße Jörg
:
Bearbeitet durch User
So, ich war einkaufen, um für meine ungünstige Bauteileauswahl zu entschädigen. Wie angekündigt habe ich bei den Chinesen 20 Chips bestellt, mal schauen was da wann ankommt, kann 6 Wochen dauern. Auch bei SOS Electronic habe ich bestellt, 22 Kopfhörerbuchsen, plus 40 Elkos und 8 SMA-Buchsen um den Bestellwert aufzufüllen. Solche Elkos sind da gerade im Sonderangebot, und auch die SMAs waren mit Abstand günstig, finde ich sonst nicht unter 2€. Mit umgelegten Versandkosten zu mir komme ich auf folgende Preise: Kopfhörerbuchse 1,99€ Elko 0,052€ SMA-Buchse 1,22€ Ich hoffe ihr laßt mich vor allem nicht auf all den Kopfhörerbuchsen sitzen und nehmt mir pro Platine eine ab. Während wir auf die China-Chips warten ist noch genug Zeit, um z.B. bei meiner nächsten Mouser-Bestellung weitere Bauteile mitzubestellen, damit es sich auch lohnt und der Teilesatz vollständiger wird. Dazu müßt ihr mit aber sagen, was euch noch fehlt, ich weiß ja nicht welche Optionen der Platine ihr aufbauen wollt (Digitalausgang, RasberryPi-Anschluß, USB). Noch ein Aufbautipp: Wenn ihr das Modul je wieder von der Platine runterkriegen wollt, dann empfehle ich, es mit etwas Luftspalt zu plazieren, z. B. ein Stück Isolierband auf die Rückseite kleben. Das hilft auch der Isolation der blanken Stellen am Modul, falls man sich nicht nur auf den Stopplack der Platine verlassen will. Dann kann man später zum Ablöten mit einem Stück Stahl- oder Kaptonfolie unter die Lötstellen drunterfahren. Ich nehme für sowas das 0,05mm-Blatt von Vaters alter Zündkerzen-Fühlerblattlehre. (In den 70gern mußte man wohl oft an den verschleißenden Kerzen justieren). Es gibt bestimmt auch passenderes zeitgemäßes Werkzeug... ;-) Jörg
Ich habe eine Teileliste erstellt, siehe Anhang. Für alles außer dem Hühnerfutter sind auch Bezugsquelle (i.d.R. Mouser oder ich), Bestellbezeichnung und Preise drin. Im Schaltplan hatte ich nicht alle Bauteile korrekt benannt, das hier hilft hoffentlich, vorher waren z.B. noch offen: Der IR-Empfänger (falls bestückt) muß 3V-tauglich sein, daher ist es ein anderer als im Schaltplan. Der S/PDIF Transmitter ist ein CS8406 im TSOP-Gehäuse. Für das RasPi sind SPI, I2C, I2S noch Optionen für später, bitte die entsprechenden Längswiderstande/Arrays noch nicht bestücken. Jörg
Heute auch mal versucht, das Modul per SPI zu bespaßen -geht definitiv nicht :/ Pin SPI_CSB wird vom Modul beim Start auf LOW gezogen, ebenso SPI_CLK.
Hallo, ich war im Urlaub, daher eine Weile ruhig von meiner Seite. Mittlerweile sind einige Teile eingetrudelt, ich habe ein Board bestückt. Guido, du hast doch das Monkeyboard, können wir bitte mal was vergleichen? Ist bei den Linearreglern für 1,8V und 1,2V wirklich Pin 3 auf Masse? Die von Microchip wären damit nämlich im Shutdown, der Pin ist kein /Enable, sondern ein /Shutdown. Diesen Fehler(?) habe ich mitkopiert, mußte nun je Pin 3 anheben und mit Drähtchen auf Plus löten. Vielleicht gibt es auch andere Regler mit umgekehrter Funktion, dann wäre interessant was denn bestückt ist. Ich habe mit der Platine auch so ein Startproblem wie von anderen hier berichtet. Das Modul sendet anfangs ein einzelnes 0x1B, antwortet nicht auf das erste Kommandopaket (0xFE0000010000FD) der Software. Ist aber wohl grenzwertig instabil, einmal hat es funktioniert. Vielleicht sollte ich auch mit dem Pullup an BAT_DET experimentieren, vielleicht liegt es an der Reihenfolge in der die Spannungen hochkommen? Was für ein Pullup ist denn auf dem Monkeyboard bestückt? Jörg
Jörg H. schrieb: > Ist bei den Linearreglern für 1,8V und 1,2V wirklich Pin 3 auf Masse? > Die von Microchip wären damit nämlich im Shutdown, der Pin ist kein > /Enable, sondern ein /Shutdown. Diesen Fehler(?) habe ich mitkopiert, Hast Du dich an den Schaltplan vom MonkeyBoard gehalten? Da sind die Pins 3 nämlich alle zusammengeführt und auf den PIC gelegt. (siehe Bild pwr.png - Auszug aus dem Schaltplan vom MonkeyBoard) > Was für ein Pullup ist denn auf dem Monkeyboard bestückt? Dort ist ein 1K verbaut. Da wurde aber auch schon mal drauf hingewiesen, das es kein 10K ist. Also ich hab mit dem Board bisher wenig Probleme. Habe jetzt die Tage ein wenig Software geschrieben und kann sowohl FM als auch DAB nutzen. (siehe Bilder) Nur das Display ist etwas nervig weil das so derart langsam ist, das scrollende Texte einfach nur furchtbar aussehen :/
:
Bearbeitet durch User
So, jetzt war ich's leid mit dem zähem Text gescrolle!! Mittwoch hatte ich die Idee, das TFT Display das ich zum STM32 Discovery Board gekauft hatte an den Atmel anzuschließen. Doch dazu hätte ich jede Leitung vom Flachbandkabel einzeln auftrennen, mit Crimpkontakt versehen und auf dem STK500 verkabeln müssen. Da ich auch keine 10 Poligen Buchsen in schneidklemm Ausführung da hatte, hab ich mich dann doch nochmal mit dem Thema ARM beschäftigt und die CooCox IDE für mich entdeckt. Installation des ganzen ist hier im Forum relativ gut beschrieben und nach weniger als einer Stunde blinkte bereits die erste LED. Kurz danach lief dank einiger Libs auf der Seite von Uwe B. auch schon das Display so halbwegs und danach der Timer, Touch und der UART - Einstieg in den STM32 ARM war geschafft :) Und hier nun mit ein paar Macken das Ergebnis der letzten drei Tage (siehe Bilder) Sauber scrollender Programmtext und Touch Steuerung. Das Display wird nach einiger Zeit mit ungewollten Pixeln zugemüllt - das liegt mit Sicherheit am Source der für's erste nur zusammengewürfelt ist. Aber in der nächsten Zeit schaffe ich da für Ordnung und einer mir passenden GUI. MOT Daten will ich dann aber auch noch reinholen und auf dem Disp. anzeigen - hat ja mit 320x24 genau das richtige Format dafür und JPEG Decoder hab ich schon gefunden. PNG fehlt halt noch.
Guido, das sieht echt prima aus! Bei mir gibt es nicht viel Neues. Bei den Reglern habe ich mich von der falschen Symbolbeschriftung in die Irre leiten lassen, da muß nun leider je ein Bein hoch und ein Draht dran. Die Instabilität habe ich noch nicht gefunden. Im kalten Zustand scheint es besser zu sein, da konnte ich zumindest mal den Digitalausgang testen. Der funktioniert, was mich beruhigt, anscheinend sind alle Konfigurationspins richtig. Jörg
Jörg H. schrieb: > Die Instabilität habe ich noch nicht gefunden. Den Widerstand hast Du aber schon geändert, oder? Bei mir klappt das nämlich ohne Probleme. Die einzigen Probleme die ich im Moment habe, die aber nix mit dem Modul zu tun haben, ist der Pixelmüll auf dem Display (SSD2119 Controller) Ich hab inzwischen die restliche Peripherie mal ausgeschaltet und nur das Display selbst in Betrieb - aber ich finde den Fehler nicht :/ Das nervt, denn ich möchte nicht mit der Software weitermachen, solange dieser Mist nicht behoben ist.
:
Bearbeitet durch User
Hallo, ich habe das Monkeyboard und damit schon ein wenig getestet. Unter anderem den Raspi-Kernel mit Hilfe des Beitrags auf Koalos Blog und seinem Code dazu gebracht I2S vom MB zu akzeptieren. Sehr zu empfehlen ist auch I2S zu einem Bluetoothmodul WT32-A von Bluegiga. Mit entsprechender Lizenz funktioniert da auch APT-X mit 48kHz Samplingrate und das hört sich an einem APT-X Kopfhörer ordentlich an. Im Datenblatt des Keystone Chips steht dass er auch I2C zur Steuerung kann, sowie die Ausgabe von RDS Gruppen im FM Mode unterstützt wird. Hat hier jemand schon mal direkt mit Keystone Kontakt gehabt und weiss, ob und für wieviel Geld man eine Firmware mit I2C Steueroption und RDS Gruppenausgabe bekommen kann? Gruß Peer
Hallo zusammen, ich bin neu hier und habe euren Thread zum DAB-Modul bisher mit Interesse verfolgt. Mein Ziel ist, das DAB-Modul über I2C mit einem ATMEGA16 anzusteuern und anschließend Sendernamen ect. über ein Dot-Matrix LED-Display auszugeben. Dazu habe ich mir bereits im Dezember letzten Jahres ein T2-L4A-8650C bei Coolcomponents.co.uk bestellt, weil ich mit der Sammelbestellung zu spät dran war. Im nächsten Schritt habe ich eine Platine für den ATMEGA16 und das DAB-Modul erstellt bzw. das bestehende Monkeyboard-Layout angepasst(siehe Anhang). Das Modul funktioniert inwischen und auch die Kommunikation über I2C läuft bei mir einwandfrei. D.h. ich kann Sender einstellen, mir den Namen und den Text des Senders ausgeben lassen usw. Den Sourcecode hierfür könnte ich bereitstellen. Aber jetzt zu meinem Problem: Leider habe ich gestern mein Board duch einen ungewollten Kurzschluss mit einem Draht zerstört. Seitdem reagiert das DAB-Board nicht mehr auf I2C-Anfragen. Hat von euch noch jemand ein übriges T2-L4A-8650C Modul aus der Sammelbestellung etc. zur Verfügung (Natürlich gegen Bezahlung)? Wo könnte ich noch ein Modul her bekommen? Bei Coolcomponents.co.uk sind Sie auf unbestimmte Zeit ausverkauft. Weiß jemand, ob sich die Firmware der DAB-Module auf den Monkeyboards zu den einzeln DAB-Modulen direkt von Keystone unterscheiden (evtl kein I2C...)?
Andreas R. schrieb: > Hat von euch noch jemand ein übriges T2-L4A-8650C Modul > aus der Sammelbestellung etc. zur Verfügung (Natürlich gegen Bezahlung)? Ich hab 2 Module übrig. Komm eh nicht in absehbarer Zeit dazu, damit zu basteln. Wenn Du willst, melde Dich per PN. Gruß Gerhard
Hallo Andreas, kannst Du die Original Files Deiner Platine zur Verfügung stellen? Grüsse, René
Hallo zusammen, ich habe ein Problem mit dem Modul aus der Sammelbestellung. Ich habe alles zum Testen auf Lochraster aufgebaut und mich dabei an das Layout vom Monkeyboard gehalten. Als alles zusammen war, nach und nach die Spannungen drauf gegeben. Zuerst habe ich die 1.2V und 1.8V angelegt (zwei LM317), alles super. Danach die 3.3V allein, von einem Labornetzteil mit Strombegrenzung. Und so ein Mist, die Strombegrenzung hat sofort angeschlagen. Kann jetzt leider nicht mehr nachvollziehen wie viel Strom da rüberging, müssten aber über 1A gewesen sein. Tja ok, dann alles mehrfach durchgegangen und nach einem Kurzen gesucht. Leider nichts gefunden, sah alles gut aus. Also Modul ausgelötet und mal mit nem Multimeter beigegangen. Ich messe zwischen dem PIN30 (3.3V Eingang) und z.B. PIN37 (also GND) einen verschwindend kleinen Widerstand von 1.6 Ohm! Da kann doch etwas nicht richtig sein. Könnte da vielleicht mal jemand bei sich nachmessen? Das wäre echt super, weiss grad echt nicht was ich nun noch machen soll. Ich hoffe ich habe das Modul nicht irgendwie zerstört. Das wäre sehr ärgerlich, dann bräuchte ich eventuell ein neues. Viele Grüße, Kev
Hallo, noch einmal ein Nachtrag zu meinem letzten Beitrag. Ich denke mein Fehler war gestern die falsche Spannung erwischt zu haben, denke ich habe 5V auf den 3.3V Eingang gegeben. Das mochte das Modul anscheinend garnicht so gerne. Wenn also noch jemand eines übrig hat, gerne zu mir, zu einem fairen Preis versteht sich. Grüße, Kevin
@all: Die Prolific-Chips aus China sind jetzt da (mußte sie vom Zoll abholen, grr). Auf die hatte ich noch gewartet, bevor ich Bauteile verschicke. Man erinnere sich: Ich habe die bei Reichelt nicht mehr erhältlichen Kopfhörerbuchsen für alle Platinen, als Mitnameartikel noch die Koppelelkos weil sie gerade günstig waren, den Rest des Mindestbestellwerts mit einigen SMA-Buchsen aufgefüllt. Nun zu den Prolific: Ich habe einen eingelötet, an USB angegesteckt, nix tat sich, Sekunden später roch es heiß, am Chip hätte ich mir fast den Finger verbrannt. Dann habe ich das noch mal vorsichtig probiert, am mit Strombegrenzung, auch an einem zweiten Chip. Ich kriege die 5V-Spannung nicht hoch, ohne das exzessiver Strom fließt. Ich gehe mittlerweile davon aus, das die Chips gefälscht sind, irgendwas wurde da zum Gewünschten umgelabelt. Die Beschriftung sieht auch etwas unsauber aus. So eine Pleite, meine erste Bestellung bei Alibaba/Aliexpress, und prompt schlägt das chinesische Klischee zu. Nun muß ich mich erstmal mit dem Händler rumärgern, mal sehen was dabei rauskommt. Funktionierende USB-Wandler in absehbarer Zeit wohl nicht... @Andreas R.: Bei dir geht (ging) I²C? Ich habe alle Adressen durchprobiert, nix. Vermutlich hast du dann eine andere Firmware, das wäre interessant. Kann man die auslesen? @Kevin: Tut mir leid mit deinem Modul. Meine beiden sind verbaut, da kann ich nicht gut dran messen. Übrigens: Im Datenblatt steht leider keine Einschaltreihenfolge für die Spannungen, aber eine falsche kann schädlich sein. Im Zweifel sollte man lieber alle zusammen einschalten. Jörg
Hallo zusammen, erst mal vielen Dank an Gerhard W. für die schnelle Hilfe. Ich habe das Modul mittlerweile getauscht und siehe da, wie Jörg H. schon festgestellt hat, reagiert das Modul nicht auf I2C-Anfragen, habe auch alle Adressen durchprobiert (zum Glück habe ich in weiser Voraussicht auch eine UART-Verbindung auf der Platine vorgesehen). Das Modul von Coolcomponents hatte wohl eine andere Firmware, hier antwortet das Modul über I2C auf Adresse 0x88, aber der UART funktioniert nicht (zumindest nicht zusammen mit der Anwendung vom Monkeyboard). Da sich das Modul verabschiedet hat, kann ich die Version leider nicht mehr auslesen. Mir ist aufgefallen, dass sich die Module durch einen golden Punkt direkt auf dem BGA Chip unterscheiden. Das ist womöglich die Markierung bei der Herstellung zur unterscheidung... Wäre es denn möglich noch eine Sammelbestellung zu starten? Wie viele Module müsste man denn abnehmen? Gruß Andreas
Also ich wäre bei einer Sammelbestellung auch an einem Modul interessiert.
Ich werde wohl so zeitnah nicht dazu kommen, mit dem Modul zu spielen, deshalb hätte ich zwei Module und zwei Platinen unbenutzt abzugeben. Wer Interesse hat, melde sich per PN. Gruß Sven
Wo wir gerade am Materialverteilen sind: Ich habe noch 4 von meinen Leerplatinen übrig. Jörg
@Jörg Eine Einschaltreihenfolge hatte ich überhaupt nicht auf dem Schirm. Danke für den Hinweis, das könnte es natürlich auch gewesen sein. @Sven Du hast eine PN von mir, bezüglich der Module die du abtreten möchtest. Grüße, Kevin
Hi, ich hab mir auch ein kleines Board gebaut mit einem xmega und FTDI USB Bridge. Gibt es irgendwo eigentlich schon c-Code zur Ansteuerung des Moduls. Mein Ziel ist es das ganze möglichst gelungen in ein altes Röhrenradio zu integrieren und möglichst viel von der ursprüglichen Beschaltung zu recyclen (Röhrenverstärker, Tasten, Antenne). Viele Grüße Hans-Martin P.S. Falls mal wieder bestellt wird bin ich dabei.
Hi, ich klinke mich mal ein für alle die die noch ein Modul brauchen. Es lässt sich direkt über support@monkeyboard.org bestellen. Bezahlung erfolgt über PayPal. Lieferung dauerte bei mir ca. 8 Tage (mit Tracking). Preise (AUD = Australische Dollar 1 EUR = 1,49 AUD): 1- 4 pcs. AUD 25,- 5-10 pcs. AUD 20,- 11-99 pcs. AUD 17,- Delivery (500g) AUD28 (for Europe) Each module is only about 10gram Einzelne Module sind sicher zollfrei. War zumindest bei mir so.
Hallo Uwe, ich habe noch zwei von Jörgs Platinen übrig. Wenn du Interesse hast, gerne per PN ;)
Hi, ich bin aus dem Urlaub wieder da. Platinen habe ich natürlich noch, sowie vor allem Klinkenbuchsen. Für Bauteile wollte ich ja eigentlich noch eine Versandrunde anbieten, wenn die USB-Chips da sind. Zu den gefälschten USB-Chips: Der AliExpress-Verkäufer hat mir immerhin das Geld zurückerstattet. Auf den Zollkosten bin ich allerdings sitzengeblieben, von Zeit und Mühe ganz zu schweigen. Meine erste Erfahrung mit Versand aus China trifft voll das Klischee, alles Fake von dort.
Omega G. schrieb: > Ja, das Menü lässt sich bedienen. > Man kommt da rein, in dem man mit 57600 Baud 0x81 sendet, bis das Menü > erscheint. @Omega G. Ich kriege zwar mit einem 10K Pull-up an BAT_DET auch die periodischen 0x!B empfangen aber das Menu kommt nicht egal wie oft ich 0x81 sende. Muss ich da noch etwas anderes beachten oder irgendein Timing einhalten? Baudrate ist 57600-N-1.
Damit nicht auch noch andere darauf hereinfallen... Die Power Bar Berechnung (mit Befehl STREAM_GetPowerBar) geht leider nur bei FM und DAB. DAB+ wird vom Modul nicht unterstützt. Hat jetzt leider auch Keystone bestätigt. Übrigens im FM mode sind es 8 x 16 bit und im DAB Mode wie in der SlaveModeCommandSet 3.1.1 Liste beschrieben 16 x 8 bit.
Rolf B. schrieb: > @Omega G. > Ich kriege zwar mit einem 10K Pull-up an BAT_DET auch die periodischen > 0x!B empfangen aber das Menu kommt nicht egal wie oft ich 0x81 sende. > Muss ich da noch etwas anderes beachten oder irgendein Timing einhalten? > Baudrate ist 57600-N-1. Ich habe da nichts beachtet, sondern einfach im Terminal gesendet.
Bin mal die ASCII Tabelle durchgegangen. Bei mir scheint eine andere Firmware geflashed zu sein. Nur bei Eingabe von 0x20 kommt bei meinem Modul dieses Menu:
1 | 003 BootROM Loader 1.0 |
2 | 1. Download bootloader - SST |
3 | 2. Download bootloader - MXIC |
4 | 3. Download to memory 0x8000 |
5 | 4. Jump to memory 0x8000 |
6 | 5. Reset |
7 | X. |
Bei 0x81 passiert wie gesagt gar nichts. Meine Modul Version ist 0x00 0033 0F CE 0004 00000037 (Befehl SYSTEM_GetAllVersion) Hat schon mal jemand seine Modul Version ausgelesen?
Habe Versucht RDS-Rohdaten zu empfangen, vorher mit dem Befehl "0xFE,0x07,0x00,0x01,0x00,0x02,0x00,0x10,0xFD" die Daten angefordert. Es kommt zwar die Command OK Antwort, aber keine Daten. Lese ich die Excel Tabelle falsch ? Hat schon jemand das zum laufen bekommen ? Gruß Wal
@Wal habe das gleiche Problem wie Du. Es kommt keine Notification gemäß 'CMD_NOTIFY_RDS_RAW_DATA'. Vielleicht hat ja jemand eine zündende Idee? Lg Rolf
Gerrit W. schrieb: > Vom Modul wird neben FM (87.5~108MHz) und dem Band-3 (174~240MHz) auch > das L-Band (1452MHz~1492MHz) unterstützt. Das letztgenannte ist aber > wohl nicht so interessant. Das L-Band wird in Tschechien betrieben, also da es für die Deutschen ein Nachbarland ist, kann es für manche sehr wohl interessant sein...
Die Module vom Monkeyboard-Hersteller geben kein RDS aus. Steht auch in der Beschreibung zum Pro-Modul. RDS ist nur für Stationsnamen und Radiotext verfügbar. Gruß Peer
Die Versionsinfo vom Monkeyboard: MCU_Version: 0.041 DB_Version: 15 Boot_Version: 203 DEBUG: ASP_Version: 04.00033 RDSRawData und I2C funktionieren in diesen Versionen nicht.
hello Guys, i do not speak german, despite the fact i live in Strasbourg France close to Germany. I would like to know if some of you have found or reverse engineered the protocol between serial rs232 and the KeyStone 8650. We would like to drive the keystone module and select a frequency, tune to it, and get the sound, using serial or serial through usb. Thanks a lot for your help, Gilles
Moin zusammen, für ein aktuelles Projekt hätte ich großes Interesse an einem DAB+ Modul von Keystone (nicht unbedingt das Monkeyboard, das reine Modul würde mir reichen). In diesem Thread liest man immer wieder von schlechtem Empfang? Liegt das am Modul selbst oder an schlechten/falschen Antennen von Probeaufbauten? Für einen ersten Test benötige ich ja "nur" das Keystone 8650 Board, eine Antenne und einen µC mit Uart, richtig? Hat jemand noch ein Keystone 8650 Board übrig? Die Teile in Deutschland zu besorgen ist ja wahrlich nicht einfach :( Hat eigentlich jemand Erfahrung mit dem Venice 9 (FS2029)? Das sieht mir sehr schick aus, Vor allem weil man direkt eine Antenne dranschrauben kann. Weiß jemand wie man da dran kommt? Danke, Gruß Borsty
Hallo Borsty, hat sich mittlerweile jemand gemeldet wg. Erfahrungswerten ? Im Prinzip währ ich ja auch interessiert. Aber irgendwie ist es bemerkenswert leise geworden um diese Modul. Entweder es läuft bei allen supertoll (no news, good news) oder die Leute sind resigniert :-( Viele Grüsse Tuncay
Abend zusammen, ich verzweifle grad an einem Keystone L4A-8650C Board. Ich hab zum einen das Monkeyboard welches mit der mitgelieferten Software super läuft. Zum anderen möchte ich ein 8650C mit eigenem Design in mein System integrieren. Die Anbindung soll über UART laufen, I2C wäre zwar auch möglich (ist beides bereits vorhanden) allerdings kann ich dann ja keine Sendernamen abrufen, oder? Für einen ersten Test hab ich die UART Schnittstelle des Monkeyboards mit einem MAX3232 und einer Seriellen PCI-X Karte versucht anzusprechen. Hier im Forum war ja oft die Rege von 57600 Baud 8 Bits 1 StopBit keine Parität. Gesagt, getan... nichts. Kein Mucks. Mittlerweile hab ich alle Baudraten und alles was man so prüfen kann kontrolliert. Mit exakt selben Aufbau kann ich ein RN52 Bluetooth Modul mit 9600 Baud übrigens problemlos ansprechen. Es liegt also nicht an der RS232 Strecke. Da ich dann allerdings den PIC auf dem Monkeyboard als Ursache nicht ausschließen konnte hab ich mir kurzerhand ein weiters Modul auf Basis der Platine hier im Forum aufgebaut. Minimalkonfiguration sozusagen. Die drei Spannungen, alle benötigen Pull Ups und C's und den UART drangebastelt. Leider wieder keinerlei Reaktion :( Öffne ich die Terminalkonsole (Putty, TerraTerm oder wie auch immer) passiert nichts. Drück ich die Enter Taste sehe ich am RX Pin des DAB Chips (Pin 38) über das Oszi dass sich was tut. Die Verkabelung stimmt also nur leider mag das Modul nicht mit mir reden. Was mache ich falsch? Irgend jemand einen Tipp? Gibt es vielleicht doch eine Möglichkeit die Sendernamen über I2C zu empfangen und das Teil komplett ohne UART zu steuern? Gruß Borsty
Borsty Bürste schrieb: > Abend zusammen, > > ich verzweifle grad an einem Keystone L4A-8650C Board. > > > Leider wieder keinerlei Reaktion :( Öffne ich die Terminalkonsole > (Putty, TerraTerm oder wie auch immer) passiert nichts. Drück ich die > Enter Taste sehe ich am RX Pin des DAB Chips (Pin 38) über das Oszi dass > sich was tut. Die Verkabelung stimmt also nur leider mag das Modul nicht > mit mir reden. > > Was mache ich falsch? Irgend jemand einen Tipp? > > Gibt es vielleicht doch eine Möglichkeit die Sendernamen über I2C zu > empfangen und das Teil komplett ohne UART zu steuern? > > Gruß > Borsty Hallo Nun, wenn ich weiterhelfen kann? Meine Idee dazu wäre ein AmTel844 und ein Display und das ganze über den I²C - Bus SDA / SCL ansteuern. Nur: Wer schreibt das Programm für den AmTel844? Damit ein angeschlossenes Display das dann darstellen kann?????? Denn ICH hab keine Ahnung, wie man sowas programmiert, ich greif auf Fertigmodule zurück. DAB+Radio kaufen, (zB von Phillips), Electronik raus und in eigenes einbauen.... So mach ich das. Und es funktioniert.. Hat Dir siocher nicht weitergeholfen, weiß ich, aber meine Idee dazu wars wert, hier zu posten.
Ich habs geschafft :) Der Logicanalyzer brachte dann den Erfolg :) Jetzt zeigte sich dass TeraTerm irgend einen Wirren ASCI Code auf die Leitung bringt. Mit RealTerm kam ich dann schließlich klar. Kann nun Befehle absenden und bekomme Antworten vom Gerät :) Tolle Sache :) Aber echt mies Dokumentiert das Modul ... 57600 Baud sind über einen AVR ohne externen Quarz leider auch nicht möglich. Mal sehen wie ich dass in meinem System zum laufen bring.
... Jetzt bin ichs nochmal. Also die generelle Kommunikation mit dem Modul klappt nun schon mal. Ich kann Radio hören, bekomme Sendernamen übermittelt und kann Volume einstellen. ABER ich kann nicht einstellen welchen Sender ich hören möchte :( Ich bin im Ensemblelabel DR, was mir auch entsprechend ausgegeben wird. Leider lande ich aber immer entweder bei Radio BOB! oder Schlagerparadies. Eine Senderliste findet man z.B. hier: http://www.fmlist.org/sendertabelle/dab-st_more.php?inputLand=D&inputEn=10BC Wie wähle ich einen bestimmten Sender an? Ausschlaggebend sollte doch die im Link aufgelistete PID sein, oder? Ich möchte z.B. den Radio "Sunshine Live" mit der PID 15DC hören. Dazu setze ich: 0xFE 0x01 0x00 0x01 0x00 0x05 0x00 0x00 0x00 0x15 0xDC 0xfd was mir aber mit FE 00 02 01 00 01 00 FD verweigert wird. Weiß jemand mehr? Danke, Gruß :)
Du machst erst einen Suchlauf und die gefundenen Progamme kannst du dann einstellen. Der Suchlauf muß nur einmalig ausgeführt werden, die Programme sind dann auf dem Modul gespeichert. Das man die PID direkt aufrufen kann, habe ich noch nicht gelesen. DAB-Suchlauf : 0xFE,0x01,0x03,0x01,0x00,0x02,0x00,0x47,0xFD DAB-Progamm einstellen : 0xFE,0x01,0x00,0x01,0x00,0x05,0x00,0x00,0x00,0x00,0x00 .. 0xFF,0xFD Gruß Wal
NEIGEL schrieb im Beitrag #3751042: > Programmierst mir auch ein FERTIGES Modul? Oder hast auch soviel Ahnung > von Nichts wie ich? Denn diese Zeichensalate hier von dir ergeben > keinerlei Sinn! Hä?? Watt bist du denn für einer? Diese Zeichensalate stehen in dem Manual, das hier im Thread auch rumfliegt und heißen: STREAM_AutoSearch von einer Frequenz bis zu einer anderen und STREAM_Play, DAB oder FM oder BEEPER oder AM, DAB Index oder Frequenz Die Antwort von Wal ist dementsprechend schon vollständig und macht Sinn! NEIGEL schrieb im Beitrag #3751042: > So kann man glauben, was > man möchte, aber eines tu ich hier nicht: IRGEMNDWAS IRGENDWEM hier im > Forum Niedergetippeltes auch noch auf den Wahrheitsindex prüfen zu > lassen. Denn das wär reine Zeitverschwendung und rausgeschmissenes Geld. > Ich amüsier mich halt nur über soviele User hier, die dem auch noch > Glauben schenken, was sie hier zu lesen bekommen. Tja, was du machst oder nicht machst, ist dein Brei! Fakt ist, dass hier im Forum den Usern geholfen wird, wenn diese eine vernünftige Frage stellen können.
:
Bearbeitet durch User
Moin :) Vielen dank für eure Antworten, ich hab's mittlerweile sogar selbst rausgefunden. Musste noch nie soviel Reverse Engineeren wie bei diesem Projekt. Sendersuchlauf klappt, Namen werden mir im Display angezeigt und ich kann die Sender durchscrollen. Feine Sache :) Heute kommt noch die I2S Schnittstelle dran dann bin ich glücklich :) Danke, Gruß :)
Hallo Borsty, hast du das einzelne Keystone Modul 8650 oder das Monkeyboard zum laufen bekommen? Kannst du ein paar mehr Infos dazu hier posten? :) Ich wäre daran sehr Interessiert. Gerne auch per PM... Viele Grüße, Uwe
Gerne :-) Bin grad auf dem Sonne Mone und Sterne Festival, leider kriegen wir hier keine brauchbaren Sender rein :-( Werde mich danach bei dir melden.
So, anbei eine C-Datei mit etwas Code wie ich das Keystone Modul zum laufen gebracht habe. Dies ist keine Copy & Paste Lib sondern lediglich die relevanten Schnipsel aus meinem Quick & Dirty Projekt. Für die UART Kommunikation habe ich die Lib hier aus dem Forum mit ISR/Interrupt verwendet. I2C habe ich nicht zum laufen gebracht, das Modul antwortet nicht. Die I2S Audioschnittstelle arbeitet bei meinem Modul mit 48kHz/12.288MHz ohne zusätzliche Aktivierung der Schnittstelle. Analog Out funktioniert aber auch :) Ich hoffe ein wenig geholfen zu haben.
Hallo Borsty Bürste. Vielen Dank für den Code. :)
:
Bearbeitet durch User
Hi, ich hab jetzt mal 5 Module bestellt, deshalb kosten die wahrscheinlich um die 25 Euro das Stück. Ich selbst brauche erstmal nur 1 bis 2. Falls jemand interesse hat, kann er sich bei mir melden. Projekt ist: DAB+ an Pioneer Autoradio mit Steuerung übers Radio via CD-Wechsler Menü. Grüße
Hi, Module sind da. Schnell mal was auf Lochraster aufgebaut. Blödes 2mm Raster. Musste Adapter bauen. Mit der DemoSoftware lief es auf Anhieb. Empfang ist erstaunlich gut. DAB+ geht super. FM ist extrem verstört. Aus dem I2S kommt 48kHz, 256fs aber es sind real nur 16 Bit. Grüße
:
Bearbeitet durch User
3162534373 .. schrieb: > Empfang ist erstaunlich gut. DAB+ geht super. FM ist extrem verstört. Welche Antenne hast du verwendet? Für DAB und FM gibt es Kombiantennen. Bei mir war DAB+ auch sehr gut empfangbar solange ich keine kleinen Schaltregler im Umkreis von 10m am laufen hatte. Diese 78XX im TO220 Format haben mir jeglichen DAB Empfang zerstört. Ohne Störsender in der Nähe hatte ich dann aber sogar im Keller noch einigermaßen Empfang. Gute Erfahrungen habe ich übrigens mit der aktiven DVBT/DAB Antenne von AllinOne gemacht.
Hi, ich hab momentan einfach eine DVB-T Zimmerantenne dran. Ein Problem hab ich. Ich hab einen ext. DAC angeschlossen, CS4334K. Sobald irgendwas am SDATA Anschluss vom Keystone daran ist, wird der Empfang schlechter. Bei schlechten Sendern geht es dann ganz weg. Selbst bei stärkerem Empfang hört man Artefakte die sonst nicht zu hören sind. Komischerweise passiert das ganze sogar, wenn ich z.B. nur den Tastkopf vom Oszi an den SDATA Pin vom Keystone halte. Jemand ne Idee? Grüße
Solche Probleme hatte bzw. hab ich auch. Der DAB Empfang ist extrem anfällig für jegliche Art von Störungen. Da hilft nur alles penibel abschirmen und eventuell den Filter vom Antenneneingang anpassen. I2S Leitungen gut schirmen und an einen massiven GND Punkt anbinden. Auf Lochraster wirst du aber immer wieder Probleme haben, allein schon wegen den Kupferaugen wo sich HF super austoben kann. Aus dem Grund ist das Projekt DAB bei mir auch erstmal in den Hintergrund gerutscht.
Hi, der Chip stört sich selber wenn etwas am I2S dran ist. Ohne I2S geht 38% Empfang einwandfrei ohne Störungen. Mit I2S braucht es mindestens 55%, dann geht es auch ohne Ausetzer. Vielleicht kann man da noch was mit Filtern machen. Auf jeden Fall ist es voll lustig bei grenzwertiger Empfangsstärke (38%). Sobald auf SDATA was kommt, wird der EMpfang schlechter und es stottert. Dann wenn kurz mal Pause ist, weil garnix mehr geht, dann kommt der Empfang wieder und es läuft wieder für 2 Sek. Immer im wechsel ;) Man kann sich nun entscheiden. Radio mit Super AudioDAC und dafür braucht man auch Super Pegel. Oder intern Audio mit besserem EMpfang. Oder hat jemand noch eine Idee? Ich muss dazu sagen, dass ich hier wenig Empfang habe. Drei kommerzielle Radios haben deutlich schlechter funktioniert. Eins hat noch nicht mal einen Sender gefunden. Das zweite nur 2 Sender abspielbar. Das dritte 10 abspielbare Sender. Da kann man über Keystone garnicht meckern. 76Channels gefunden. Davon einige Datenkanäle und IIS Testkanäle. Aber sicher 30 abspielbare Musik. Grüße
Hi, Abhilfe haben Serienwiderstände geschaffen. 330 Ohm in MCLK und BCLK. 1 kOhm in LRCLK und SDATA. Grüße
Hi 3162534373,
> Mit der DemoSoftware lief es auf Anhieb.
welche DemoSoftware meinst du?
Grüße
:
Bearbeitet durch User
Hi, Forgive me but I only speak English. But I have purchased these Keystone DAB DAB+ FM T2-L4A-8650C Module (5 in a pack) with the intention of making a couple of radios. Yesterday after doing a great deal of searching the internet for installation help, I came upon this blog. I am new to all of this and after reading all the problems that you experienced techies are having I feel that this project is way above my newbie experience. I will no longer need these modules, if anyone is interested and would like to purchase them please contact me. I have 5 for sale. my email address is laura3319@hotmail.co.uk Thank you.
hallo hat jemand das modul als usb standalone gebaut und würde mir ein paar fragen beantworten mfg christian
Hallo Christian, schön zu sehen, dass sich immer noch jemand mit dem Modul beschäftigt ! Ich habe eine kleine Platine entwickelt, auf der sich nur das Modul, die 3 Spannungsregler und die Antennenbuchse befinden. Die analogen Audioanschlüsse, RX/TX der seriellen Schnittstelle und SDA/SCL der I2C Schnittstelle sind auf Pin-Leisten herausgeführt. Das Ganze lässt sich über einen Bluetooth Adapter vom PC oder Smartphone bedienen. Ich habe aber auch einen Arduino programmiert, der über RX/TX oder I2C das Modul steuert. An dem Arduino hängt ein kleines Display und ein paar Tasten lässt sich das Modul auch als stand-alone DAB Radio betreiben. Die Frage nach USB kann ich so nicht ganz verstehen, soll das Modul über einen USB/Serial Wandler betrieben werden ? Kannst Du die Fragen einmal präzisieren ? Viele Grüße, Rainer
Hallo Rainer, das hört sich sehr Interessant an. :) Ich wäre an der Library für das DAB Modul und an dem Programm interessiert. Wie hast du die Antennenanpassung auf deiner Platine gemacht?
Hallo Rainer ich möchte das modul mit meinen rasp 2 betreiben da meine uart schon belegt sind wollte ich ein pl 2303sa verwenden. über deine hilfe würde ich mich sehr freuen auch kontakt per email möglich danke im vorraus mfg
Hallo, nach langer Ruhe nun gleich mehrere Beiräge an einem Tag ! @Uwe : zur Antennenanpassung gibt es einen Beitrag von Jörg H. am 4.2.2014. Ich habe mir keine größeren Gedanken gemacht und den Anschluss wie beim Monkeyboard dicht an das Modul gesetzt ( siehe Bild ). Eine Lib für den Arduino habe ich nicht gemacht, da ich immer noch an dem Code arbeite und einiges auch von meiner Anwendung abhängt. Im Prinzip muss man 2 Dinge machen : einmal die Kommandos an das Modul senden ( siehe Beiträge von Eugen Kremer am 18.12.2014 und von Gerrit W. am 19.12.2014 ) und die Antwort entsprechend verarbeiten. Ich habe mal Code Schnipsel für I2C angehängt : Am Anfang stehen die Kommandos, die umgesetzt worden sind, wegen des kleinen Speichers des Arduinos gibt es keine Screenshow. Dies sind die beiden wesentlichen Teile : Module_Send_Command sendet ein Kommando an das Module, in CMD_16_Byte_Response werden die Daten für die Kommandos ausgelesen, die bis zu 4 Bytes an Daten liefern. Der Rest ist Ablaufsteuerung und Fehlerbehandlung sowie Bedienungsinterface. Die Reihenfolge der Kommandos sind ganz gut in einem Beitrag von Monkeyboard beschrieben, habe den Text gerade nicht zur Hand. @Christian Beim Raspi kann ich Dir leider nicht weiterhelfen. Im Beitrag von Jörg H. am 1.2.2014 gibt es aber ein Beispiel für die Schaltung mit dem PL2303. Im Prinzip simulieren diese Module zum Rechner hin ein serielles Interface ( "COM Port" in Windows ) und zum Modul verhalten sie sich wie eine serielle Schnittstelle, diese muss auf 57600,N,1 gestellt sein und nur 3,3 Volt Pegel liefern. Über diese Schnittstelle laufen dann die Kommandosm die in der Excel Datei beschrieben sind und zum Teil in meinen Programm umgesetzt sind. Viele dieser Informationen habe ich aus diesem Thread, ohne den wäre ich nicht weitergekommen, grosses Lob an die Beteiligten ! Viel Erfolg, Rainer
Erst mal vielen Dank für die vielen hilfreichen Informationen auf dieser Seite. Ich habe vor einigen Tagen mein Monkeyboard bekommen und interface es mit einem Arduino Mega. Monkeyboard stellt eine Dummy-Firmware für den PIC auf dem Board zur Verfügung, mit dem der Keystone lediglich gebootet wird. Anschließend soll man per UART Befehle an den Keystone schicken. Da das Modul (laut aussage Support) 5V-tolerant ist werden keine Levelshifter benötigt. Zum Test habe ich den PIC unverändert gelassen und mit dem Arduino die Kommunikation belauscht während das Modul am Linux-PC mit der Demo-Software gelaufen ist. Empfangsseitig funktioniert das sehr gut, hier der Mitschnitt:
1 | RX: FE 00 00 01 00 00 FD // System_GetSysRdy |
2 | RX: FE 01 16 01 00 00 FD // Stream_GetTotalProgram |
3 | RX: FE 01 16 01 00 00 FD // .. |
4 | RX: FE 01 0C 01 00 01 08 FD // Stream_SetVolume |
5 | RX: FE 01 09 01 00 01 01 FD // Stream_SetStereoMode |
6 | RX: FE 01 00 01 00 05 01 00 01 6B 48 FD // Stream_Play (FM, 93.0 MHz) |
Sendeseitig ist allerdings Essig.. :-( Nach dem Flashen der Dummy-Firmware startet der PIC das Modul und ich beginne mit der Initialisierungssequenz:
1 | CMD: SYSTEM_GetSysRdy |
2 | TX: FE 00 00 01 00 00 FD |
3 | RX: FE 00 01 01 00 00 FD |
4 | |
5 | CMD: STREAM_GetTotalProgram |
6 | TX: FE 01 16 01 00 00 FD -> 50 ms no answer -> retry |
7 | ---x--- 17 time-outs |
8 | CMD: STREAM_GetTotalProgram |
9 | TX: FE 01 16 01 00 00 FD |
10 | RX: FE 01 16 01 00 04 00 00 00 00 FD |
11 | |
12 | CMD: Stream_SetVolume |
13 | TX: FE 01 0C 01 00 01 09 FD -> 50 ms no answer -> retry |
14 | ---x--- 14 time-outs |
15 | CMD: Stream_SetVolume |
16 | TX: FE 01 0C 01 00 01 09 FD |
17 | RX: FE 00 02 01 00 01 00 FD -> command failed -> retry |
Die Kommunikation erzeugt Unmengen an Timeouts und wenn überhaupt was vom Keystone empfangen wird dann meist Fehlermeldungen. Wenn man beim Arduino TX mit RX verbindet (loop device) dann funktioniert senden und Empfangen einwandfrei. Der Arduino hat also schon mal kein Problem beim Senden. Ich vermute daher irgend ein elektrisches Problem bei der Sendeseitigen Anbindung (TX Arduino → RX Keystone). Hat jemand eine Idee wie man das Problem weiter untersuchen könnte?
Hi, hast du die Dummy-Firmware in den PIC geflashed? http://monkeyboard.org/images/products/dab_fm/Dummy%20DAB.zip Wenn du den UART direkt benutzt, musst du das vorher machen. Gruß Peer
Hi, ist noch etwas früh..., bist du sicher, dass die Dummy-Software aktiv ist (um Linux-PC über USB funktioniert das Modul jetzt nicht mehr)? Gruß Peer
Hallo Peer, Die Dummy-Firmware ist geladen. Das Radio funktioniert an USB nicht mehr. Ich habe mir den Sourcecode der Dummyfirmware angesehen. Es sind nur wenige Zeilen. Es wird der Radiochip gestartet und anschließend der TX-Pin auf 1 gesetzt, dann verharrt er in einer Endlosschleife. Frage mich nun, ob dieses "auf 1 setzten" des TX-Pins genügt um den Arduino dann auf der gleichen Leitung senden zu lassen? Wenn diese "1" die UART-Pegel verschiebt kann der Arduino vielleicht nicht richtig senden? Grüße, Lars
Hi, anscheinend haben andere auch schon ein ähnliches Problem mit dem Arduino und dem Monkeyboard gehabt: http://forum.arduino.cc/index.php?topic=257874.0 Hast du ein Oszilloskop zur Hand und kannst die Pegel anschauen? Ist die serielle Schnittstelle korrekt initialisiert? 57600, 8, N, ,1? Der Mega hat 16MHz? Dann schau mal in diese Tabelle http://wormfood.net/avrbaudcalc.php?postbitrate=57600&postclock=16 Der Baudratenfehler lkiegt bei 57600 baud schon bei 2,1%. Vielleicht solltest du einen anderen Quartz verwenden. Mit 14.7456 Mhz würde die Baudrate exakt passen. Alternativ kannst du ja mal das im Arduino Forum genannte 1ms Delay versuchen. Gruß Peer
Hallo, bei mir funktioniert die Lösung in der angehängten Datei einwandfrei mit dem Nano, Leonardo und Pro mini. Die Datei gilt für den Leonardo mit der Serial1 Schnittstelle. Ich sende das Kommando an das Modul ( mit 1 msec Delay zwischen den Writes ) und warte in einer Schleife auf die Antwort. Mit der Zahl der Schleifen und der Wartezeit zwischen den Versuchen kann man einen guten Kompromiss zwischen Sicherheit und Schnelligkeit. Das Warten gilt als beendet wenn sowohl 0xFE und 0xFD empfangen werden oder die Zahl der erlaubten Schleifendurchläufe erreicht ist. Beim Aufruf der Funktion kann man die Wartezeit und die Zahl der Loops individuell an den Befehl anpassen, manche Befehle brauchen länger als andere, bis die Antwort bereitsteht. Wenn der Debug Parameter auf "true" steht, kann man im Monitor die Zahl der benötigten Schleifen beobachten und die Zahl und die Wartezeit anpassen. Das funktioniert auch mit den Befehlen, die Texte zurückgeben, auch die MOT Befehle arbeiten, habe diese aber nicht weiter getestet, da zu wenig Speicher für die Verarbeitung bereitsteht. Viel Erfolg, Rainer
Hallo Peer, Inzwischen haben ich mit der Dummy-Firmware gespielt und sichergestellt, dass der TX-Pin des PIC als Eingang konfiguriert ist. Ändert am Verhalten leider nichts. Das mit dem Quarz ist interessant. Es würde erklären warum der Arduino sich selbst empfangen kann aber das Senden an den Keystone klemmt. Der Austausch des Quarzes ist ja elektrisch einfach zieht aber wohl etliche Software-Änderungen hinter sich her (wegen des Bootloaders). Aus purem Frust habe ich dann einfach die Arduino-Schnittstelle mit etwas weniger Geschwindigkeit initialisiert:
1 | // Serial2.begin(57600); // alt
|
2 | Serial2.begin(57400); // neu |
Ich dachte erst es kompiliert nicht einmal aber .. es funktionierte alles auf Anhieb! Kein einziger Kommunikationsfehler, alles perfekt .. ungläubiges Staunen Dann habe ich diese Seite gefunden: https://www.pjrc.com/teensy/td_uart.html
1 | Arduino at 57600 Baud - It's Actually 58824 |
2 | Arduino creates the same baud rates as Teensyduino, except at 57600, where Arduino's error is +2.12%. |
3 | When communicating with an Arduino board, the combined +2.12% and -0.79% error is too much. |
4 | Successful communication with Arduino requires 58824 baud. |
5 | |
6 | void setup() { |
7 | Serial1.begin(58824); // Arduino 57600 is actually 58824 |
8 | } |
9 | |
10 | Alternately, if you edit the Arduino code to use "Serial.begin(57601)", Arduino will create |
11 | a baud rate with only -0.79% error, which exactly matches Teensy. |
Ich habe mich dann für die Initialisierung wie dort empfohlen entschieden:
1 | Serial2.begin(57601); |
Unglaublich, vielen vielen Dank für den Tipp mit der Baudrate !! Viele Grüße, Lars
Hello, I use the monkeyboard DAB+ standalone in my car with bluetooth connection to my phone and control it with the app which is made by Walter. I've change the firmware with the next options: 1. when pcb is power-up, the PIC controller sends commands to the keystone for start play the last tuned station. (last choosen by the adroid app) The USB is still working normal as the original firmware after the startup sequence. 2. when pin 6 of the PIC18F14k50 is making high (>2,6v), the USB-->rs2332 is disabled and bluetooth control is possible. (RX/TX of the HC-05 is parallel connected to the keystone). I've connect the HC-05 pin32 to pin6 of PIC18F14k50. Best Regards, Niels
Rainer G. schrieb: > bei mir funktioniert die Lösung in der angehängten Datei einwandfrei mit > dem Nano, Leonardo und Pro mini. Die Datei gilt für den Leonardo mit der > Serial1 Schnittstelle. > > Ich sende das Kommando an das Modul ( mit 1 msec Delay zwischen den > Writes ) und warte in einer Schleife auf die Antwort. > Mit der Zahl der Schleifen und der Wartezeit zwischen den Versuchen kann > man einen guten Kompromiss zwischen Sicherheit und Schnelligkeit. Das > Warten gilt als beendet wenn sowohl 0xFE und 0xFD empfangen werden oder > die Zahl der erlaubten Schleifendurchläufe erreicht ist. Hallo Rainer, Probier' doch auch mal die Initialiserung mit
1 | Serial1.begin(57601) |
Vermutlich brauchst du danach keinerlei delays mehr zwischen den writes. Ich sende das ganze Kommando am Stück
1 | Serial2.write(buf, len); |
Mit der richtigen Baudrate klappt das jetzt perfekt. Mit freundlichen Grüßen, Lars
Hat eigentlich schon jemand mal versucht die MOT Daten zu lesen und zu interpretieren? Ich sitze gerade vor dem Hex Dump und versuche anhand der EN 301 234 die header-Daten zu lesen. Irgendwie stimmt da mit den bisherigen Bemühungen nichts mit dem überein, was in der Norm steht. Update: habe den Header Core ab dem 9. Byte der Daten gefunden und die stimmen mit der Norm überein. Die 9 Bytes davor scheinen eine Kopie zu sein - zumindest findet man die Transport ID darin wieder.
:
Bearbeitet durch User
Könntest du so ein Stück Dump mal posten? Evt. mit dem, was du bereits herausgefunden hast?
Die EN 301 234 http://www.etsi.org/deliver/etsi_en/301200_301299/301234/02.01.01_40/en_301234v020101o.pdf schreibt zu der Objekt Beschreibung auf seite 12ff: "An object consists of an ordered collection..." "Header core: The header core contains information about the size and the content of the object, so that the receiver can determine whether it has system resources to decode and present the object or not." ein Objekt setzt sich nach der Beschreibung wie folgt zusammen:
1 | 7 bytes variable variable |
2 | header core header extension object body |
Wobei der header core zuerst einmal der interessante Teil meiner Suche war, da hier der content type beschrieben wird. In ihm steht nämlich, was da gerade übertragen wird. Vorrangig interessiere ich mich für die Slideshow - also die Bilder die mit dem Programm übertragen werden. Der content type ist im header core beschrieben und setzte sich aus content type und content subtype zusammen. Daneben gibt es auch gleich Informationen zur Größe des Objekts (Bild) und die Größe des Headers die für mich von Interesse sind. Die 7 Bytes teilen sich wie folgt auf:
1 | 28 bits 13 bits 6 bits 9 bits |
2 | body size header size content type content subtype |
3 | b55 b28 b27 b15 b14 b9 b8 b0 |
Zuerst habe ich versucht die body size am anfang der MOT Daten, beginnend mit 73h zu suchen...
1 | ## 00311,726 received MOT packet; returncode: 005D; cmdtype: 03; cmdid: 00; sernr: 0A; length: 005D
|
2 | DS AT DG SEGNR TR-ID SN DATA... |
3 | 3C 00 03 80 00 F4 40 80>73<60 80 00 12 F4 40 00 <..€.ô@€s`€..ô@. |
4 | 4A 00 04 D7 80 25 04 01 CC 2C 00 32 30 31 36 2D J..×€%..Ì,.2016- |
5 | 30 31 2D 32 36 2E 31 38 2D 34 30 2D 34 35 2E 37 01-26.18-40-45.7 |
6 | 30 33 34 33 32 32 36 33 35 38 32 30 34 39 34 33 0343226358204943 |
7 | 39 33 2E 6A 70 67 D0 0A 69 6D 61 67 65 2F 6A 70 93.jpgÐ.image/jp |
8 | 65 67 85 00 00 00 00 4A 7F 46 00 05 9C eg…....JF..œ |
Laut der Beschreibung im Excel Sheet, welches auch hier auf der Seite zu finden ist, beginnen die Daten nach der Seriennummer des empfangenen Pakets. Das wäre also das 9. Byte (73h). Nimmt man sich hier die ersten 28 Bits heraus (73h, 60h, 80h 00H >> 4) = b0111001101100000100000000000 = d120981504 merkt man recht schnell, das da kein Bild mit >11Mb kommen wird. Da ich im Hex Dump ja bereits im Klartext was von image/jpeg lesen konnte und der Data group type (Byte 3) auf einen Header hin deutet (03h), habe ich einfach mal die Daten der ersten 32 Bytes als binäre Ziffernfolge ausgeben lassen und nach der auf Seite 13 beschriebenen Bitfolge für ein image/jpeg (JFIF) gesucht die da wäre: 000010 für image und 000000001 für ein JFIF also: "000010000000001" Treffer!
1 | 3C 00 03 80 00 F4 40 80 73 60 80 00 12 F4 40 00 |
2 | 00111100000000000000001110000000000000001111010001000000100000000111001101100000100000000000000000010010111101000100000000000000
|
3 | 4A 00 04 D7 80 25 04 01 CC 2C 00 32 30 31 36 2D |
4 | 01001010[0000000000000100110101111000][0000001001010][000010000000001][11][001100][0][0101100]000000000011001000110000001100010011011000101101 |
Also gleich die Probe ob die Daten irgendwie richtig sind. Die 13 Bits davor wären die header size b0000001001010 = d74 - plausibel. Davor die 28 Bits die body size b0000000000000100110101111000 = 19832 also 19,8K - ebenfalls plausibel. Beleuchte ich also mal die Header extension - erst mal die 2 bits PLI (Parameter Length Indicator) b11 gefolgt von 6 Bits der ParamId (Parameter Identifier): b001100, dem 1 Bit Ext (ExtensionFlag) b0 und - weil Ext = 0 - den 7 Bits DataFieldLength Indicator b0101100 = d44, also 44 Bytes an Daten, die jetzt folgenden Inhalt haben:
1 | 00 32 30 31 36 2D 30 31 2D 32 36 2E 31 38 2D 34 .2016-01-26.18-4 |
2 | 30 2D 34 35 2E 37 30 33 34 33 32 32 36 33 35 38 0-45.70343226358 |
3 | 32 30 34 39 34 33 39 33 2E 6A 70 67 20494393.jpg |
Die restlichen Daten dahinter ignoriere ich jetzt mal, weil die mir nicht ganz klar sind. Die Doku dazu ist auch äußerst verwirrend. hier findet man wohl noch einen Zeitstempel und mehr. Sieht meiner Meinung nach jetzt schlüssig aus :O) Kommt halt erst 8 Bytes später, als erwartet. Was in den anderen 8 Bytes davor steht, ist mir noch nicht ganz klar und sollte es auch hier so nette ungerade Bitfelder geben sollen, kann man sich nicht darauf verlassen, das die Daten immer erst ab dem 9. Byte beginnen. Nimmt man das nächste Paket mit derselben Transport id (F440h), geht es auch hier erst ab dem 9. Byte los, denn hier sticht die magische Zahl ffd8h ins Auge - damit beginnt ein JPEG. https://de.wikipedia.org/wiki/JPEG_File_Interchange_Format
1 | ## 00313,006 received MOT packet; returncode: 00EC; cmdtype: 03; cmdid: 00; sernr: 15; length: 00EC
|
2 | DS AT DG SEGNR TR-ID SN DATA... |
3 | 3C 00 04 00 00 F4 40 00 74 80 00 00 12 F4 40 03 <....ô@.t€...ô@. |
4 | F5 FF D8 FF E0 00 10 4A 46 49 46 00 01 02 00 00 õÿØÿà..JFIF..... |
5 | 01 00 01 00 00 FF DB 00 43 00 04 03 03 04 03 03 .....ÿÛ.C....... |
6 | 04 04 04 04 05 05 04 05 07 0B 07 07 06 06 07 0E ................ |
7 | 0A 0A 08 0B 10 0E 11 11 10 0E 10 0F 12 14 1A 16 ................ |
8 | 12 13 18 13 0F 10 16 1F 17 18 1B 1B 1D 1D 1D 11 ................ |
9 | 16 20 22 1F 1C 22 1A 1C 1D 1C FF DB 00 43 01 05 . ".."....ÿÛ.C.. |
10 | 05 05 07 06 07 0D 07 07 0D 1C 12 10 12 1C 1C 1C ................ |
11 | 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C ................ |
12 | 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C ................ |
13 | 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C FF ...............ÿ |
14 | C0 00 11 08 00 F0 01 40 03 01 22 00 02 11 01 03 À....ð.@.."..... |
15 | 11 01 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 ..ÿÄ............
|
16 | 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 ................
|
17 | 09 0A 0B FF C4 00 B5 10 00 02 01 03 ...ÿÄ.µ.....
|
Data group type (Byte 3) hier (04h) was für den body der Objektdaten spricht - alles richtig bisher. Weiter bin ich heute aber nicht gekommen. Der nächste Schritt ist alle Segmente derselben Transport id und deren Pakete zusammenzusetzen. Ein Ende eines Pakets erkennt man am gesetzten Bit 7 in der Seriennummer, ein Ende des Segments am gesetzten Bit 15 der Segmentnummer. Hat man alle diese Daten zusammen, hat man den gewünschten Inhalt - vielleicht. Im Anhang habe ich mal einen Dump den ich während ich hier geschrieben habe mitgeschnitten habe. Es sind nur Pakete vom Comand type 03h, die Fehler habe ich nicht mitgeschrieben.
:
Bearbeitet durch User
Nachtrag: Ich hole mir die Daten alle 250ms mit der Funktion MOT_GetMOTData FE 03 00 n++ 00 01 01 FD (1: Get MOT data with application type) wobei n++ die Serial number ist die ich bei jeder Anfrage inkrementiere. Dabei hole ich solange Pakete ab, bis das Modul mir mit FE 00 02 xx xx xx xx antwortet. Ich vermute, dass man die Daten noch schneller abholen könnte, aber das gibt der Raspberry Pi im Moment noch nicht her. Einen Beweis dafür, das die SPI Schnittstelle nicht funktioniert sehe ich in der Tatsache begründet, dass das Modul auf die Anfrage MOT_GetPacketRawLength FE 03 03 xx 00 00 FD mit einem fail antwortet.
Nächster Nachtrag: 1. Die Seitenangaben im Beitrag stimmen nicht mit dem von mir verlinkten Dokument überein. Ich hatte hier noch mit der Version V1.2.1 von 1998 gearbeitet. Die Seiten sind also verschoben. Zudem fehlen Tabellen die im meiner Version noch drin sind. 2. Bis auf 2 Bytes sind die letzten paar Bytes auch geknackt. Es geht nämlich einfach mit weiteren Parametern weiter. Hinter dem Parameter b001100 -> ContentName geht's weiter mit D0 0A
1 | 11 <- 7 or 15 bits DataFieldLengt Indicator |
2 | 010000 <- ParamId: "MimeType"(Tabelle 2 - Seite 34) |
3 | 0 <- Ext 0 = 7 bits DataFieldLengt Indicator |
4 | 0001010 <- 10 Bytes DataField |
-> "image/jpeg" Dahinter geht's weiter mit
1 | 10 000101 0 0000000000000000000000000000 TriggerTime: 0 |
2 | 01 001010 0 1111111 Priority: 7fh |
3 | 01 000110 0 0000000 reserved for MOT protocol extensions |
und dann ist der Header laut Beschreibung in der header size zu ende. Bleiben 2 Bytes übrig: 05 9C Ich vermute einfach mal, das es eine 16 Bit CRC ist, geht aber aus der Doku auch nicht eindeutig hervor.
:
Bearbeitet durch User
Hallo Guido, ich habe vor Jahren eine Java Software für das MB geschrieben, die Slideshow und Journaline unterstützt. TPEG Dekodierung wäre auch möglich, aber der Standard kostet sehr viel Geld. Du solltest dir noch die ts_101759v010201p ansehen. Die 2 Byte sind eine Checksumme: Seite 9 in dem Dokument: The packet_CRC field is calculated, according to the CCITT CRC-16 polynomial, over the entire packet, with the CRC register initialized to all 1s and the resulting CRC inverted. Anbei noch ein Screenshot von der Software und weiterhin viel Spaß beim "Bitpopeln". Gruß Peer
Hi Peer, danke für die Info! Noch 'ne Tabelle ;O) Kannst Du mir noch was zu den 9 Bytes am Anfang sagen - ist das normal oder ggf. vom Modul? Gruß, Guido
Im Anhang das ganze nochmal bildlich Der rote Bereich ist noch unklar. Wäre toll, wenn hierzu vielleicht jemand was schreiben oder das ganze erklären würde. Mit dem letztem Kommentar von Peer komm ich nicht weiter.
Hi, habs mal an deinem Beispiel erklärt. Du musst dir die Standards durchlesen :-) Gruß Peer
Hi Peer, ich lese ja - die TSI Normen sind in etwa genauso schlimm wie die DIN Normen.. "Für Detaillierte Informationen siehe Tabelle 2 in Norm bla bla bla" usw. Man hat ganz schnell mehr als drei Dokumente gleichzeitig offen und verliert schnell mal den Faden finde ich. Ich hatte schon versucht mit der 73h die in der von Dir genannten Norm Beschreibung anzuwenden, aber ich hab's irgendwie nicht geblickt. Danke für das Beispiel, ich versuch's also nochmal und lese noch aufmerksamer. Gruß, Guido
@Peer [Klugscheißer Modus on] Hexadezimal 0x60 ist Binär b1100000 und nicht b10100000 :O) [Klugscheißer Modus off] Soviel zum Thema "lesen" ;O) Ansonsten versuche ich gerade das ganze noch mal durchzugehen und stoße bei Deinem Beispiel auf Ungereimtheiten. Aber erst einmal Danke, das Du dieses Beispiel gegeben hast. Dein Beispiel endet nach der Transport ID mit "End User Adress = 0" und es würde noch ein Byte übrig bleiben "4A" Wenn ich die Doku richtig interpretiere steht nach der Transport ID:
1 | for (n=0;n<length_indicator-2;n++) { |
2 | end_user_address_byte
|
3 | }
|
wobei length_indicator = 2 (2 Bytes für Transport ID) ergo die Schleife nicht durchlaufen wird da die Bedingung n=0 < 0 == false ist. Wo jetzt im Dokument die data_group_length für das MSC_data_group_data_field hergezaubert wird, ist mir auch unklar. Blieben also noch die letzten beiden Bytes "00 4A" übrig aus der MSC data Group übrig. Vielleicht die 16 CRC über diesen Bereich?
Hi, Die End User Address gibt es nicht, wenn Länge = 2 ist. ETSI TR 101 497 V1.1.1 Seite 28 A.1.2.2 Example 2: MOT object, segmentation Length indicator 0010 Two bytes of TransportId, no End user address Das heisst in deinem Beispiel ist 0x004A bereits der Anfang der MSC Data Group 00 = 00000000b 000 = Repetition Count 00000 = Segmentsize b12-b8 4A = Segmentsize b7 - b0 4D78 = Body Size usw. Gruß Peer
0x004a ist noch der Segmentation Header den ich bisher offensichtilch auch übersehen habe - also die fehlenden 16 Bits. Dann passt es jetz auch weil die CCITT-CRC-16 von: "73C0800012F462004A0004BDA0250401 CC2C00323031362D30312D32362E3231 2D34382D31332E363435323734313031 393131353231313036342E6A7067D00A 696D6167652F6A70656785000000004A 7F4600" = 0xFA63 und invertiert = 0x059c ist, was identisch mit den von mir gegebenen Beispiel weiter oben ist schwitz Es wird übrigens ein klein einleuchtender, wenn man die Diagramme in der EN 301 234 von unten nach oben liest denn unten ist das, was man bekommt und oben ist das, was man haben will. Gute - Typ 0x03 Header einmal erfolgreich kapiert. Nachher geht's weiter mit dem interessanteren 0x04 Body
Nächste Erkenntnis… Die Body Daten: Vom Keystone Modul bekommt man Daten mit der Segment Nummer z.B. „F4 50“ und einer Seriennummer. Die Seriennummer ist 8 Bit breit und ist das höchste Bit 7 gesetzt, ist es das letzte Paket für dieses Segment. Mir ist nicht bekannt, ob dies für alle DAB(+) Module gilt oder nicht, da die ETSI Norm eigentlich nur die Segmente beschreibt. Das Element mit der Transport ID 0xF450 habe ich mir jetzt als Beispiel genommen, weil dieses Element im Dump offenbar vollständig vorhanden ist. Im ersten Teil des Body-Segments in dem sich auch die Magische Zahl 0xFFd8 befindet, hat auch einen Header – die darauffolgenden Blöcke (Sequenzen, Pakete) scheinen keinen Header zu haben, den hier kommt nur Mist raus wenn man versucht hier Daten zu interpretieren. Wo befindet sich hier die CRC für dieses Segment? Im letztem Teil des Blocks vor dem Wechsel auf das nächste Segment? -> 0x839C (Paket SN: 04) eher nicht, weil das stimmt vorne und hinten nicht beim berechnen der CRC. Vor allem, weil der Segment Header was von 1013 Bytes erzählt, das Segment aber 2045 Bytes lang ist?!?!? Das nächste Segment hat offenbar wieder einen Header – zumindest „könnte“ man dies anhand des Wertes 0x74 der auch bei anderen Segmentwechseln zu sehen ist interpretieren. Die Segmentnummer findet man ebenfalls nach einem Wechsel in der Segmentnummer. Liest hier noch jemand mit?
Danke! Und vielen Dank auch an Peer für die Unterstützung. Wie ich (wie weiter oben beschrieben) bereits Vermutet habe, sendet das KeyStone 8650 Modul die Segmente jeweils nochmals unterteilt in kleineren Blöcken zu. Daher auch die vom Modul gesendete Seriennummer die sich identisch zu der Segmentnummer verhält. Man muss sich also erst einmal ein Segment aus den einzelnen Blöcken zusammenbauen. Der erste Block mit der Seriennummer 0x00 enthält den Data Group-, Session und Segmentation Header. Die darauffolgenden Blöcke haben nur die Rohdaten ohne irgendwelche Header. Der letzte Block mit gesetztem 7. Bit enthält am Schluss die CRC (falls das Flag im ersten Block gesetzt war)
1 | SEGMENT SERIAL |
2 | 0x0000 0x00 Header + Daten |
3 | 0x0000 0x01 + Daten |
4 | 0x0000 0x02 + Daten |
5 | 0x0000 0x03 + Daten |
6 | 0x0000 0x84 + Daten + CRC |
7 | |
8 | 0x0001 0x00 wie oben |
9 | ...
|
10 | 0x8019 0x84 + Daten + CRC |
Was mich noch stört ist die NULL am Anfang des Dateinamens. Scheint kein Fehler zu sein, weil sich die Header extensions einwandfrei auslesen lassen. Nur warum macht man sowas??
hmm... Besteht der MOT Header immer nur aus einem Segment.. Nein, Frage falsch gestellt im Zusammenhang mit dem KeyStone 8650 Module... Kann der MOT Header aus mehreren Paketen bestehen? Also auch in ein Segment mit der Nummer x und mehreren Paketen mi der Seriennummer y++? Ich versuche gerade an den "Echtzeitdaten" herauszufinden, wo mein Header und wo der Body beginnt und versuche hier alle Eventualitäten mit einzubeziehen. Diese Eventualitäten beinhalten halt auch, das die Pakete nicht serialisiert eintreffen weil ich meine schon Pakete gesehen zu haben, wo die Segmentnummer kleiner ist als die vorherige und auch die Seriennummer des Pakets nicht in aufsteigender Reihenfolge eintreffen. Alles natürlich mit derselben Transport ID
Inzwischen bin ich ein gutes Stück weitergekommen und kann auch das VFD vom Originalradio über den ATMega ansteuern. Radio im FM Betrieb steuern ist kein Problem, nun wollte ich auf dem Display "STEREO" anzeigen wenn FM Stereo empfangen wird. Dafür frage ich den Keystone zyklisch via STREAM_GetStereo ab. Allerdings liefert diese Funktion immer 0 (Stereo) selbst wenn gar kein Sender empfangen wird. Hat jemand Erfahrung mit dieser Funktion? Versuche ich etwas unmögliches?
Deutschlandfunk sendet mit Joint Stereo. Mein Modul sendet für Deutschlandfunk auch Stereo, sobald ich die Antenne löse. Das scheint also normal zu sein. Wenn du STREAM_GetPlayStatus abfragst, ist der aber wenn kein Signal empfangen wird 2=TUNING.
Hallo Peer, Danke für die schnelle Antwort. Ich betreibe das Module momentan nur im FM-Modus (da ich z.Z. in Japan lebe und dort keine DAB augestrahlt wird). Immerhin wurde hier vor kurzem das FM-Band erweitert sonst gäbe es auf den üblichen FM-Frequenzen (78-108 MHz) auch nichts zu empfangen.. Zurück zum Keystone. Obwohl man die Umschaltung auf Stereo akustisch hört (zumindest bilde ich mir das ein) kommt immer "0" zurück. Allerdings ist der Empfang an meinem Schreibtisch grenzwertig und genügt nicht immer für Stereo. Gerade da hätte ich erwartet, dass Mono gemeldet wird. Darf ich fragen wie sich dein Modul im FM-Betrieb verhält?
.. sieht so aus als ob ich aufmerksamer hätte sein sollen. Habe die falsche Kommando-Sequenz aus dem Datenblatt abgeschrieben. Die Funktion "STREAM_GetStereoMODE" liefert natürlich immer 0 (Stereo).. :-( Jetzt funktioniert alles wie vorgesehen, der Status wechselt sogar fast gleichzeitig mit der Audio-Ausgabe (keine Verzögerung zwischen dem Signal und der Audio-Ausgabe).
Hier wird Mono ausgegeben, wenn ich bei einem FM-Sender die Antenne abziehe.
.. hab natürlich (clever wie ich war) alles < 3 als Stereo für die Anzeige interpretiert.. mea culpa.
Hallo, ich habe zum Umschaltlevel von Mono auf Stereo. In meinem Arduino Programm habe ich mit : Stream_Set_Stereo_Mode[6] = {0x01, 0x09, 0x01, 0x00, 0x01, 0x01}; das Modul auf Auto Stereo gesetzt und bekomme über : Stream_Get_Stereo[5] = {0x01, 0x0B, 0x01, 0x00, 0x00}; auch die Werte 0 bis 3 zurück. Also alles ok. Da bei mir fast nur Programme mit Signal Strength von 90 bis 100 hereinkommen, kann ich nicht erkennen, wann von Mono auf Stereo geschaltete wird. Gibt es eine Möglichkeit, das auszulesen / zu beeinflussen ? Hier mal ein Debug Bild von einem Sender mit sehr kleiner Empfangsstärke, man kann das Programm ( hr Info ) noch verstehen, rauscht aber stark ! Hat jemand einen Tip ? Rainer
Seit November 2013 gibt es in der Spec (Ver 3.2.1) ein STREAM_GetFMStereoThd und STREAM_SetFMStereoThd Kommando. Je nach Firmware könnte das auch der 8650 unterstützen. Mein Monkeyboard Chip unterstützt es noch nicht.
Hallo Peer, vielen Dank für die schnelle Antwort. Ich habe nur die Version 3.1.1, ist die neuere Version 3.2.1 als öffentlich zugängliches Dokument erhältlich ? Ich habe Module mit einer recht neuen Firmware direkt von KeyStone ( kein MonkeyBoard ). Diese Module unterstützen auch I2C parallel zu Serial ! Da könnten diese neuen Befehle wohl klappen. Gruß, Rainer
Ich habe die Spec gegen NDA von Keystone, kann sie dir also nicht weitergeben. Wie hast du es denn geschafft die Module zu bekommen? Ich wollte gern einige T3 Module kaufen, habe auf diese Anfrage dann aber nie eine Antwort bekommen. Wenn du die Module bekommen hast, wirst du sicher auch die aktuellste Spec bekommen. Würdest du mir ein I2C fähiges Modul verkaufen? Gruß Peer
Hallo, Danke für antwort. Ich möchte an das DAB modul 8650 durch Arduino. MFG Michael
Hallo, gibt es irgendwo C Code mit dem man das Modul direkt ansprechen kann? Ich habe einen AVR dran (I²c) und wollte nun das Modul in betrieb nehmen. Dabei wollte ich das Rad nicht noch mal neu Erfinden, gut ich würde mir gerne auch etliche Zeit sparen. Habe schon fleißig gesucht aber anscheinend benutzt ich immer die falschen Suchbegriffe oder es gibt wirklich nichts. Darum nochmal hat jemand C Code für das Modul? VG, Peter
Hallo, ich möchte mein Modul auch endlich in Betrieb nehmen. Und möchte jetzt ein kleines Breakoutboard erstellen, wo dann die Spannungsregler und Antennenbeschaltung mit drauf soll. würde vielleicht jemand seine Eagle-Lib zu dem Modul teilen? Ich würde dann im Gegenzug mein Layout vom meinem Breakout-Board auch hier veröffentlichen.. Schöne Grüße Jan
Hallo, ich hätte ebenfalls Interesse an so einem Keystone Modul... Hat vielleicht noch jemand eins abzugeben? Mfg
Ja, schreib mir mal eine PN. Habe damals direkt von Keystone Semiconductor Module mit einer neueren Firmware bezogen, diese Module unterstützen auch I2C Gruß, Rainer
Das klingt gut Rainer, aber ich weis gerade nicht wie ich ihnen eine PN schicken kann wenn sie als Gast angemeldet sind... Mfg
Guten Abend, ich könnte auch noch ein Modul ganz gut gebrauchen. Leider ist Monkeyboard bis Dezember ausverkauft und Keystone rückt unter 500 Stück auch keine raus. Wäre super wenn noch jemand 1-3 Stück hätte. Rainer? Borsty Bürste? Viele Grüße Kilian
Die Module sind wieder verfügbar und ich würde eine Sammelbestellung bei Monkeyboard der blanken Module tätigen. Wer Lust hat schreibt mich bitte persönlich an. 15€ das Stück plus Briefporto. Grüße Kilian
Die Module sind wieder verfügbar und ich würde eine Sammelbestellung bei Monkeyboard der blanken Module tätigen. Wer Lust hat schreibt mich bitte persönlich an. 15€ das Stück plus Briefporto. Einsendeschluss ist Freitag der 1.12.17 Grüße Kilian
Guten Tag Habe gerade kürzlich diesen Thread entdeckt, als ich beim Ausmisten mein DAB+ Monkeyboard gefunden habe (o; Hat jemand eine Idee, weshalb die Kommunikation aus dem Testprogramm unter Windows einwandfrei funktioniert, aber nicht, wenn man direkt mit einem Terminalprogramm, dass HEX Strings unterstützt, das DAB Modul keine Antwort sendet? Die gesendeten Daten sind dabei identisch, wenn ich TXD auf dem Modul mit einem Saleae LA sniffe...
Hi, hat noch jemand ein Modul vom Monkeyboard zu verkaufen, bzw sind noch Interessenten da das wir 5 Stück zusammen bringen? 1 evtl 2 würde ich nehmen also fehlen noch 3. Ist irgendwie doof das es die blos im 5er Pack gibt. Momentan gibts einzelne t1 in der Bucht für 19 $, die sind aber mit einer unbekannten Firmware. Meldet sich mit MPTEST 13 1 über die rs232 sonst nichts.
Ich muss mich hier heute Abend mal einlesen - klingt aber interessant... Ich melde mich dann heute Abend - wäre dann evtl. mit einem dabei... ;-)
Hallo, falls sich niemand meldet, ich habe noch 2 Module abzugeben, Ich habe diese April 2016 direkt von Keystone Semiconductor mit einer damals aktuellen Firmware bezogen, diese Module unterstützen neben dem UART auch I2C Gruß, Rainer
Also ich bin raus - klingt zwar alles ganz nett und so... Aber es klingt auch nach einem ganzen Berg Arbeit und Frust bis es läuft - da hab ich im Moment einfach keine Zeit zu... ;-)
Falls noch jemand solche Module hat, ich hätte durchaus interesse an einem.
Falls jemand Interesse an dem Keystone Module hat, ich hätte noch welche abzugeben (3x). Bei Interesse —> PM
Ich habe ebenfalls noch 5 Module und ein Monkey Evalboard übrig. Einfach anschreiben....
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.