The problem of a CAN data transmitting order

02 Nov 2012

Hi,
I am checking CAN transmittion.
It seems that there is a problem in transmitting order of messages.
mbed revision 43.
Regards,
suzuki

int main()
{
    can1.frequency( 500000 );
    char data[ 8 ] = { 0 };
    //  This case order miss match
    for ( char i = 1; i <= 8; i++ ) {
        data[ 0 ] = i;
        while ( !can1.write( CANMessage( (int)0x0100, data, i ) ) );
    }
    wait( 1 );
    //  This case work
    for ( char i = 1; i <= 8; i++ ) {
        data[ 0 ] = i;
        can1.write( CANMessage( (int)0x0200, data, i ) );
        wait_us( 300 );
    }
}

Received data

Quote:

t100 _1_01 : 4030475
t100 _4_04000000 : 4030650 << miss
t100 _5_0500000000 : 4030846 << miss
t100 _6_060000000000 : 4031058 << miss
t100 _7_07000000000000 : 4031288 << miss
t100 _8_0800000000000000 : 4031544 << miss
t100 _2_0200 : 4031678 << miss
t100 _3_030000 : 4031833 << miss

t200 _1_01 : 5031421
t200 _2_0200 : 5031743
t200 _3_030000 : 5032067
t200 _4_04000000 : 5032392
t200 _5_0500000000 : 5032714
t200 _6_060000000000 : 5033038
t200 _7_07000000000000 : 5033362
t200 _8_0800000000000000 : 5033686

27 Feb 2013

Is this bug uncorrectable?