Test2
Default mainpagebasic-can-projectTest2
Description Source Call Graph
Start Line: 166
void Test2(void)
{
    CAN_ResetAllMailbox();

    TRACE_INFO("With Interrupt ");
    TRACE_INFO("CAN0 Mailboxes 1 & 2 transmitting to CAN1 Mailbox 15\n\r");

    // Init CAN1 Mailbox 15, reception
    CAN_ResetTransfer( &canTransfer2 );
    canTransfer2.can_number = 1;
    canTransfer2.mailbox_number = 15;
    canTransfer2.mode_reg = AT91C_CAN_MOT_RX;
    canTransfer2.acceptance_mask_reg = 0;
    canTransfer2.identifier = 0x0;
    canTransfer2.data_low_reg = 0x00000000;
    canTransfer2.data_high_reg = 0x00000000;
    canTransfer2.control_reg = 0x00000000;
    CAN_InitMailboxRegisters( &canTransfer2 );

    // Init CAN0 Mailbox 1, transmit
    CAN_ResetTransfer( &canTransfer1 );
    canTransfer1.can_number = 0;
    canTransfer1.mailbox_number = 1;
    canTransfer1.mode_reg = AT91C_CAN_MOT_TX | AT91C_CAN_PRIOR;
    canTransfer1.acceptance_mask_reg = 0x00000000;
    canTransfer1.identifier = AT91C_CAN_MIDvA & (0x09<<18);      // ID 9
    canTransfer1.data_low_reg = 0xAABBCCDD;
    canTransfer1.data_high_reg = 0xCAFEDECA;
    canTransfer1.control_reg = (AT91C_CAN_MDLC & (0x8<<16)); // Mailbox Data Length Code
    CAN_InitMailboxRegisters( &canTransfer1 );

    // Init CAN0 Mailbox 2, transmit
    canTransfer1.can_number = 0;
    canTransfer1.mailbox_number = 2;
    canTransfer1.mode_reg = AT91C_CAN_MOT_TX | (AT91C_CAN_PRIOR-(1<<16));
    canTransfer1.acceptance_mask_reg = 0x00000000;
    canTransfer1.identifier = AT91C_CAN_MIDvA & (0x0A<<18);      // ID 10
    canTransfer1.data_low_reg = 0x55667788;
    canTransfer1.data_high_reg = 0x99AABBCC;
    canTransfer1.control_reg = (AT91C_CAN_MDLC & (0x8<<16)); // Mailbox Data Length Code
    CAN_InitMailboxRegisters( &canTransfer1 );

    while( CAN_STATUS_SUCCESS !=  CAN_Read( &canTransfer2 ) ){}
    while( CAN_STATUS_SUCCESS !=  CAN_Write( &canTransfer1 ) ){}
    // wait answer
    while( CAN_IsInIdle(&canTransfer1) ) {}
    while( CAN_IsInIdle(&canTransfer2) ) {}

    TRACE_DEBUG("canTransfer2.data_low_reg 0x%X\n\r", canTransfer2.data_low_reg);
    TRACE_DEBUG("canTransfer2.data_high_reg 0x%X\n\r", canTransfer2.data_high_reg);
    if( (canTransfer2.data_low_reg == 0x55667788)
      &&(canTransfer2.data_high_reg == 0x99AABBCC) ) {
        TRACE_INFO("Test passed\n\r");
    }
    else {
        TRACE_INFO("Test ERROR\n\r");
    }
}