Ejemplo n.º 1
0
void Test_TestMaskFilter()
{
    int32_t i32id=0;
    STR_CANMSG_T tMsg;

    printf("Use Messge Object No.1 to send ID=0x700 ~0x70F\n");
    printf("Enter any key to send\n ");

    GetChar();
    while(1)
    {
    	/* Send a 11-bits message */
	    tMsg.FrameType= DATA_FRAME;
	    tMsg.IdType   = CAN_STD_ID;
	    tMsg.Id 	  = 0x700 + i32id;
	    tMsg.DLC	  = 0;

    	if(CAN_SetTxMsgObj(MSG(1),&tMsg) < 0)	 /* Call CAN_SetTxMsgObj() only Confiugre Msg RAM */
	    {
		    printf("Set Tx Msg Object failed\n");
		    return;
	    }
	    CAN_SetTxRqst(MSG(1));
        i32id++;
        if(i32id>=0x10)
            break;
        SYS_SysTickDelay(100000);
    }
    printf("Transfer Done\n");
}
Ejemplo n.º 2
0
void CAN_Com_LoopBack_IRQ(void)
{
  /* initialize the interrupt controller */
  VIC_Config(CAN_ITLine, VIC_IRQ, Priority_1);

  /* initialize the CAN at a standard bitrate, interrupts enabled */
  CAN_InitStructure.CAN_ConfigParameters=CAN_CR_IE;
  CAN_InitStructure.CAN_Bitrate=CAN_BITRATE_100K;
  CAN_Init(&CAN_InitStructure);

  /* switch into Loopback+Silent mode (self-test) */
  CAN_EnterTestMode(CAN_TESTR_LBACK | CAN_TESTR_SILENT);

  /* configure the message objects */
  CAN_InvalidateAllMsgObj();
  CAN_SetTxMsgObj(CAN_TX_MSGOBJ, CAN_EXT_ID);
  CAN_SetRxMsgObj(CAN_RX_MSGOBJ, CAN_EXT_ID, 0, CAN_LAST_EXT_ID, TRUE);

  /* enable global interrupt */
  VIC_ITCmd(CAN_ITLine, ENABLE);

  /* Send the pre-defined frame */
  CAN_SendMessage(CAN_TX_MSGOBJ, &TxCanMsg[2]);

  /* wait until end of transmission */
  CAN_WaitEndOfTx();

  /* reception and release are done in the interrupt handler */

  /* delay to add when the reception occurs */
  delay(0x7FF);

  /* Test Received Msg */
  if((RxCanMsg.IdType == CAN_EXT_ID)&&(RxCanMsg.Id == 0x12345678)&&(RxCanMsg.Dlc == 8)
    &&(RxCanMsg.Data[0]==0x10)&&(RxCanMsg.Data[1]==0x11)&&(RxCanMsg.Data[2]==0x12)&&(RxCanMsg.Data[3]==0x13)
    &&(RxCanMsg.Data[4]==0x14)&&(RxCanMsg.Data[5]==0x15)&&(RxCanMsg.Data[6]==0x16)&&(RxCanMsg.Data[7]==0x17)){
    /*Received Msg OK*/
    LED_ON(LD3);
  } else {
    /*Received Msg KO*/
    LED_ON(LD4);
  }


  /* switch back into Normal mode */
  CAN_LeaveTestMode();

  /* disable interrupts globally */
  VIC_ITCmd(CAN_ITLine, DISABLE);
}
Ejemplo n.º 3
0
void CAN_Com_LoopBack(void)
{
  /* initialize the CAN at a standard bitrate, interrupts disabled */
  CAN_InitStructure.CAN_ConfigParameters=0x0;
  CAN_InitStructure.CAN_Bitrate=CAN_BITRATE_1M;
  CAN_Init(&CAN_InitStructure);

  /* switch into Loopback+Silent mode (self-test) */
  CAN_EnterTestMode(CAN_TESTR_LBACK | CAN_TESTR_SILENT);

  /* configure the message objects */
  CAN_InvalidateAllMsgObj();
  CAN_SetTxMsgObj(CAN_TX_MSGOBJ, CAN_STD_ID);
  CAN_SetRxMsgObj(CAN_RX_MSGOBJ, CAN_STD_ID, 0, CAN_LAST_STD_ID, TRUE);

  /* Send the pre-defined answer */
  CAN_SendMessage(CAN_TX_MSGOBJ, &TxCanMsg[1]);

  /* wait until end of transmission */
  CAN_WaitEndOfTx();

  /* wait for reception of a data frame */
  while (!CAN_ReceiveMessage(CAN_RX_MSGOBJ, FALSE, &RxCanMsg))
  {
    /*Add Timer*/
  }


  /* Test Received Msg */
  if((RxCanMsg.IdType == CAN_STD_ID)&&(RxCanMsg.Id == 0x321)&&(RxCanMsg.Dlc == 4)
    &&(RxCanMsg.Data[0]==0xAA)&&(RxCanMsg.Data[1]==0x55)&&(RxCanMsg.Data[2]==0xAA)&&(RxCanMsg.Data[3]==0x55)){
    /*Received Msg OK*/
    LED_ON(LD2);
  } else {
    /*Received Msg KO*/
    LED_ON(LD4);
  }


  /* release the message objects */
  CAN_ReleaseTxMessage(CAN_TX_MSGOBJ);
  CAN_ReleaseRxMessage(CAN_RX_MSGOBJ);

  /* switch back into Normal mode */
  CAN_LeaveTestMode();

}
Ejemplo n.º 4
0
/*----------------------------------------------------------------------------*/
void Test_NormalMode_Tx()
{
    STR_CANMSG_T tMsg;

	/* Send a 11-bits message */
    tMsg.FrameType= DATA_FRAME;
    tMsg.IdType   = CAN_STD_ID;
    tMsg.Id       = 0x7FF;
    tMsg.DLC      = 2;
    tMsg.Data[0]  = 7;
    tMsg.Data[1]  = 0xFF;    

    if(CAN_SetTxMsgObj(MSG(0),&tMsg) < 0)     /* Call CAN_SetTxMsgObj() only Confiugre Msg RAM */
    {
        printf("Set Tx Msg Object failed\n");
        return;
    }
	CAN_SetTxRqst(MSG(0));                    /* Call CAN_SetTxRqst() requeset to send the Msg in the RAM */
    printf("MSG(0).Send STD_ID:0x7FF, Data[07,FF]done\n");

    if(CAN_SetTxMsgObj(MSG(1),&tMsg) < 0)    
    {
        printf("Set Tx Msg Object failed\n");
        return;
    }
	/* Send a 29-bits message */
    tMsg.FrameType= DATA_FRAME;
    tMsg.IdType   = CAN_EXT_ID;
    tMsg.Id       = 0x12345;
    tMsg.DLC      = 3;
    tMsg.Data[0]  = 1;
    tMsg.Data[1]  = 0x23;
    tMsg.Data[2]  = 0x45;        

    if(CAN_SetTxMsgObj(MSG(1),&tMsg) < 0)    
    {
        printf("Set Tx Msg Object failed\n");
        return;
    }
	CAN_SetTxRqst(MSG(1));              
    printf("MSG(1).Send EXT:0x12345 ,Data[01,23,45]done\n");  
 
	/* Send a data message */
    tMsg.FrameType= DATA_FRAME;
    tMsg.IdType   = CAN_EXT_ID;
    tMsg.Id       = 0x7FF01;
    tMsg.DLC      = 4;
    tMsg.Data[0]  = 0xA1;
    tMsg.Data[1]  = 0xB2;
    tMsg.Data[2]  = 0xC3;        
    tMsg.Data[3]  = 0xD4;        

    if(CAN_SetTxMsgObj(MSG(3),&tMsg) < 0)    
    {
        printf("Set Tx Msg Object failed\n");
        return;
    }
	CAN_SetTxRqst(MSG(3));                
    printf("MSG(3).Send EXT:0x7FF01 ,Data[A1,B2,C3,D4]done\n");  
	SYS_SysTickDelay(1000000); //Delay one second to wait INT
	printf("Trasmit Done!\nCheck the receive host received data\n");

}