Gast
#5250744
Hallo Forum, ich versuche den internen CAN bootloader an einem STM32F105VC zu benutzen. Bitte keine Diskussion darüber, dass der interne BL zu unflexible etc. ist. Es gibt für mich einen guten Grund diesen als Fallback benutzen zu wollen, und sei es nur um einen eigenen BL zu installieren. Meine Frage ist nur, ob er bei jemandem überhaupt funktioniert? Ich finde dazu keine Informationen und auch kein PC Tool zum Testen. Der BL wird bei mir über die BOOT Pins aktiviert. Mit einem eigenen kleinen Tool kann ich den BL auch dazu bewegen mir mit einer Bestätigung zu antworten, dass seine Konfiguration und Clock Einstellung geklappt haben soll. Dies klappt allerdings mal besser mal schlechter, also nicht sehr zuverlässig. Der Controller läuft mit einem 25 MHz Quarz was laut AN3154 eine der erlaubten Frequenzen ist. Mit 8 MHz Quarz verhält es sich nicht besser. Aus der Appnote verstehe ich es so, dass sich der BL auf die ersten Nachrichten hin (0x79 DLC=1 0x00 bei 125kbps) mit Hilfe des internen Oszillators (wenn es keine BUS Fehler gib) die CLOCK Einstellungen berechnet und danach auf den externen HSE Clock umstellt. Meine eigentliche Firmware kann mit der selben Hardware ohne BUS Fehler über CAN kommunizieren. Beim BL bricht die Übertragung der FW immer an unterschiedlichen Stellen ab und es gibt zwischendrin auch viele BUS Fehler (Frame Errors, Bit Stuffing). So als wäre die Baudrate nicht gut eingestellt. Aber darauf habe ich ja keinen Einfluss. Wenn der Controller auf meine erste Nachricht mit "OK" antwortet, sollte alles eingestellt sein. Es sieht auch so aus, als ob der BL seine Bestätigung auf eine Nachricht sehr schnell und zum Teil zu früh schickt und dadurch was aus dem Takt kommt. Mich wundert, dass man zu dem Thema so gut wie nichts findet. Also entweder klappt es bei den meisten auf Anhieb besser als bei mir, oder niemand benutzt den internen CAN BL. Aber wenn er gar nicht funktionieren sollte, hätte man sicherlich davon etwas gelesen. Hat jemand erfolgreich mit dem internen CAN BL ein Update durchgeführt und kann mich evtl. auf die richtige Spur bringen? Die Appnote AN3154 ist auch nicht fehlerfrei, so steht z.B. auf S.10 der Rev 6 beim GET Kommando, dass die Nachrichtenlänge egal sei. "Command message: Std ID = 0x00, data length code (DLC) = ‘not important’." Es klappt aber nur mit Länge 1. Vielleicht gibt es ja noch mehr so Sachen...