STM32 Unterbrechung Priorität

OP #7657555
Lesenswert?

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.

Gast #7657560
Lesenswert?

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

(Firma: egal) #7657570
Lesenswert?

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:

In der Doku von STM gibt es da auch noch ein Dutzend Seiten dazu, einfach nachlesen...

#7657585
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren