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.

TCAN4550EVM: CANSLNT Error Flag is Set, Not using Wake or Sleep Mode, RX/TX Pkts OK

Part Number: TCAN4550EVM
Other Parts Discussed in Thread: TCAN4550, TCAN4550-Q1

Hello,

I have an FPGA board connected to the TCAN4550 EVM. The FPGA controls and talks to the TCAN directly w/o a CPU. I've used the TCAN software example and wrote the HDL based off of it.

Everything works from the RX and TX prospective. I can receive pkts into the the FPGA's SRAM and send out pkts from the FPGA SRAM. The issue I'm seeing is CANSLNT errors in the 8 bit status returned from TCAN during the TCAN command 32 bit phase. I'm not using wake and I'm not using the sleep mode so these are disabled based on the eval HW and SW selection.

0800h is set for 080004A2h, so the wake config is disabled/00, WD_EN is a 0, MODE_SEL is normal/10. The other reg configuration are per the example code. I'm not wait but more than 30sec or so to start transmission both ways.

I have searched and read the other CANSLNT related posts and didn't see anything to me that would be similar. Any ideas to go about debugging this?

Thank You,

Greg Holdren

Motion Control Engineering

  • Hi Greg,

    Just to confirm - do you see this flag persist even as communication occurs on the bus? Is it always set, or is it intermittent?

    Regards,

    Max

  • Hello Max,

    It happens very early on at the beginning of the received packets. First or second received packet and it is always set after that. point. Prior to receiving there are no CANSLNT errors set in the SPI communication.

    RX and TX operation appears to be ok. Below is is the first packet.

    I have been working at home 4 days out of the week. I'll be in the office tomorrow Thurs. 5-7 so I can look at the exact  SPI comm transaction that the error happens on the logic analyzer.

    Thank You,

    Greg Holdren

    Motion Control Engineering

    Memory Block Name:  TPSRAM_0/eSRAM_eNVM_access_top_TPSRAM_0_TPSRAM_R0C0/INST_RAM1K18_IP
    Data Bit Mode:      9-bit

    007       034       000       000       000       000       000       0A0       000       008       001       010       014       0E7       0DC       03C       
    007       034       000       000       000       000       000       0A0       03B       0AC       008       0FF       05B       0FA       0C7       015       
    007       034       000       000       000       000       000       0A0       012       034       056       078       04D       032       0D4       0AE       
    007       034       000       000       000       000       000       0A0       055       0AA       055       0AA       0FC       0B5       0D1       0FA       
        
    000       008       001       010       03B       0AC       008       0FF       012       034       056       078       055       0AA       055       0AA      

  • Greg,

    If you write to clear after the CANSLNT flag is detected the first time, does it get raised again? This flag has to be written to be cleared even if the condition that triggered the flag is gone.

    This isn't the root cause of why the flag is getting thrown in the first place, I just want to see if we can isolate when it is happening.

    Regards,

  • Hello Eric,

    Getting closer.

    I set the CANSLNT flag in 0820h and it does clear the error on the status byte on each subsequent SPI transactions. Upon the next packet received CANSLNT will be set again. I notice that if I send a pkt to TCAN (RX) at a rate of 840ms to 850ms or faster then the error never shows up again. So it looks like a timer is active some place or is this normal? WD is off.

    Thanks,

    Greg Holdren

    Motion Control Engineering

  • Greg,

    This is a timer on the TCAN4550-Q1. If you look in the Device Switching Characteristics on page 10, it lists tsilence which results in the CANSLNT flag being raised when the timer is elapsed with no CAN bus activity. What rate are you sending packets if not at 840ms to 850ms?

    Since the timer is minimum 0.6s maximum 1.2s, the timer must be expiring in the slower case, and in the 840ms to 850ms case it still falls within the tsilence timer.

    Please let me know if that makes sense or if you have any other questions.

    Regards, 

  • Eric,

    Thanks for the clarification. I missed the tsilent in the parameter table and in the description test on page 10.

    CAN traffic will be happening on a more frequent basis than the tsilent time out value in the actual application so the error shouldn't come up. But i have code in place in case the CANSLNT is activated.

    Thank You,