Ich habe einen STM32F103, die ich verwende, um I2C-Verkehr zu schnüffeln, es meist funktioniert, aber verpasst ein Interrupt gelegentlich verursacht es die falschen Daten zu lesen. Ich habe gelesen, dass STM32 die Einstellung der Interrupt-Priorität unterstützt, aber ich kann keine Hinweise darauf finden, wie man das in PlatformIO mit dem Maple-Kern macht. (Ich muss den Maple-Kern verwenden, da er der einzige ist, der die USBComposite-Bibliothek unterstützt). Ich habe in Erwägung gezogen, einen weiteren Mikrocontroller nur für das Sniffing von I2C hinzuzufügen, aber das erscheint mir übertrieben, wenn der STM32 in der Lage sein sollte, dies selbst zu erledigen.
Moin, - hast Du Dir das Errata-Sheet angeguckt? Es sind einige I2C und Interrupt-relevante Eintraege. Natuerlich weiss ich nicht, ob das fuer Dich relevant ist. https://www.st.com/resource/en/errata_sheet/es0340-stm32f101xcde-stm32f103xcde-device-errata-stmicroelectronics.pdf Ist auch die Frage, welche Revision Du hast und ob Du einen stm32f103 von ST hast (es ist besser geworden, vor zwei Jahren war das eigentlich nur Kopien die auf dem Markt waren). Und beim stm32f103 funktioniert Clock-Stretching nicht so gut. Ob das relevant fuer Dich ist: kA
Natasha schrieb: > Ich habe gelesen, dass STM32 die Einstellung der Interrupt-Priorität unterstützt Der Teil ist von ARM vorgegeben, das sollte jeder können: - https://developer.arm.com/documentation/ihi0048/b/Interrupt-Handling-and-Prioritization?lang=en - https://developer.arm.com/documentation/100165/0201/Nested-Vectored-Interrupt-Controller?lang=en In der Doku von STM gibt es da auch noch ein Dutzend Seiten dazu, einfach nachlesen...
Wenn Interrupts mal global gesperrt werden oder Schreib-/Löschzugriffe im Flash statt finden, helfen die Prioritäten nicht weiter. Ohne Ursachenforschung ist das also nur Stochern im Nebel ... Wenn die Ursache klar ist, sollte man ggf. auch an Transfer per DMA denken. Das KANN für etwas Entspannung sorgen (falls es um größere Datenpakete geht).
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.