Nov 03, 2020
05:59 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nov 03, 2020
05:59 AM
Hello,
i want to send a remote frame with one xmc47 and receive it with another.
For that i have one Node, which shall send and receive normal data frames aswell.
I am not allowed to use Dave Apps (I don't know why).
What I can use is the XMClib.
I am able to send a remote frame, when i send a "receive MO".
But i am not able to receive it on my second xmc47.
My question is: How does the XMC MultiCan Module handle Remote Frames?
And how can i "answer" them?
Does the remote Frame trigger the Interrupt or will it be handled differently?
I would be very happy, if somebody can explain that to me and maybe give an example on how to do it.
With regards
Xenox
i want to send a remote frame with one xmc47 and receive it with another.
For that i have one Node, which shall send and receive normal data frames aswell.
I am not allowed to use Dave Apps (I don't know why).
What I can use is the XMClib.
I am able to send a remote frame, when i send a "receive MO".
But i am not able to receive it on my second xmc47.
My question is: How does the XMC MultiCan Module handle Remote Frames?
And how can i "answer" them?
Does the remote Frame trigger the Interrupt or will it be handled differently?
I would be very happy, if somebody can explain that to me and maybe give an example on how to do it.
With regards
Xenox
3 Replies
Nov 06, 2020
04:59 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nov 06, 2020
04:59 AM
Hello everybody,
i did find a solution myself and i will tell here, that in the future somebody can save some time 🙂
The MultiCan Module can handle in every Can Node every type of message. It is not necessary to have one Node for Remote Data and another for normal Data.
An incoming remote Frame does not trigger an interrupt. It will be responded automatically by the Can Node of the MultiCan module.
That means, data which shall be responded to the incoming remote frame must be stored in the matching data object.
If the remote frame is received, it will send the "Response".
To send a remote request, the program has to send a RX-Data-Object. That means an object from the xmc-lib, that is specified as an object which will be received.
To respond to a remote request, the exact opposite is the case. There has to be a TX-Data-Object. With a matching identifier.
Now the important part. The system have to know, that it is waiting for the object to be received. Standard for TX frames is, that they are not receivable.
To achieve this, you need to call: XMC_CAN_MO_SetStatus(Your Message Object, XMC_CAN_MO_SET_STATUS_RX_ENABLE);
This function sets the neccessary bit in the message object, that it can be received.
The function is provided by the xmc-lib in the xmc_can.h file.
Now it looks very simple, but i did not found a clear description of this behaviour. So i hope it helps in the future.
Have a great day. Happy Coding.
With regards
Xenox
i did find a solution myself and i will tell here, that in the future somebody can save some time 🙂
The MultiCan Module can handle in every Can Node every type of message. It is not necessary to have one Node for Remote Data and another for normal Data.
An incoming remote Frame does not trigger an interrupt. It will be responded automatically by the Can Node of the MultiCan module.
That means, data which shall be responded to the incoming remote frame must be stored in the matching data object.
If the remote frame is received, it will send the "Response".
To send a remote request, the program has to send a RX-Data-Object. That means an object from the xmc-lib, that is specified as an object which will be received.
To respond to a remote request, the exact opposite is the case. There has to be a TX-Data-Object. With a matching identifier.
Now the important part. The system have to know, that it is waiting for the object to be received. Standard for TX frames is, that they are not receivable.
To achieve this, you need to call: XMC_CAN_MO_SetStatus(Your Message Object, XMC_CAN_MO_SET_STATUS_RX_ENABLE);
This function sets the neccessary bit in the message object, that it can be received.
The function is provided by the xmc-lib in the xmc_can.h file.
Now it looks very simple, but i did not found a clear description of this behaviour. So i hope it helps in the future.
Have a great day. Happy Coding.
With regards
Xenox
Jan 22, 2021
10:49 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jan 22, 2021
10:49 AM
Hello Xenox,
I am facing a similar issue of yours. I also created a thread about it:
https://www.infineonforums.com/threads/12271-Questions-regarding-the-support-of-CAN-remote-frames-wi....
Could you please share some sample code of how you dealt with remote frames?
Thanks a lot,
Luciano.
I am facing a similar issue of yours. I also created a thread about it:
https://www.infineonforums.com/threads/12271-Questions-regarding-the-support-of-CAN-remote-frames-wi....
Could you please share some sample code of how you dealt with remote frames?
Thanks a lot,
Luciano.
Feb 17, 2021
03:10 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Feb 17, 2021
03:10 AM
Hi,
Question answered in original thread : https://www.infineonforums.com/threads/12271-Questions-regarding-the-support-of-CAN-remote-frames-wi...
Best Regards,
Vasanth
Question answered in original thread : https://www.infineonforums.com/threads/12271-Questions-regarding-the-support-of-CAN-remote-frames-wi...
Best Regards,
Vasanth