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.

TCAN4550: Unable to create link between Can SBC and FPGA

Part Number: TCAN4550

Hello, 

My customer has a problem with connecting a TCAN4550 with their FPGA. I think It could be software problem because it happen also with our EVM. See his description below. 

Thanks 

Jan

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

We would like the use the TCAN 4550 on the development board (TCAN4550 evaluation module) with the following CANFD setup:

Please find the SPI transactions at the end of this message.

 

N 1MBit

N SP 80%

N Prescaler: 4

N seq1: 7

N Seq2: 2

N SJW: 2

N 10Tq

 

D 8MBit

D SP 60%

D Prescaler: 1

D seq1: 2

D Seq2: 2

D SJW: 2

D 5 Tq

 

Watchdog not required

Sleep not required

GPIs, GPOs, IRQs not required

 

Only one TX buffer is configured for sending a message to the CAN bus.

Receiving of messages is not required at the moment.

 

 

Problem:

========

After sending SPI transaction "Init 8", the status LEDs on the development board light up.

Only the SPI transactions "Verify_Read_Init 0" to "Verify_Read_Init 1" provide readback data. Then MISO remains silent.

A power cycle of the development board is required in order to get another response on MISO.

 

Two Master devices show similar behavior with the given set of SPI transactions.

 

Could you please have a look at our SPI transactions?

It seems, there is an error in the configuration.

 

 The following procedure is implemented:

=======================================

1.

The master sends initialization.

SPI transactions: "Reset 0" and "Init 0" to "Init 8"

 

2.

Some of the initialization is read back and checked

SPI transactions: "Read_Init 0" to "Read_Init 6"

 

Expected readback data: "Verify_Read_Init 0" to "Verify_Read_Init 6"

If readback data is go then goto 3.

else goto 2.

 

3.

Check if a new message can be loaded to the TX buffer

SPI transaction: "CheckCanBuffer 0"

 

If the buffer is ready for new data then goto 4.

else goto 2.

 

4.

Load message and request to send

SPI transactions "Writing64B 0" to "Writing64B 1"

 

goto 2.

 

 

 

SPI transactions and expected readback:

======================================

Initialization:

Reset 0                 ['0x61', '0x8', '0x0', '0x1', '0xc8', '0x0', '0x4', '0x6c']                           

Init 0                      ['0x61', '0x10', '0x18', '0x1', '0x0', '0x0', '0x83', '0x43']

Init 1                      ['0x61', '0x10', '0x1c', '0x1', '0x2', '0x3', '0x6', '0x1']

Init 2                      ['0x61', '0x10', '0xc', '0x1', '0x0', '0x80', '0x1', '0x11']

Init 3                      ['0x61', '0x10', '0x48', '0x1', '0x0', '0x0', '0x4', '0x0']

Init 4                      ['0x61', '0x10', '0xc0', '0x1', '0x1', '0x0', '0x0', '0x0']

Init 5                      ['0x61', '0x10', '0xc8', '0x1', '0x0', '0x0', '0x0', '0x7']

Init 6                      ['0x61', '0x80', '0x0', '0x2', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']

Init 7                      ['0x61', '0x10', '0x18', '0x1', '0x0', '0x0', '0x83', '0x40']

Init 8                      ['0x61', '0x8', '0x0', '0x1', '0x38', '0x0', '0x6', '0xa2']

 

Readback of some initialization:

Read_Init 0 ['0x41', '0x10', '0x1c', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 1 ['0x41', '0x10', '0xc', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 2 ['0x41', '0x10', '0x48', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 3 ['0x41', '0x10', '0xc0', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 4 ['0x41', '0x10', '0xc8', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 5 ['0x41', '0x10', '0x18', '0x1', '0xff', '0xff', '0xff', '0xff']

Read_Init 6 ['0x41', '0x8', '0x0', '0x1', '0xff', '0xff', '0xff', '0xff']

 

expected readback data:

Verify_Read_Init 0 ['0x0', '0x0', '0x0', '0x0', '0x02', '0x03', '0x06', '0x01']

Verify_Read_Init 1 ['0x0', '0x0', '0x0', '0x0', '0x00', '0x80', '0x01', '0x11']

Verify_Read_Init 2 ['0x0', '0x0', '0x0', '0x0', '0x00', '0x00', '0x04', '0x00']

Verify_Read_Init 3 ['0x0', '0x0', '0x0', '0x0', '0x01', '0x00', '0x00', '0x00']

Verify_Read_Init 4 ['0x0', '0x0', '0x0', '0x0', '0x00', '0x00', '0x00', '0x07']

Verify_Read_Init 5 ['0x0', '0x0', '0x0', '0x0', '0x00', '0x00', '0x83', '0x40']

Verify_Read_Init 6 ['0x0', '0x0', '0x0', '0x0', '0x38', '0x00', '0x06', '0xa2 (only some of the bits)']

 

Check if a new message can be loaded to the TX buffer:

CheckCanBuffer 0 ['0x41', '0x10', '0xc4', '0x1', '0xff', '0xff', '0xff', '0xff']

 

Loading a CAN message and request to send:

Writing64B 0 ['0x61', '0x80', '0x0', '0x12', '0x5a', '0xaa', '0xaa', '0xaa', '0x1', '0x3f', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']

 

Writing64B 1 ['0x61', '0x10', '0xd0', '0x1', '0x0', '0x0', '0x0', '0x1']

  • Jan,

    An applications engineer has been notified of this post and will respond accordingly.

    Regards,

    Eric Hackett

  • Hi Jan,

    It looks like the FPGA is unable to read data from TCAN4550 through SPI. In this case, all of the data seen from the SDO pin is a 1, meaning SDO never asserts. It's also likely that writes to the device are not being recognized. Please check the following to ensure conditions are right for SPI communication to occur.

    • TCAN4550 is properly supplied with Vsup and Vio. 
    • TCAN4550 is not in sleep mode (INH pin asserted). 
    • All SPI protocol formatting is being followed (nCS assertion, clock polarity, SDI/SDO connections). Check datasheet Section 8.5
    • Read from Device ID Registers ('h0000 - 'h0004). These registers (<'h0800) can be accessed without a crystal input. If these registers are available while other remain unresponsive, the issue may be with the oscillator input. 

    Regards,
    Eric Schott