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

  • Ist das tatsächlich ein STM32F303CCT6?

    Meldet er sich auch so beim Bootloader flashen?

    Ich hatte das auf die Platine mit Bestückung bezogen, denn die ist identisch. Nein, meiner ist ein STM32F103C8T6.


  • Und laut Hersteller ein "BlackPill"


    Quote

    The highly affordable STM32 Black Pill Development boards allow anyone to try out new ideas and to quickly create prototypes with STM32F103 core ARM Cortex-M3.


    The function of STM32 Black Pill boards can easily be extended with a large number of modules and sensors.


    Quelle: STM32F103C8T6, STM32 ARM Arduino Mini System Dev.board with Arduino bootloader (Not soldered)


  • Und laut Hersteller ein "BlackPill"

    Manche Angaben der chinesischen Hersteller haben mit der Realität wenig zu tun.

    LED an PC13 => BluePill, siehe hier (unter "Differences").

  • Ich habe auf dieser Seite: https://wiki.cuvoodoo.info/doku.php?id=jtag den Stick gefunden, mit dem ich das Problem habe. Dort gelistet als "SWDIO/SWCLK swap". Auf dem Bild dort habe ich einen Unterschied zu meinen gesehen. Auf meinen fehlt ein SMD Widerstand bei R2.

    EDIT: Erneute Korrektur. Ob das richtig oder falsch ist, dass der SMD Widerstand bei der Version "MINI ST-Link V2E" fehlt, lässt sich aktuell nicht klären. Auf der Seite SWJ adapters / ST-Link v2 ist die Version nun auch zu sehen:


    MINI ST-Link V2E



    Ich habe mit King Kevin von der Wiki Seite dort Kontakt aufgenommen und nach seinen Erfahrungen mit der Version "MINI ST-Link V2E" gefragt. Er testet die Sticks grundsätzlich nur ganz rudimentär und kann zu dem SWIM Problem nichts sagen.


    Also bleibt aktuell zur Version "MINI ST-Link V2E" zu sagen: Schrott und Finger weg. Empfehlung derzeit für dieses Projekt und die KBD Variante: BluePill, BlackPill (cuiisw module Store), MapleMini (Grüne, Baite).


    The post was edited 1 time, last by obelix: Falsche Information. Weiterhin ist der Mini ST-Link V2E ohne SWIM ().

  • Sieht aus wie ein Maple Bootloader. Hast du den drauf gemacht, oder ist er Original?

    Wenn Original, probier doch die M-Maple-Firmware. was sagt lsusb -vvv?

    Wenn selber, nimm den passenden Bootloader.

    Ein weiterer Stick hat die Ohren angelegt. Jetzt wollte ich einen BluePill flashen und ich habe vergessen, wie das mit dem Bootloader nochmal war.... :wand :/:O. Ich bekomme die boot.blueDev.bin nicht geflasht. Kannst du mir auf die Sprünge helfen?


  • Hilft das?

    Ich hätte schwören können, dass ich das vor einem halben Jahr mit dem USB zu TTL Konverter gemacht habe.


  • Hilft das?

    Nicht wirklich.


    Code
    1. st-flash --reset write boot.blueDev.bin 0x8000000
    2. st-flash 1.5.1-30-g84f63d2
    3. 2019-10-13T20:34:19 INFO usb.c: -- exit_dfu_mode
    4. 2019-10-13T20:34:20 INFO common.c: Loading device parameters....
    5. 2019-10-13T20:34:20 INFO common.c: Device connected is: F1 Medium-density device, id 0x20036410
    6. 2019-10-13T20:34:20 INFO common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x10000 bytes (64 KiB) in pages of 1024 bytes
    7. open(boot.blueDev.bin) == -1
    8. 2019-10-13T20:34:20 ERROR common.c: map_file() == -1
    9. stlink_fwrite_flash() == -1

    bzw.

    Code
    1. st-flash --reset write boot.blueDev.bin 0x8000000
    2. st-flash 1.5.1-30-g84f63d2
    3. 2019-10-13T20:34:50 INFO usb.c: -- exit_dfu_mode
    4. 2019-10-13T20:34:51 INFO common.c: Loading device parameters....
    5. 2019-10-13T20:34:51 WARN common.c: Invalid flash type, please check device declaration
    6. Unknown memory region


  • Gib ihm mal den Pfad zum Bootloader mit, also z.B. st-flash --reset write /Pfad/boot.blueDev.bin 0x8000000

    Ich habe immer ohne Angabe des Pfades geflasht. Ich befinde mich mit dem Terminal ja in dem Verzeichnis wo die Dateien liegen.... Ich nehme das jetzt mal so hin. Mit .... ./boot.blueDev.bin ..... hat es jedenfalls geklappt.


    Danke. :]


  • Eine Frage an die Elektronik Fachleute:

    Ich will Optokoppler PC817 einsetzen. Anode an 3,3V, Kathode wird über einen Widerstand vom uC heruntergezogen auf (nahe) Masse. Emitter an Motherboard-Power-Minus und Collector an Motherboard-Power-Plus.

    Die Schaltung auf dem Motherboard ist unbekannt. Wie groß sollte der Widerstand optimalerweise sein?

    Martin hat 220 Ohm genommen: https://github.com/ranseyer/ST…all_ST-Link/Schematic.png

    Es könnte vermutlich sein, das die Masse nicht das Bezugspotential für den Schalter bildet.


    Vor etlichen Jahren hatte ich bei einigen Boards das auch mit meinen IR-Einschaltern festgestellt. Dort hatten beide Pins von Power-On des MB keinen Massebezug. Seitdem baue ich nur noch Optokoppler ein (mit ca. 200 - 300 Ohm auf CE Strecke bei On). Das hat bis jetzt dann überall funktioniert.


    die 2x 200 Ohm könntest Du auch einsparen, indem Du den Flussstrom auf der Sendeseite durch höheren Vorwiderstand reduzierst. Dann wird die CE Strecke entsprechend hochohmiger. Idealerweise sollte sie aber 0 Ohm einem Schalter entsprechen.

    Wie sieht denn deine Schaltung aus?

  • für meine Sensortasten habe ich einen LTV357 genommen --> http://www.fdm-ware.de/Taste/index.html


    der LTV357 ähnelt sich in den Werten mit Deinem PC817 Diodenflussspannung 1,4 Volt und typ. 20mA Flussstrom.


    bei 5 Volt habe ich 150 Ohm genommen.


    5 Volt - 1,4 Volt = 3,6 Volt


    3,6 Volt / 150 Ohm = 0,024A also 24 mA


    bei 3,3 V wären es bsw:


    3,3 Volt - 1,4 Volt = 1,9 Volt


    1,9 Volt * 0,02A = 95 Ohm


    also für 3,3 Volt und 20mA Flussstrom rund 100 Ohm


    beim Raspi VDR mit 3,3 Volt sind es dann auch 100 Ohm --> http://www.fdm-ware.de/Raspi-VDR/index.html

  • Danke für die Erklärung :)

    Dann nehme ich auch 100 Ohm.

    Viel weniger geht eh nicht, da der uC nur 25mA verkraftet.


    Martins 220 Ohm haben auch funktioniert, aber mit 100 Ohm hat man mehr Reserve, falls das Motherboard mehr Strom braucht zum Einschalten (normalerweise sind das nur wenige mA, aber man weiß ja nie ...).

  • Meine Rechnung wäre so: Die 3,3V können auch mal ein bisschen mehr sein, sagen wir 5% mehr. Die typische Flußspannung ist 1,2V. Maximal zulässig sind 25mA.

    ((3,3*1,05)V-1,2V)/25mA = 2,265V/25mA = 91 Ohm. Da ist man mit 100 Ohm auf der sicheren Seite.

  • ja, genau genommen müsste man auch noch den Wert vom Collector Widerstand des Ausgangstransistors vom STM32 mit berücksichtigen. Wenn man lastlos am STM32 mist, wird der Pegel nahezu null sein, jedoch mit zunehmenden Laststrom ansteigen. Wenn der hier eine Rolle spielt und man ans Limit möchte, kann man ja einfach mal den durch den OK fließenden On-Strom messen und dann bsw. durch Parallelschaltung vom bsw. 1KΩ die 100Ω auf 91Ω senken. Die Widerstände an sich haben ja auch je nach Toleranz (E12=10%) schon mal solche Werte.

  • Ich habe jetzt auch mal so einen Klon-Stick untersucht (#930 rosa, #908).

    Der läßt sich mit STM32 ST-Link Utility, -> Target, -> Program&Verify tadellos flashen, meldet sich auch am USB korrekt, erkennt aber kein IR.


    SWIM ist bei meinem über 100 Ohm mit PB8 verbunden, aber nicht auch mit PB11, wie es eigentlich sein müßte. Deswegen geht er nicht. China Mist ... :(

  • Hi Jörg

    Da ich auch noch so einen Stick habe lässt sich da noch etwas retten.

    So das er läuft ... ( Lötbrücke etc. )

    MfG emma53

    Test_VDR: Digitainer 1 Gehäuse - AsRock N68C GS FX Board- Athlon II AM3+ X2 270 CPU - EVGA GT730 PCI-e HDMI LP passiv - DVBSky S2 952 Dual SAT - 1000GB W.D. Green HDD - LG GH22N30 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 - EasyVDR 3.5.02 stable - Softhddevice Frontend - Kodi 17.6
    Clients: Hauppauge Media MVP Scart - VIP 1903Box - VIP 1910Box - EasyStream 0.6-18 fuer Windows - Raspberry PI B+ mit OpenElec 5.08 Kodi Helix 14.2 und Tsop31238 Lirc mit Conrad Promo8 FB on Code VCR 0104 - Raspi3 m.OpenElec 7.01 und Kodi 16.1

  • Ich habe jetzt auch mal so einen Klon-Stick untersucht (#930 rosa, #908).

    Der läßt sich mit STM32 ST-Link Utility, -> Target, -> Program&Verify tadellos flashen, meldet sich auch am USB korrekt, erkennt aber kein IR.


    SWIM ist bei meinem über 100 Ohm mit PB8 verbunden, aber nicht auch mit PB11, wie es eigentlich sein müßte. Deswegen geht er nicht. China Mist ... :(

    Hi, ja das ist genau das Problem. Ich hatte anfangs vermutet, dass da ein SMD Widerstand fehlt aber es hat sich herausgestellt, dass dem nicht so ist.


  • Wer löten will: Fädeldraht von PB11 nach PB8, oder vom PB11 zum R17.

    Dann hat man volle Funktionalität.


    Falls es mit kleinem Aufwand geht, werde ich mal versuchen, die Firmware so anzupassen, dass er auf RST (statt auf SWIM) IR annimmt. Dann kann man nicht IR senden (aber wer macht das schon).


    Edit: Geht, und ist schon im git :)