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

  • Danke für den Einsatz.


    ich hab mir mal den neuen 103er Source kompiliert. Nach dem ich die Probleme die ich mir selbst gemacht habe gelöst habe kann ich den 103er wieder flashen. (Aber nur wenn ich wie immer nach dem Einstecken des USB/Seriell Kabels noch Reset drücke).


    Frage: Die LED die getoggelt werden soll, wird die zwischen B12 und Vcc geschaltet ? (So leuchtet diese, und durch einen Reset erlöscht sie)



    ed: Ich hab mal ein Oszi drangehängt. Aus dem TSOP kommen IR Signale an. Diese gehen auch nach A6. Nur die LED ist solange das Programm (vermutlich) läuft dauernd an. (Gegencheck: wenn ich Boot0 umstelle ist die LED aus)
    Den TSOP habe ich ohne Vorwiderstand+C einfach mal direkt zum Testen rangehängt... (Und laut Datenblatt soll der ab 2,7 V laufen, gemessen hab ich die zu erwarteten 3,3V)

  • Da der Source für F103 und F105 sich nur im USB HID unterscheiden, sollte alles, was nichts mit USB HID zu tun hat, laufen. Das wäre LED toggeln und Debug Ausgabe über UART an B10. Für Debug Ausgabe ist B10 Tx, und also muss Rx vom USB-Seriell an B10. Mit cat /dev/ttyUSB0 sollte man dann bei Tastendruck was sehen.
    Aber vielleicht übersehe ich was. Verkürze mal main:


    Wie herum die LED ist, sollte egal sein, soll ja nur toggeln. B12-LED-R-Masse oder B12-LED-R-3,3V.
    Nur mal vorsichtshalber, nach dem Flashen müssen beide Jumper wieder auf low und dann Reset.

  • Hab in den nächsten Wochen nur noch sporadisch Zeit. Der ST-Link und ein zweiter F103 sind unterwegs, es wird also weiter gehen, aber vermutlich langsamer. Außer jemand hilft ;)


    Eine lockere TODO Liste für weitere Ideen:
    erstmal den USB HID Teil für den F103 fertig machen
    das Ganze unter Linux kompilierbar machen
    die HID Descriptoren und Report IDs überarbeiten
    stm32IRalarm und stm32IRconfig für Windows
    Dokumentation
    Projektseite

  • Hi,


    mit dem kurzen Programm kann ich schonmal IR Signale am Debug Port sehen:

    Zitat

    martin@martin-VirtualBox:~/src/IR/bin-short-toggle$ sudo cat /dev/ttyUSB0
    �)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�k�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B+�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�k�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bkk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�Bk�Bkk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�Bkk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�k�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�Bk�)�i�Bk�Bk�B��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�B�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bkk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�k�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�B+��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�BBk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�Bk�)�k�Bk�Bk�Bk�)��Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)��)�k�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�B�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�BkBk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�)�)�Bk�Bk�Bk�BBk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B+�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�Bkd��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�Bk�B)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�k�Bk�Bk�Bk�Bk�B)�)�Bk�Bk�B+��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�i�Bk�)�i�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�B)�i�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�BkCBk�)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B+�)�k�Bk�Bk�Bk�)�)�Bk�Bk�Bk�B)�)�Bk�B)�i�Bk�)�i�Bk�)�i�Bk�Bk�Bk�B)�)�Bk�)�i�Bk�)�i�Bk�i�Bk�)�i�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�B)�i�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�Bk�B)�)�Bk�Bk�BkC


    Die LED bleibt aber hartnäckig an ((oder halt aus)). (Vorwiderstand dürfte belanglos sein hat so 2-300 Ohm)


    Hast Du noch ne Idee ?

  • Hi,
    keine Nullen und Einsen:
    es muss 8n1 konfiguriert sein, falls es mit 115200 nicht klappt, kannst du 57600 oder weniger versuchen.
    Nach dem Flashen sind 8e1 eingestellt, damit bekommst du statt Nullen und Einsen "Müll".
    Du kannst auch im Quelltext in irmp.c Zeile 689 einen kleineren Wert als 115200 probieren, z.B. 57600.
    LED toggelt nicht:
    Probier's mal damit ;)
    Gruß, Jörg

    Dateien

    • toggleLED.zip

      (77,12 kB, 70 Mal heruntergeladen, zuletzt: )
  • Meine STM32 Patche für IRMP sind mittlerweile alle in IRMP aufgenommen worden, so dass jetzt das Einbauen einer neuen IRMP Version nur minimalste Anpassungen erfordert :) .


    Anbei neue Versionen.

  • Übrigens, das Ganze läuft nicht nur auf F105 und hoffentlich bald F103.
    Die STM32F105 Firmware ist einfach anpassbar an STM32F107, STM32F2xx und STM32F4xx, da dieselbe USB Library genutzt wird.
    Die STM32F103 Firmware - wenn sie denn mal fertig ist - ist einfach anpassbar an STM32L1xx und STM32F3xx, da dieselbe USB Library genutzt wird.

  • Mit neuem F103 und USB-seriell-TTL von Martin (danke!) kann ich jetzt flashen, und die LED toggelt auf Tastendrücke, und (unter Windows mit Hterm) bei 115200, 8n1 bekomme ich auf Tastendrücke Nullen und Einsen.
    Es geht also tatsächlich wie erwartet.
    Er meldet sich sogar als HID Device an (unter Windows). Unter Linux wird er aber nicht enumeriert.
    Mit SimpleHIDWrite unter Windows toggelt sogar die LED auf Schreibeingaben.
    Ich habe dann das Eeprom über SimpleHIDWrite befüllt. Mit dem Flash Loader Demonstrator habe ich dann das Flash ausgelesen, und siehe da, die Konfiguration war drin. PC → STM32 geht also schon.
    Allerdings kommt auf Tastendrücke nichts bei SimpleHIDWrite an. STM32 → PC geht noch nicht.
    Es gibt also noch etwas zu tun. Aber besser als ich erwartet habe.


    Die beiden vorigen F103 lassen sich jetzt auch flashen. Es lag also doch an meinem alten USB2seriell.

  • Ich hab mir mal ein paar Notizen gemacht. (An einer Stelle die mir praktisch ist)
    http://wiki.easy-vdr.de/index.…SB-IRMP_STM32-Development



    Dabei ist schon der neueste Posteingang abgebildet:
    [IMG:http://wiki.easy-vdr.de/images/1/1c/Stm32-prog.jpg]


    Außerdem habe ich das grosse Board wieder da. Aber auch der Engländer aus dem Sherwood-Forrest (bei ebay)versendet derzeit wohl keine Original LC-Technologies Boards,
    Aber auch dieses lies sich korrekt flashen...
    [IMG:http://abload.de/thumb/stm22asop.jpg]

  • Auf meinen ST-Link warte ich noch, aus China dauert etwas länger ...


    Da ich in den nächsten 2 Wochen nicht mehr dazu komme, hier der aktuelle Stand.
    STM32 → PC geht noch nicht, sonst alles.

  • Die vermutliche Zuordnung der Pins von den ST-Links:


    SWIM - PB11
    (SW)DIO - PB14
    (SW)CLK - PB13
    TCK - PA14 (remapped)
    TMS - PA13 (remapped)


    Keiner hat einen Timer mit CH1, daher entfällt IR Senden, und keiner hat USART_Tx, daher entfällt loggen. Edit: Siehe Post 35.
    IR Empfangen, LED toggeln und Einschalten sollten gehen.
    Erstmal muss aber der USB HID fertig werden.

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von jrie ()

  • Die vermutliche Zuordnung der Pins von den ST-Links:
    (SW)DIO - PB14
    (SW)CLK - PB13
    TCK - PA14 (remapped)
    TMS - PA13 (remapped)



    Meine Sicht nach dem Messen ist diese (wobei das ganze extrem winizig war):
    SWIM - PB11
    DIO - PA13
    CLK - PA14
    NRST - PB6


    TMS PB14
    TCK PB13


    Testobjekt war das LC-Tech Board.
    [IMG:http://wiki.easy-vdr.de/images/1/1c/Stm32-prog.jpg]
    [IMG:http://abload.de/img/proggerxsu19.jpg]

  • Danke fürs messen!
    PB6 ist interessant, weil der TIM4_CH1 hat und USART1_TX, damit könnte man dann doch entweder IR senden oder loggen, wobei ersteres wohl interessanter ist.

  • Ich habe mal eine Aufsteckplatine designed:


    [IMG:https://raw.githubusercontent.…Small_ST-Link/V01-bot.jpg]
    [IMG:https://raw.githubusercontent.…all_ST-Link/Schematic.jpg]
    Quelle: https://github.com/ranseyer/ST…ee/master/1_Small_ST-Link


    Diese erste Entwurfs-Version hat noch keine korrekten Widerstandswerte, Die 10 Polige Buchsenleiste wird auf der anderen Platinenseite montiert. Also nicht so wie die gerenderten Grafiken vermuten lassen.
    -Die Platine ist 18x38mm und passt genau auf die LC-Tech Programmer Teil (so die Theorie).
    -Bauteile SMD oder bedrahtet möglich, deshalb sieht der Schaltplan etwas eigenartig aus...
    -Optokoppler optional: wer nicht per USB einschalten will/kann und gut aus mechanischen Gründen zum die beiden Platinen zu verbinden
    -es hat noch etwas Luft für Erweiterungen, aber Platzbedingt begrenzt...


    Geplante Änderungen;
    -Platine verlängern um auch den anderen (roten) Progger von JRJE siehe ob anbinden zu können. Wird somit beim LC-Tech Programmer einfach abgeschnitten...
    -und z.B. der Optokoppler muss verschoben werden damit er nicht mit dem Quarz des Proggers kollidiert.Dafür kann mann später mal den Optokoppler auf den STM32 (wieder lösbar)kleben.
    ed: und irgendwo an schlechter Stelle ne 2,5mm Buchse für die DVB-Karten IR Receiver dranhäkeln...


    Wenn fertig wird es diese für Interessierte günstig geben. Aber erst brauche ich noch Feedback von JRIE, und ein paar Überarbeitungen wegen der Mechanik und Belegung Pinheader...


    PS: Selbst das mechanische Durchdenken mit Hilfe von Ausdrucken ist Aufgrund der winzigen Größe schon ganz schön happig...

  • Ich habe jetzt doch die Schutzhülle geöffnet und an meinem ST-Link nach gemessen.
    Bei mir ist (in Klammern die Pin Nummer):
    SWIM - PB11(22) - PB8(45)
    NRST - PB6(42)
    (SW)D)IO - PB14(27)
    (SW)CLK - PB13(26) - PA5(15)
    TCK - PA14(37)
    TMS – PA13(34)
    Auch an den 4 Programmier-Kontakten auf meinem F105 sind PA13 und PA14.


    Martin, misst du bitte noch mal, um ganz sicher zu sein? Ich kann mir nicht wirklich vorstellen, dass das bei dir so anders sein soll, aber man weiß ja nie ...

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von jrie ()

  • Zur Anpassung an die ST-Links und Martins Platine ist ab jetzt für F103:
    SWIM - PB11 - PB8 – IR empfangen
    (SW)CLK - PB13 - PA5 - ToggleLED
    (SW)D)IO - PB14 – Einschalter
    NRST - PB6 – IR senden

  • F103 USB-HID: Ich nähere mich dem Ziel ;)
    Es kommen jetzt auch Daten vom STM32 zum PC.
    Da muss zwar noch viel angepasst werden, aber aus dem Gröbstem bin ich raus.
    War viel Arbeit.
    Da es im Moment noch sehr unfertig ist, gibt es die neue Version erst, wenn alles aufgeräumt und angepasst ist.

  • Der USB-HID für den STM32F103 ist fertig!
    Von der Konfigurationssoftware gibt es jetzt zwei Schienen, eine für den F103 und eine für den F105. Hoffentlich wird das eines Tages wieder zusammen gelegt.
    Das Wakeup über USB für den F103 funktioniert (noch) nicht, das hat für mich aber keine Priorität, da es nur von wenigen Boards unterstützt wird. Über den Motherboard Einschalter geht es.