Hi community,
I am trying to transmit CAN message using non-blocking method using MCAN_TransferSendNonBlocking(...) function.
For that I have taken reference from example project "mcan_interrupt_transfer" provided in SDK. But it is not working as expected. I've created a transfer handle using MCAN_TransferCreateHandle(...) , a callback function & a transmit buffer configuration. Everything looks very fine but it still doesn't work. Have a look at the code below. What else can be wrong? nxf46116 can you help me again?
/* All variables are created but not shown here */
/* Create MCAN handle structure and set call back function. */
MCAN_TransferCreateHandle(CAN0, &mcanHandle, mcan_callback, NULL);
/* TX buffer config. */
txBuffer.address = TX_BUFFER_OFS; // 0x20U
txBuffer.dedicatedSize = 1U;
txBuffer.fqSize = 0;
txBuffer.datafieldSize = kMCAN_8ByteDatafield;
MCAN_SetTxBufferConfig(CAN0, &txBuffer);
/* This part is in CAN transmit function */
{
TxHandle.frame = &TxFrame;
TxHandle.bufferIdx = 0;
MCAN_TransferSendNonBlocking(CAN0,&mcanHandle,&TxHandle);
free(tx_data);
while ( !txComplete ) //THIS IS WHERE PROGRAM GETTING STUCK although callback function is set properly
{ } // txComplete variable is always zero and never becoming 'true' so while becomes infinite loop
txComplete = false;
}
// MCAN Call Back function
static void mcan_callback(CAN_Type *base, mcan_handle_t *handle, status_t status, uint32_t result, void *userData)
{
switch (status)
{
case kStatus_MCAN_RxFifo0Idle:
rxComplete = true;
break;
case kStatus_MCAN_TxIdle:
txComplete = true;
break;
default:
break;
}
}
Note: Most of the code is from SDK only while variables are changed.
Hi Manikanta,
It's a pleasure to help you again. I have some questions about this.
Best Regards,
Alexis Andalon
Hi Alexis...
Can you provide transmission irq handler just like receive handler below?
Hi nxf46116, any progress on Case:00201633?
Hi Alexis...
Can you provide transmission irq handler just like receive handler below?
Additional info:
If you want any other information please let me know...