Hi, i'm confused about the CAN bus source code below,
//------------------------------------------------------------------------------
/// Test CAN0 Mailbox 0 transmitting to CAN1 Mailbox 0
//------------------------------------------------------------------------------
void Test1(void )
{
#if defined AT91C_BASE_CAN1_MB0
CAN_ResetAllMailbox();
trace_LOG( trace_INFO, "With Interrupt ");
trace_LOG( trace_INFO, "CAN0 Mailbox 0 transmitting to CAN1 Mailbox 0\n\r");
// Init CAN1 Mailbox 0, receive,
CAN_ResetTransfer( &canTransfer2 );
canTransfer2.can_number = 1;
canTransfer2.mailbox_number = 0;
canTransfer2.mode_reg = AT91C_CAN_MOT_RX;
canTransfer2.acceptance_mask_reg = AT91C_CAN_MIDvA | AT91C_CAN_MIDvB;
canTransfer2.identifier = AT91C_CAN_MIDvA & (0x07<<18);
canTransfer2.data_low_reg = 0x00000000;
canTransfer2.data_high_reg = 0x00000000;
canTransfer2.control_reg = 0x00000000;
CAN_InitMailboxRegisters( &canTransfer2 );
// Init CAN0 Mailbox 0, transmit
CAN_ResetTransfer( &canTransfer1 );
canTransfer1.can_number = 0;
canTransfer1.mailbox_number = 0;
canTransfer1.mode_reg = AT91C_CAN_MOT_TX | AT91C_CAN_PRIOR;
canTransfer1.acceptance_mask_reg = 0x00000000;
canTransfer1.identifier = AT91C_CAN_MIDvA & (0x07<<18);
canTransfer1.data_low_reg = 0x11223344;
canTransfer1.data_high_reg = 0x01234567;
canTransfer1.control_reg = (AT91C_CAN_MDLC & (0x8<<16));
CAN_InitMailboxRegisters( &canTransfer1 );
while( CAN_STATUS_SUCCESS != CAN_Read( &canTransfer2 ) ){}
while( CAN_STATUS_SUCCESS != CAN_Write( &canTransfer1 ) ){}
// wait answer
while( CAN_IsInIdle(&canTransfer2) ) {}
while( CAN_IsInIdle(&canTransfer1) ) {}
trace_LOG( trace_DEBUG, "Read data low 0x%X\n\r", canTransfer2.data_low_reg);
trace_LOG( trace_DEBUG, "Read data high 0x%X\n\r", canTransfer2.data_high_reg);
if( (canTransfer2.data_low_reg == 0x11223344)
&&(canTransfer2.data_high_reg == 0x01234567)
&&(canTransfer2.size ==

) {
trace_LOG( trace_INFO, "Test passed\n\r");
}
else {
trace_LOG( trace_INFO, "Test ERROR\n\r");
}
#endif
}
***********************************************
why does the CAN_Read() is executed before the CAN_Write()?
Thanks.
andershen