Other Parts Discussed in Thread: HALCOGEN
Hello,
We am using TMS570LS470 Micro-controller.In that we are trying to communicate CAN communication with other development board.
The problem we are facing is
After successful transmission of by default initialized first byte can data when we trying to change the value from debugger the data could not be transmitted instead canTransmit function in can.c file always going in below function highlighted yellow color
how i can reset TXRQx register value for continuous transmission of data.
uint32 canTransmit(canBASE_t *node, uint32 messageBox, const uint8 * data)
{
uint32 i;
uint32 success = 0U;
uint32 regIndex = (messageBox - 1U) >> 5U;
uint32 bitIndex = 1U << ((messageBox - 1U) & 0x1FU);
/* USER CODE BEGIN (7) */
/* USER CODE END */
/** - Check for pending message:
* - pending message, return 0
* - no pending message, start new transmission
*/
if ((node->TXRQx[regIndex] & bitIndex) != 0U)
{
success = 0U;
}
else
{
/** - Wait until IF1 is ready for use */
/*SAFETYMCUSW 28 D MR:NA <APPROVED> "Potentially infinite loop found - Hardware Status check for execution sequence" */
while ((node->IF1STAT & 0x80U) ==0x80U)
{
} /* Wait */
/** - Configure IF1 for
* - Message direction - Write
* - Data Update
* - Start Transmission
*/
node->IF1CMD = 0x87U;
/** - Copy TX data into IF1 */
for (i = 0U; i < 8U; i++)
{
#if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
/*SAFETYMCUSW 45 D MR:21.1 <APPROVED> "Valid non NULL input parameters are only allowed in this driver" */
node->IF1DATx[i] = *data;
/*SAFETYMCUSW 45 D MR:21.1 <APPROVED> "Valid non NULL input parameters are only allowed in this driver" */
/*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
data++;
#else
/*SAFETYMCUSW 45 D MR:21.1 <APPROVED> "Valid non NULL input parameters are only allowed in this driver" */
node->IF1DATx[s_canByteOrder[i]] = *data;
/*SAFETYMCUSW 45 D MR:21.1 <APPROVED> "Valid non NULL input parameters are only allowed in this driver" */
/*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
data++;
#endif
}
/** - Copy TX data into message box */
/*SAFETYMCUSW 93 S MR: 6.1,6.2,10.1,10.2,10.3,10.4 <APPROVED> "LDRA Tool issue" */
node->IF1NO = (uint8) messageBox;
success = 1U;
}
/** @note The function canInit has to be called before this function can be used.\n
* The user is responsible to initialize the message box.
*/
/* USER CODE BEGIN (8) */
/* USER CODE END */
return success;
}
/****************************MAIN FUNCTION**********************/
volatile uint8 can_data[1]={0x02};
void main()
{
caninit();
for(;;)
canTransmit(canREG1, canMESSAGE_BOX1, &can_data[0]);
}
/**********************END of MAIN Code*********************/
Below is snapshot for caninit function setting
Thanks in advance..