#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?