Hello Alice,
first of all thanks for your reply and in fact there was not this line in the initialization code. However, I still cannot make it work. I got an ERR_PARAM_INDEX error in CAN1_Send function and the transmit buffer is the buffer 1.
...
BufferMask = (LDD_CAN_TBufferMask)(0x01UL << BufferIdx); /* Calculate bitmask of the requested message buffer */
if ((BufferMask & DeviceDataPrv->TxBufferMask) == 0U) { /* Is used buffer defined of BufferIdx for transmit? */
return ERR_PARAM_INDEX; /* If no then error */
}
...
Besides it may be useful to know that in the PE_ISR(CAN1_TxInterrupt) the condition below is never satisfied and it never enters the if statement:
...
TxBufferMask = (LDD_CAN_TBufferMask)(DeviceDataPrv->TxBuffersPendingMask & MSCAN_PDD_GetTxMessageBufferFlagMask(MSCAN_BASE_PTR)); /* Calculate Tx buffer complete interrupt mask */
if (TxBufferMask != 0U) {
MSCAN_PDD_DisableTxMessageBufferInterruptMask(MSCAN_BASE_PTR, TxBufferMask); /* Disable Tx empty interrupt */
DeviceDataPrv->TxBuffersPendingMask &= (LDD_CAN_TBufferMask)~(TxBufferMask); /* Clear used Tx buffer mask */
for (MBIndex=0x00U; MBIndex<DeviceDataPrv->BuffersNumber; MBIndex++) {
if ((TxBufferMask & BufferMask) != 0U) {
CAN1_OnFreeTxBuffer(DeviceDataPrv->UserData, DeviceDataPrv->HwToTxBuffersIdxPtr[MBIndex]); /* Invoke user event */
}
BufferMask = (LDD_CAN_TBufferMask)(BufferMask << 0x01U);
}
}
...
I am using KDS v3.2.0 and the MSCAN driver of Processor expert