AnsweredAssumed Answered

Receiving Can Messages. 70% of network traffic missing

Question asked by honeycutt.matt on Jan 28, 2014
Latest reply on Feb 5, 2014 by Jack Peacock
Hi,

I'm using a STM32F407VGT mcu. Also with the latest DSP lib pack from ST.

The network has 2 nodes, and I'm attempting to capture the traffic between the nodes. 
500kbps
75% SP. 
30% bus load.

One node queries the other for some data, the responding node sends 145 CAN Messages over the network. (I am using a 3rd party tool to capture the traffic)

My following code only picks up 31 of those messages, and its sporadic. It does always catch the first Message correctly. (Then it endlessly loops)

Here is my code, I call this code right after a query is made to a node. 

Is this the right way to approach this situation? All feedback welcome :)

CanRxMsg rxMessage;
    CanRxMsg rxMessageArray[144];
    int loopCount = 0;
    int receiveCount = 144;
     
    while (loopCount < receiveCount)
    {
        if (CAN_MessagePending(CANx, CAN_FIFO0) > 0)
        {          
            //Receive the Message
            CAN_Receive(CANx, CAN_FIFO0, &rxMessage);
             
            rxMessageArray[loopCount] = rxMessage;
                        loopCount++;
        }
         
    }

Outcomes