NXP MPC5744P CAN Tx Missing Messages

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NXP MPC5744P CAN Tx Missing Messages

1,736 Views
C_Zuercher_APR
Contributor III

Hi,

I'm deploying the attached model (I know it's hideously messy) onto an MPC5744P, but in PCAN it's only able to pick up a single transmission of message 0x101. No other activity is recorded.

Any solutions/ideas would be greatly appreciated.

Thanks,

Crispin

Tags (3)
0 Kudos
Reply
3 Replies

1,717 Views
C_Zuercher_APR
Contributor III

Hi @mariuslucianand,

I've found the issue with message 0x105 not being transmitted; the Bus load peaked at 99% according to CANalyzer, so I changed the transmission time of message 0x003 from 2ms to 5ms and now message 0x105 is being transmitted.

The changes due to the Multiplex message aren't being picked up however, but I guess this'll be an issue to take up with The Mathworks?

Thanks,

Crispin

0 Kudos
Reply

1,717 Views
C_Zuercher_APR
Contributor III

Hi @mariuslucianand ,

Yes; I'm using 3.2.0.

Thank you for this; the messages 0x101, 0x102, 0x103 & 0x104 are now transmitted on the CAN Bus at the correct intervals.

However, message 0x105 isn't being transmitted at all. Also, when I change the contents of message 0x003 (it's a Multiplex CAN Message), the resultant signal changes aren't registered in the messages being transmitted by the DEVKIT.

Model & DBC File attached for reference.

Thanks,

Crispin

0 Kudos
Reply

1,725 Views
mariuslucianand
NXP Employee
NXP Employee

Hello @C_Zuercher_APR ,

First of all, which version of our toolbox are you using? Is it MPC57xx 3.2.0?

I will try to guide you through what I've seen in the generated code.

First, there is an issue with how Simulink generates the code. As you see in the below image, for all 5 Message Tx Subsystems, Simulink generates a single function in which it will send only the 0x101 message-Id.

mariuslucianand_0-1623769318785.png

To solve this, you have to right-click on every Message Tx subsystem, select Block Parameters (Subsystem), go to Code Generation, and for the Function packaging select Nonereusable function

mariuslucianand_1-1623769766361.png

This will generate a function for each send block with the right message Ids. 

Now, the second thing I see here is related to the FCAN_Receive block. This has to be called only once at the initialization and then retriggered every time in the interrupt to "rearm" the receiver. Now, basically you "arm" the receiver every 0.002s, in the step function. You can have a look inside the flexcan_slave_mpc574x example.

Also, make sure that if everything works, you have enough time to send all the 5 messages in the 0.002s.

Please give this a try and see if something has been changed.

Hope this helps,

Marius

 

0 Kudos
Reply