This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388S: Can we use CAN bus to program 9 device at one time though CAN bootloader?

Part Number: TMS320F28388S


Tool/software:

HI Team,

My customer want to use CAN bus to program 9 board one time, I recommend them use C2000 GANG. But it will need a lot of JTAG wire. Can we use CAN bus to program 9 device at one time though CAN bootloader?

Do we have some guide, it is recommend customer to use CAN bus to program?

Best Regards,

Zane

  • HI TEAM,

    Is there any update on this? Thanks!

    Best Regards,

    Zane

  • There is picture in TRM, it means that CAN boot can let many CAN devices recieve flash kernel and program C2000 device? thanks!

  • Hi Zane,

    Yes this should be feasible. We currently have a guide on Flashing via CAN:

    CAN Flash Programming of C2000 Microcontrollers

    that can be used as a reference.

    Thanks and regards,

    Charles

  • Hi Charles,

    How to identify each C2000 device? Each device have the same BootROM which means MsgID is same. Assume all CAN node can recieve data, each node will ACK? it will cause some error on CAN bus?

    Best Regards,

    Zane

  • Hi Zane,

    Each C2000 device can be identified on the CAN network by its Node ID value. If the devices can all act as receivers and receive data on the network, it only takes one device to acknowledge the message as received, and the transmitter will accept this single acknowledgement.

    Providing reference for Controller Area Network application note.

    Looping in CAN owners for further input.

    Thanks and regards,

    Charles

  • Hi Zane,

    The frame would be received by all nodes and if the frame is valid with no errors, all the nodes that are successful in receiving the frame will attempt to send a dominant ACK bit.  It only takes one node to signal to the transmitting node that a frame has been successfully received by an ACK bit.  If no ACK is received or if there are errors with the CAN frame as a result of nodes sending back frame errors, the transmitter may resend that frame.  Need to consider this fact when broadcasting a frame(s) to multiple nodes in the bus.

    Regards,

    Joseph

  • HI Joseph,

    Thanks for your answer. Assume we have 8 C2000s need to update though CAN bus, if the number of 5 C2000 don't send ACK.   but there is a ACK in CAN bus send by 1-4 or 6-8 c2000 device. The host also think all device have received frame?

    Do we have some methods to ensure all device received the right frame?

    Best Regard,

    Zane

  • Hi Zane,

    Thant's correct.  Once the transmitting node receives an 'ACK', it will stop re transmitting the frame.  One way to do this is to implement message ID filtering such that the transmitting node will have to transmit 9 frames, one frame per node and the transmitted frame will include the message ID but the payload will be the same.  The receiving node will only accept (filter) the messages that are intended for it.  The transmitting node will only stop transmitting the frames with the same payload once all nodes have sent acknowledgement.  The drawback for this method is that the node/message IDs have to be predetermined by the transmitting node each time the units in the nodes will change.

    If you want this to be independent of the C2000 device and not rely on node or message ID, you can implement a frame/data size and counter as part of the payload.  Maybe the first frame sent by the transmitter would contain the total number of frames or bytes expected then the succeeding frames will contain the frame sequence along with the payload.  On the receiving nodes, the CAN reception routines can be modified to check all the frames are received based on the frame number and expected data. 

    Regards,

    Joseph

  • Hi Joseph,

    CAN boot loader is in ROM, it can't be modify. I remember it only receive Message ID =1 frame. So can we also use the way you mentioned?

    Best Regards,

    Zane

  • Hi Wei,

    That's correct but I think the check for total bytes and the current byte count is done on the receiving node so i believe customer may be able to try to program 9 nodes in parallel since byte checking is done locally by the receiving node.  Something that maybe you can recommend for the customer to try.

    Regards,

    Joseph