Hi
basing on flexcan demo in sdk2.0,I change a little for the main function,that's:
in while() function,send some message directly in CAN0 channel.
the ECU is only connected to CANOE, first,run CANOE for trace measurement,
then stop the CANOE for a while,then restart CANOE, CANOE can't acquire CAN message sending from CAN0.
I think after diconnected, ECU becomes to single node ,and transciver disable the message sending,
how to keep the ECU transmitting in single node mode?
thank you
br
yu
Hi,
generally, if you have single node on the bus and it is transmitting a message then it is not acknowledged and a node is re-transmitting a message still. FlexCAN should enter error passive mode, transmit message still until it is ACKed again.
If not you should check FlexCAN ESR1, ECR register to know what state you have and what errors are detected.
BR, Petr
hi
hi
this is the register status for ECR and ESR1.and FlexCAN is in error passive mode.but after CANOE is restarted again, normally FlexCAN could get ACK and the message sending should be successfull,but in CANoe TRACE window,there is no message acquired,until the module reset(powerdown and power on again).
hi
for CAN transmiting issue in single node mode,I see the ACK is greater than 96 and then flexcan module goes into passive mode,now i enable the tx warning interrupt,and it could trigger the interrupt,in the ISR function,I try to clear the tx error counter,the scripts as belows:
if(((base->ESR1)&ACKErrMsk)!= 0)
{
FLEXCAN_EnterFreezeMode(base);
base->MCR = ((base->MCR & (~CAN_MCR_FRZ_MASK)) | CAN_MCR_FRZ(1));
base->MCR = ((base->MCR & (~CAN_MCR_HALT_MASK)) | CAN_MCR_HALT(1));
while (0 == (base->MCR & 0b1000000000000000000000000)); // ensure entering into freeze mode
base->ECR &= ~(0xFF);
base->MCR = ((base->MCR & (~CAN_MCR_FRZ_MASK)) | CAN_MCR_FRZ(0));
base->MCR = ((base->MCR & (~CAN_MCR_HALT_MASK)) | CAN_MCR_HALT(0));
FLEXCAN_ExitFreezeMode(base);}
FLEXCAN_ClearErrIntStatusFlag(base);
return;
but after programming the code,the error counter is not greater than 96 even in single node mode,
but it's strange that the message is not able to transmit to tester from controller,do you have any idea?
Thank you.
Best regards
Hi,
I quickly tried flexcan_mpc5748g example from SDK300 on DEVKIT-MPC5748G board connected to PCAN tool.
Upon button press the message is send and if PCAN is conencted I see message received within it. Once I disconnect PCAN and press board's button, message becomes transmitted still due to missing ACK. TXERROR counter is 0x80, module is in error passive state. Once I connect PCAN again, message is transmitted successfully and TXERROR counter decrease by 1.
So I see expected behavior as I wrote for first time.
If you clear error counter in freeze mode and error flag too and have still single node on the bus, the node becomes error passive again as message is still transmitted and not ACKed.
BR, Petr