Hallo
Ich hab ein Problem mit dem CAN-Bus. Ich habe ein Beispielprogramm auf
dem Board MCBSTM32F400 das funktioniert. Auf meiner Hardware setze ich
den stm32f405rgt6 ein.
Die Init wird durchlaufen und die nötigen Register nach meinem Wissen
richtig gesetzt. Aber beim Starten des CAN1 bleibt er hängen.
1 | CAN_ERROR CAN_hw_start (uint32_t ctrl) {
|
2 | CAN_TypeDef *CANx = CAN_CTRL[ctrl-1];
|
3 |
|
4 | CANx->MCR &= ~(1 << 0); /* normal operating mode, reset INRQ */
|
5 | while (CANx->MSR & (1 << 0))
|
6 | {
|
7 | osDelay(50);
|
8 | }
|
9 | return CAN_OK;
|
10 | }
|
Aus diesem While kommt er nicht wieder raus. Dies bedeutet, dass er den
Initialization mode nicht abschliessen kann. Die CAN Hardware ist nicht
mit dem CAN Bus synchronisiert.
Den CAN Bus Treiber auf meiner Hardware habe ich schon einige Male
eingesetzt.
Hat jemand einen Tipp? Ich steh grad völlig an.
Vielen Dank und Gruss
MC Bu