IRMP auf STM32 - ein USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer

  • Hi.

    Die Sticks sind gestern gekommen :) Hier das Bild:




    Ich würde dein Angebot mit der Linux Flash-Anleitung gerne annehmen und auch den Bootloader mit flashen ;).


    Danke und Gruß


    Obelix



  • Das ist ein Layout das ich bisher noch nicht gesehen habe. Meine Sticks mit zwei LEDs haben die Programmier-Pins anders belegt.


    Interessant sind die 4 Punkte nahe des USB-Steckers (im Foto unten waagerecht angeordnet). Bei denen müssen wir die Belegung rausfinden.


    Auf dem Foto ganz links dürfte 5V sein (geht an +5V vom USB). Der danaben ist erstmal unbekannt. Eventuell SWDIO. Der dritte ist mit sehr großer Wahrscheinlichkeit SWCLK. Beim ganz rechten wäre zu klären ob das GND ist. Kannst du das mal verfolgen ob der mit dem mit GND beschrifteten Stift verbunden ist? Wenn das GND ist, dann dürfte SWDIO und SWCLK stimmen und selbst wenn nicht kann man durch Vertauschen der beiden erstmal nix kaputt machen.


    Kannst du nochmal ein Foto in höherer Auflösung reinstellen? Ich würde mir das, wenn wir die Belegung rausfinden, gerne mal bei mir ablegen. Am besten senkrecht von oben.

  • Hier ein besseres Bild:


    EDIT: Ich habe noch was gefunden: Popular cheap ST-Link v2 clone from China


    Ein paar Bilder von dort (sind ohne Blitz und deshalb besser):





    Noch ein Zitat von der verlinkten Seite:

    "STM32F101CBT6 is used instead of STM32F103CBT6 that may be found on "regular" ST-Link v2. Fun fact: STM32F101CBT6 does not officially has USB device.

    See also: https://github.com/blacksphere/blackmagic/issues/62"



    Einmal editiert, zuletzt von obelix () aus folgendem Grund: Link und weitere Bilder eingefügt.

  • Danke für das Bild. Messe Mal den Durchgang des rechten der 4 unten links zum GND Pin (zwischen den LEDS).

    Ja, positiv.



  • Ich habe mal die mit großer Wahrscheinlichkeit stimmenden Belegung in eines der Fotos eingezeichnet. Siehe Anhang.

    Die äußeren Pins interessieren uns nicht (5V und GND).


    Erster Schritt wäre, dass du dir eine zweipolige Stiftleiste nimmst und die kürzere Seite so zusammenbiegst, dass du damit sicher die zwei inneren Pins kontaktieren kannst.

    Diese Stiftleiste dann auf eine der mit den Sticks kommende Steckbrücke aufstecken.


    An dem Stick, der dein "Programmiergerät" sein wird (und folglich nicht modifiziert wird) steckst du nun die Steckbrücke so auf, dass die Leitungen mit der aufgesteckten Stiftleiste auf den mit SWCLK und SWDIO beschrifteten Pins angeschlossen sind. Die zwei übrigen kommen auf "GND" und "3.3V".


    Am zu modifizierenden Stick steckst du an der werksseitig vorhandenen Stiftleiste nur die Stecker auf, die für die Spannungsversorgung sind (GND und 3.3V). Die zwei Programmierleitungen, auf denen die vorgebogene Stiftleiste steckt, werden später auf die beiden inneren Pins nahe des USB-Steckers gedrückt während die Programmierbefehle ausgeführt werden.


    Auf dem Linux-System brauchst du drei Programme openocd, stlink und dfu-util. Bei Arch wären das:

    https://aur.archlinux.org/packages/openocd/

    https://www.archlinux.org/packages/community/x86_64/stlink/

    https://www.archlinux.org/pack…ommunity/x86_64/dfu-util/

    Sollte aber für alle Distributionen zu bekommen sein.


    Alle folgenden Befehle am besten als root ausführen.


    Den Programmier-Stick nun an USB anschließen.


    Auf der Konsole folgenden Befehl vorbereiten:

    Code
    $ openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown"


    Die zwei Programmier-Pins richtigrum auf den Ziel-Stick drücken und den Befehl absetzen. Nun sollte auf der Konsole quittiert werden, dass der Mikrocontroller entsperrt wurde. Eventuelles Blinken auf dem Ziel-Stick hört an der Stelle auf.


    Zeit den Bootloader runterzuladen:

    https://github.com/j1rie/maple…ies/boot.Red.bin?raw=true


    Diese "boot.Red.bin" sollte im aktuellen Verzeichnis bereitliegen. Nun folgenden Befehl vorbereiten:

    Code
    $ st-flash --reset write boot.Red.bin 0x8000000


    Wieder Pins auf den Stick drücken und Befehl absetzen.


    Wenn es bis hierhin keine Fehler gegeben hat, ist der Bootloader drin und der Stick kann wieder zusammengebaut werden.


    Zeit zum ersten Mal die Firmware zu übertragen. Die passende Firmware sollte diese sein:

    https://github.com/j1rie/IRMP_…d_BL_SC_jrie.bin?raw=true


    Der Befehl zum Flashen ist:

    Code
    $ dfu-util -d 1eaf:0003 -a 1 -D 2018-01-05_14-37_Red_BL_SC_jrie.bin


    Den mit Bootloader geflashten Stick in den USB-Port stecken und kurz darauf obigen Befehl absetzen.


    Wenn bis hierher alles geklappt hat ist dein IR-Empfänger vorbereitet. Was dann noch fehlt ist Konfiguration auf deinem HTPC und natürlich ein passender "Kabelbaum" zum Anschluss von TSOP und Power-Button.

  • Erstmal vielen Dank für die Anleitung :respekt. Ich mach mich gleich mal ran. Eine Frage noch zum Widerstand. Da steht nicht ob 1/8 oder 1/4. Welchen habt ihr den verbaut?



  • hi, ich bekomme Fehler:


    Die LED hört zwar auf zu blinken aber wenn ich weiter mache, kommt das:




  • Hier noch die dmesg Ausgabe nach Anstecken des Sticks:


    Code
    [ 1726.189902] usb 3-13.4: Product: STM32 STLink
    [ 1726.189903] usb 3-13.4: Manufacturer: STMicroelectronics
    [ 1726.189903] usb 3-13.4: SerialNumber: HÿpH\xffffffc2\xffffff84S7    \xffffffc2\xffffff87
    [ 1908.640738] usb 3-13.4: USB disconnect, device number 12

    SerialNumber sieht schon seltsam aus. Das war schon vor dem flashen so.



  • Ich vermut es geht nicht mit openocd 0.9.



  • Ich vermut es geht nicht mit openocd 0.9.

    Mit 0.10.x geht es auch nicht.




  • Ich bin jetzt erstmal ein paar Tage nicht an meinem PC aber ich würde mich erstmal um diese Warnung kümmern:


    Zitat

    WARNING: target/stm32f1x_stlink.cfg is deprecated, please switch to target/stm32f1x.cfg


    Tausche das mal im Befehl aus und poste wieder die Ausgabe. Wenn wir die Lösung finden, dann tausche ich das bei Gelegenheit auch auf der Wiki-Seite aus, bzw. hänge dort beide Befehle an mit Hinweis auf die neue Version.

  • Ich bin jetzt erstmal ein paar Tage nicht an meinem PC aber ich würde mich erstmal um diese Warnung kümmern:



    Tausche das mal im Befehl aus und poste wieder die Ausgabe. Wenn wir die Lösung finden, dann tausche ich das bei Gelegenheit auch auf der Wiki-Seite aus, bzw. hänge dort beide Befehle an mit Hinweis auf die neue Version.



  • Ausgabe von Version 0.10.x:



  • Kein Unterschied.

    Wenn du alle "-c" weglässt, dann sollte openocd auf einer Art "Konsole" starten. Dort könntest du die Befehle der Reihe nach manuell eingeben, sofern er überhaupt soweit startet. Bei welchem Befehl knallt es dann?

  • Falls ein Windows PC zur Verfügung steht, wäre sonst auch das Flashen mit dem STM32 ST-LINK Utility möglich: https://www.mikrocontroller.ne…ung#Flashen_.28Windows.29

  • Kein Unterschied.

    Wenn du alle "-c" weglässt, dann sollte openocd auf einer Art "Konsole" starten. Dort könntest du die Befehle der Reihe nach manuell eingeben, sofern er überhaupt soweit startet. Bei welchem Befehl knallt es dann?

    Ich glaube , ich löte mir was an das Teil dran. Ich glaube das Problem ist mit den Stiften, oder:



    Falls ein Windows PC zur Verfügung steht, wäre sonst auch das Flashen mit dem STM32 ST-LINK Utility möglich: https://www.mikrocontroller.ne…ung#Flashen_.28Windows.29

    Kein Windows auf echter Hardware vorhanden und mit Virtualbox will ich da nix machen.



  • Kannst du versuchen. Im Netz hatte ich auch verschiedene Meldungen, dass es an zu wenig Spannung liegen kann. Um das auszuschließen kannst du mal statt die 3,3V zu verbinden die 5V verbinden. Damit würde sich der "Ziel-Stick" seine 3,3V selber herstellen mit seinem eigenen Spannungswandler.


    Edit: Nur nochmal zur Sicherheit, dass sich niemand Sticks zerstört: Natürlich an beiden Sticks die 5V-Pins verbinden!

  • Kannst du versuchen. Im Netz hatte ich auch verschiedene Meldungen, dass es an zu wenig Spannung liegen kann. Um das auszuschließen kannst du mal statt die 3,3V zu verbinden die 5V verbinden. Damit würde sich der "Ziel-Stick" seine 3,3V selber herstellen mit seinem eigenen Spannungswandler.EDIT

    EDIT: OK, beide auf 5V



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!