Hallo zusammen Ich bin schon sehr lange auf der Suche, warum der CAN1 auf einem STM3240G-EVAL nichts empfängt, bzw. der IRQ gar nie auslöst. Das Input-Signal auf dem Port habe ich definitiv. (Mit dem Oszi gemessen). Das Senden vom Board (TX) funktioniert ohne Probleme. Die KO Plots zeigen mit CH1 (gelb) das RX vom ST Prozessor, mit CH2 (blau) das TX vom ST Prozessor. Kann mir da jemand helfen? Vielen Dank
:
Bearbeitet durch User
>Ich bin schon sehr lange auf der Suche, warum der CAN1 auf einem >STM3240G-EVAL nichts empfängt, CAN1 beisst sich auf diesem Board mit LCD bzw. FSMC.
Hallo Aber TX geht, hast du eine Ahnung wo RX nicht geht? Weil LCD ist ausgeschaltet...
Sieht aus, als wuerde der schon was empfangen. Linkes Bild, blaue Linie hat etwa da einen kurzen 0-Puls, wo im CAN-Frame das ACK kommt. Entweder Stoerung, oder der uC hat tatsaechlich das CAN-Frame angeguckt, den CRC geprueft und CAN-konform geACKt (durch Rezessiv-Bit-Senden). Ich kenn STM32 nicht gut, aber ich wuerd an Deiner Stelle eher Richtung Interrupt-Enable-Problem ermitteln. Mal die Register stattdessen pollen.
Hallo Ist definitiv keine Störung sondern ein ACK. Gruss
:
Bearbeitet durch User
dummy schrieb: > CAN1 beisst sich auf diesem Board mit LCD bzw. FSMC. Ist das so? Hardwaremässig? Denn im Code ist dieser PIN nicht doppelt belegt was ich gesehen habe. Ich versuche jetzt mal CAN2 zu nutzen, eventuell (hoffentlich) funktioniert es damit. Gruss
Mit dem CAN2 geht es ebenfalls nicht, zusätzlich werden da nur 4 Byte verschickt anstatt 8. Ich drehe langsam durch, das kann doch einfach nicht wahr sein eine simple CAN Verbindung herzustellen kann doch wohl nicht so schwer sein?!? Hat jemand dazu eine Lösung oder schon ein BeispielCode, wo ich meinen Fehler finden kann? Danke
>Ist das so? Hardwaremässig? Denn im Code ist dieser PIN nicht doppelt >belegt was ich gesehen habe. PD0 ist D2 beim FSMC und CAN_RX. >Ich versuche jetzt mal CAN2 zu nutzen, eventuell (hoffentlich) >funktioniert es damit. CAN2 beisst sich zum Teil mit dem USB Geraffel;)
dummy schrieb: > PD0 ist D2 beim FSMC und CAN_RX. Danke, aber wo siehst Du das? Ich finde das im Code wirklich nicht. (Sorry für die dumme Frage)
Hier ist PD0 belegt, jedoch wird bei mir "SystemInit_ExtMemCtl" ar nie ausgeführt.
:
Bearbeitet durch User
>Danke, aber wo siehst Du das?
Im Schaltplan sieht man das. Ausserdem wird es bei der
Beschreibung der Jumper für CAN erwähnt.
Ja im Schaltplan sehe ich es, stimmt, aber im Code ist es deaktiviert und die Pegel am PIN habe ich ja, demzufolge sollte doch die CAN Schnittstelle trotzdem funktionieren oder liege ich da falsch? Die Pegel an PD0 sind ja ok, wie auf dem Oszi Bild zu sehen ist. (Gemessen an Jumper JP10 PIN2)
>Gemessen an Jumper JP10 PIN2
Und der steckt auf Position 2-3?
Wenn du allerdings die Alternate Function vom
CAN1 irgendwo wieder überschreibst kann das Signal
auch direkt am Controllerpin anliegen und trotzdem
passiert nichts.
dummy schrieb: > Und der steckt auf Position 2-3? ja er steckt auf 2-3. Wenn du allerdings die Alternate Function vom CAN1 irgendwo wieder überschreibst kann das Signal auch direkt am Controllerpin anliegen und trotzdem passiert nichts. Ok, werde ich mal versuche da etwas zu finden, aber Hardwaremässig ist somit ausgeschlossen soweit ich das verstehe? Vielen Dank!
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.