cancel
Showing results for 
Search instead for 
Did you mean: 

CANFD classic frame works on Nucleo-H7ZI43, but it's not working on PCB

ChristianSyc
Associate II

Hello,

 

I've written a software to use the FDCAN (classic frame 500kbit/s - PB8/PB9 pins) on  Nucleo-H7ZI43 (FW_H7 V1.7.0 and stlink V3J13M4 FW)

All works fine, I'm able to transmit and to receive message with different ID and DLC by mean Innomaker CAN-USB and MCP2562FD transceiver. 

If I use the same code on my  PCB and the same microcontroller, FDCAN is not initialized, no messages are transmitted or received.

The electrical configuration how you can see on the schematic attached is the same of Nucleo-H7ZI43, in this case I'm using an external stlink-v3 debugger with V3J13M4B5S1 FW. 

I've checked several times the connections and electrical network, all it's correct from my point of view.

To help the analisys I'm attaching also the clock.jpeg and can.c file.

Please can you support me?

 

Regards

Chris

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
TDK
Guru

> So question is why is GPIOB  not working on PCB? What can I do to activate for it? I think we are close to the solution.

Some possibilities:

  • PB8/9 isn't hooked up to what you are monitoring
  • GPIOB clock is not enabled
  • Code has bugs and doesn't do what you think it does
  • The hardware is damaged
If you feel a post has answered your question, please click "Accept as Solution".

View solution in original post

7 REPLIES 7

Why HSI?

Does the 48 MHz HSE start?

Does HSE_VALUE have the correct value?

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

I've used the HSI and also the HSE and nothing change.

I've tried to provide also a 8 MHZ signal on OSC_IN and it does not work.

What do you suggest? Please see also the schematic.

 

TDK
Guru

If you're running the same code, on the same chip, and it's wired up the same, it would be working, so one of those has likely the issue.

  • Do you have a logic analyzer? That would be my first step.
  • If not, try setting PB8/PB9 as output and toggling to establish connectivity to the expected pins.
  • Toggle an LED at 1 Hz to verify timing.
  • Step through code, verify HAL_OK returns and if not, see what step fails.
  • Is it actually the same code or just copy/pasted from one project to another?
  • Consider trying the same HEX file (HSI will be the same on both).
  • Consider distilling the project down to the basics to test CAN.
If you feel a post has answered your question, please click "Accept as Solution".

Dear TDK,

 

thank you so much for your analysis.

I've configured PB8 and PB9 like output with toggling at 1 HZ and these 2 pins are fixed to zero, it seems that GPIOB is not working on the PCB, while in Nucleo PB8/PB9 works correctly.

On the PCB I've tried also the other GPIOA,E,F and toggling at 1 HZ works fine.

So question is why is GPIOB  not working on PCB? What can I do to activate for it? I think we are close to the solution.

 

Regards

Chris

TDK
Guru

> So question is why is GPIOB  not working on PCB? What can I do to activate for it? I think we are close to the solution.

Some possibilities:

  • PB8/9 isn't hooked up to what you are monitoring
  • GPIOB clock is not enabled
  • Code has bugs and doesn't do what you think it does
  • The hardware is damaged
If you feel a post has answered your question, please click "Accept as Solution".
LCE
Principal

Have you checked the wiring to / of the CAN transceiver? Maybe that one is placed or wired incorrectly, that might explain the low level on the GPIOs.

All GPIOB channels are not working, while GPIOA,C,D,E,F are working fine.

I suppose a damage on GPIOB