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.

LAUNCHXL-F28379D: CAN_B on CPU2 Not Outputting

Part Number: LAUNCHXL-F28379D

Hello, 

I am trying to run CANB on CPU2 but am not seeing anything output on the pins. Referring to this forum post, I don't see what I am doing differently, https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/787160/ccs-tms320f28379d-can-bus-assigned-to-cpu2. 

I am using pin 12 Tx and pin 17 Rx. I have completed the following debugging steps but am starting to get to a point of not knowing what to try next. 

  1. Successfully toggled a GPIO withCPU2 proving that my code to give CPU2 control over GPIO is working.
  2. Verified that DEVCNGLOCK1 -> CPUSEL10 is set to 0 allowing CPU2 selection to occur (Verified within CPU1)
  3. Verified CPUSEL8 -> CAN_B set to CPU2 (Verified  within CPU1)
  4. Verified that PCLKCR10 -> CAN_B set to 1 to enable CAN_B clk before trying to write data to the registers (Verified  wCPU2)
  5. Can see CAN_B data registers fill with the correct data but never sent out on the pins

Any other thoughts on what I might look into or try next? 

Thanks

  • Hi Braden,

    What code are you trying to run?  I suggest to start first with the CAN loopback example since this continuously transmits data on the TX pin and not doing error checks.  In normal CAN transmission, there are several error checks that occur and for a transmitting node, if there are no ACKnowledgement signals received, the TX error counter increments and at a certain error count threshold level,  the module is put into a bus-off state for a time being.  In loopback mode, you can put a scope/CAN analyzer on the TX pin to  analyze the frame.

    The above debug steps you outlined does prove that CPU2 has control of CANB and i do not see any issues with it.

    Regards,

    Joseph

  • Hi Joseph, 

    Thanks for the reply. I have successfully tested my CAN code on CPU1 with CANB and can see messages outputting. When I put the exact same CAN code that was tested on CPU1 into CPU2 I don't see anything outputting. 

    I tried putting CANB into Loopback mode and did see a BUS_HEAVY status which I have not seen before. But probing the CAN pins on the dev board show they are both stuck high which looks the same as my other testing I have completed. I guess I will try importing one of the CPU1 CAN examples and see if I can get that running on CPU2 since I'm running out of ideas. 

    Thanks,

    Braden 

  • Hi Braden,

    Can you confirm that you have the correct bit rate set up?  Bus heavy may occur if bit rate setting is incorrect (no nodes are able to receive the frames due to not matching baudrate between the transmitter/receiver) and may also be an indication that the node is not connected to the CAN bus.

    Regards,

    Joseph