cancel
Showing results for 
Search instead for 
Did you mean: 

CAN FD Error on STM32H7AZIT&QU - Principiant

AleL_3
Associate II

Hello everyone, I'm an HW engineer and I'm quite new in the communication betweer mcu.

I'm now facing a communication error related to FDCAN.

My colleagues and I have made a system that needs to communicate with the outside world via FD CAN, working on a prototype with H7A3ZIQ Nucleo and STM32H7A3ZIQ micro with dual CAN (1 and 2) of which we use only the FDCAN1.

On demo board everything works properly. We interface the demo board CAN RX and TX with the SN65HVD230DR transceiver and we connect the CANH and CANL and GND to the tool Microchip CAN analyzer which reads the data correctly and manages to establish communication (as can be seen from attached presentation).

We replicated the necessary circuits on our own PCB, copying the demo board subsystems (SPI, CAN, a timer, direct programming via STLink and SN65HVD230DR) .

The only variation is the absence of power supply from SMPS, but we use the linear internal to the micro.

In addition, the external HSE oscillator is missing as on demo board, while we use the external 32kHz oscillator (as the demo board).

Having said that, the problem is that once everything is connected, the CAN analyzer goes into error passive and does not send low ACK. 

I have rechecked the board and connections several times, but everything seems ok (logic levels, signals, delays, noise, 120Ohm terminations on both nodes)..

I attach a presentation with waveforms and message decoding in both cases.

Thank you very much for your help!

1 ACCEPTED SOLUTION

Accepted Solutions
AleL_3
Associate II

Hello everyone, thanks a lot for the suggestions.

I was able to figure out the problem. We didn't notice that the high frequency oscillator on the demo board is actually mounted and the signal comes from the ST Link IC to the OSC_IN. This basically was the isuue, with the 32kHz oscillator was not possible to use properly the high frequency communication. We added an external 8MHz signal and the system started to communicate as expected again.

View solution in original post

5 REPLIES 5
unsigned_char_array
Senior III

Just some ideas:

Is there a common GND between both sides?

Have you tried a delay after booting to make sure the power supply voltage is stable and all the devices are booted before you start communicating over CAN?

Have you tried connecting the prototype and your demo board together on the same bus (with different message id's) and see what happens?

Kudo posts if you have the same problem and kudo replies if the solution works.
Click "Accept as Solution" if a reply solved your problem. If no solution was posted please answer with your own.
AleL_3
Associate II

Is there a common GND between both sides? --> yes

Have you tried a delay after booting to make sure the power supply voltage is stable and all the devices are booted before you start communicating over CAN? --> yes, voltage is stable and the devices are functioning

Have you tried connecting connecting the prototype and your demo board together on the same bus (with different message id's) and see what happens? --> We can try this

SofLit
ST Employee

Hello,

Can you please share your schematics as well as the connections between the two boards?

Also the transceiver SN65HVD230 is designed for 1 Mbps data rates max:

0693W00000Y9FHLQA3.pngSo if you are exceeding 1Mbps for CAN FD transmission you are out of specification of the transceiver.

PS: you don't need a common GND between the nodes since CAN signals are driven in differential mode.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
AleL_3
Associate II

Hello everyone, thanks a lot for the suggestions.

I was able to figure out the problem. We didn't notice that the high frequency oscillator on the demo board is actually mounted and the signal comes from the ST Link IC to the OSC_IN. This basically was the isuue, with the 32kHz oscillator was not possible to use properly the high frequency communication. We added an external 8MHz signal and the system started to communicate as expected again.

Well. You can use the 8MHz ST Link signal to supply the MCU by the clock using the bypass mode i.e. using OSC_IN pin only.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.