2025-12-10 8:43 PM
Hi everyone,
I’ve been stuck on a CAN communication issue between two boards:
STM32F429 Discovery (Classic CAN)
STM32H743XIH6 (FDCAN)
I’m trying to establish CAN communication between them. Currently, the F4 board can transmit and receive data correctly. The H7 board, however, can transmit but is unable to receive any messages.
I’m wondering if the issue is due to the H7 using FDCAN (Selected Classic CAN on H7 Board .ioc file) while the F429 uses Classic CAN. If this difference causes compatibility problems, please let me know. Otherwise, if you know what might cause the H7 to fail in receiving classic CAN frames, I would really appreciate your help.
Thanks in advance!
would be great
2025-12-10 8:44 PM
I am using TJA1050 transceiver.
2025-12-10 10:15 PM
> Currently, the F4 board can transmit and receive data correctly. The H7 board, however, can transmit but is unable to receive any messages.
How did you come to this conclusion ?
Have you tried a scope to observe the bus signals ?
And the signals at the MCU CAN-Tx / Rx pins ?
The STM32F429 CAN peripheral is also capable of FDCAN, and every FDCAN controller should support classic / standard CAN. I don't think this is the reason for the issue.
Are those two devices the only ones on the bus ?
Does the F429 board increase the TEC (or REC) while sending ?
2025-12-10 10:41 PM
Yes, I tried to observe the TX and Rx pins and the H7 board does receive but it aint receiving when i go to debugging mode , it aint receiving those 8 bytes, weirdly enough when I send 8 bytes from h743 to f429, the f429 does receive it and stores it as well. Yes, those are the only devices. I havent checked TEC
2025-12-10 11:06 PM
> Yes, I tried to observe the TX and Rx pins and the H7 board does receive but it aint receiving when i go to debugging mode ...
Single-step debugging a realtime communication is basically impossible.
You could set certain breakpoints to check if the related code is reached, perhaps adding some instrumentation code.
But them you usually have to restart the target system.
>... it aint receiving those 8 bytes, weirdly enough when I send 8 bytes from h743 to f429, the f429 does receive it and stores it as well.
Check your message fitler settings, probably they are filtered out and dropped.
I can only recommend the reference manual here, because I dealt a lot with CAN on other MCUs and architectures, but not STM32s.
> Yes, those are the only devices. I havent checked TEC
If a transmit doesn't succeed the TEC (a 8-bit field in a CAN peripheral status register) should count up - if I remember correctly by 8 for each attempt.
If that doesn't happen, the other side probably filters the message out.
Mind you, even if those messages are filtered-out, the reception itself is acknowledged.