µTasker Forum
µTasker Forum => NXPTM M522XX, KINETIS and i.MX RT => Topic started by: tr111 on November 16, 2007, 07:37:52 AM
-
#define CAN_INTERFACE
case 100000: //100KHz
CANCTRL = (((10-1) << 24) | RJW_2 | EXTAL_CLK_SOURCE | PROPSEG_BIT_TIME8 | PHASE_BUF_SEG1_LEN8 | PHASE_BUF_SEG2_LEN8); // Initialise the CAN controller with the required speed and parameters
break;
QUEUE_HANDLE CAN_interface_ID = 0;
static void fnConfigCAN_BUS(void)
{
CANTABLE tCANParameters; // table for passing information to driver
tCANParameters.Task_to_wake = OWN_TASK; // wake us on buffer events
tCANParameters.Channel = 0; // first hardware interface
tCANParameters.ulSpeed = 100000; // 100K speed
tCANParameters.ulTxID = 0x80; // default ID of destination
tCANParameters.ulRxID = (CAN_EXTENDED_ID | 0x00000105); // our ID
tCANParameters.ulRxIDMask = CAN_EXTENDED_MASK;
// use all bits for compare
tCANParameters.usMode = 0; // use normal mode
tCANParameters.ucTxBuffers = 2; // assign two tx buffers for use
tCANParameters.ucRxBuffers = 3; // assign three rx buffers for use
CAN_interface_ID = fnOpen( TYPE_CAN, FOR_I_O, &tCANParameters );
}
CAN_interface_ID is OK,and CAN_interface_ID =0x09!
static void fnSENDCAN_BUS(void)
{
unsigned char ucTestMessage[] = {1,2,3,4,5,6,7}; // Test message
if (fnWrite(CAN_interface_ID, ucTestMessage, sizeof(ucTestMessage))
!= sizeof(ucTestMessage)) {
// Error. Eg. no transmission buffer free
fnDebugMsg("\n\r SENT ERROR\n\r");
}
}
but the fnSENDCAN_BUS always "SENT ERROR"!why???????
-
Hi
Do you have a receiving node available? In order to successfully transmit, the CAN bus needs an active receiver to also receive the message. See also:
http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&message.id=3355&query.id=110261#M3355
It is possible to set the loop back mode for testing so that frames are always sent (CAN_LOOPBACK).
Regards
Mark
-
thank you?I will try?