Hello everyone,
I made of the DeviceNet protocol stack on CAN HAL.
However, the CAN packet does lost with frame error in a ratio of one to 10000-100000.
This abnormal packet come about because of the collision of the packet.
It keeps transmitting though it was defeated at the arbitration.
Originally, it is necessary to send the packet again in this case.
But CAN HAL is not sent again in rare cases.
Other CAN device are sent again detecting the frame error.
The result was the same though Single-shot and Send-Confirmation had been used with CAN HAL V3.
// in CAN interrupt TLR_RESULT eRslt = TLR_S_OK;; TLR_UINT32 ulId; TLR_UINT32 uFill; SYSTIME_TIMESTAMP_T tCnfTm;if(ulIrq & MSK_CAN_XPEC2ARM_INTERRUPTS_CON)
{
uFill = 0;
eRslt = Can_GetConfirmationFillLevel(hDrvCan, &uFill);
if(eRslt != TLR_S_OK) goto leave;while(uFill > 0)
{
eRslt = Can_GetSendConfirmation(hDrvCan, &ulId, &tCnfTm);
if(eRslt != TLR_S_OK) goto leave;
if((tCnfTm.ulTimeS == 0)&&(tCnfTm.ulTimeNs == 0))
{
if(ulIrq & MSK_CAN_XPEC2ARM_INTERRUPTS_CON_TRANSMISSION_ABORT)
{
eRslt = CanIf_SendConf(ptRsc, CAN_IF_TX_ABORT, ulId, &tCnfTm); // abort (no use)
}
else
{
eRslt = CanIf_SendConf(ptRsc, CAN_IF_TX_LOST, ulId, &tCnfTm); // re-try request
}
}
if(eRslt != TLR_S_OK) goto leave;
--uFill;
}
}
Please teach measures.
Best regards
Dear AJ,
Thank you for answer.
I have already sent the waveform picture of the error frame and CAN log to the support section.
An abnormal frame to which two packets are synthesized is observed there.
Because CAN HAL should stop transmitting, but it keeps transmitting.
However, there is a problem that is bigger than it.
It is that the frame is not sent again though a frame that oneself sent and a different frame have been detected.
There is no time in my project any longer.
I would like to take measures by all possible means.
Best regard
Andreas Jacob
Hilscher Gesellschaft fuer Systemautomation mbH
Hi,
please try to trace the CAN send and recive line with a Logic Analyzer to verify that the frame is really not existing on the bus.
If this is true you should sent all your traces to Hilscher and ask for clarification.