CAN bus not working on Nucleo H743

Hello, I have been trying to use CAN bus with Mbed on a Nucleo H743 using Mbed OS 6.13 (I have tried with other versions too). And it is not working at all. That is: when sending a signal, the TX pin doesn’t output anything, and when receiving I can see the input signal with the oscilloscope going to the chip, but it is not reading anything.

I know setting up the CAN bus can be problematic, but I don’t think that is the problem. The transceiver seems to work fine, and the bus has the termination resistors. Also, I have been able to communicate Arduinos with this setup.

I have tried with Arduino, and a USB2CAN converter to test sending communication to the Nucleo board.

The as-simple-as-possible code I have been using for testing is the following:

//Receiving
#include "mbed.h"
#include <CAN.h>

//CAN can2(PB_5, PB_6, 500000); //RD, TD
CAN can1(PD_0, PD_1, 500000); 

int main(){
    while (1){
        CANMessage msg;
        if (can1.read(msg))
            printf("Message received: %X\n", msg.data[0]);
        else
            printf("No Mesage: %X\n", msg.data[0]);
        ThisThread::sleep_for(500);
    }
}
//Sending
#include "mbed.h"
#include <CAN.h>

//CAN can2(PB_5, PB_6); //RD, TD
CAN can1(PD_0, PD_1, 500000); 

int main(){
    while (1){
        can1.write(CANMessage(1337, "abcdefgh", 8));
        ThisThread::sleep_for(500);
    }
}

Hello,

I tried CAN loop communication between both CAN Controllers of on my Nucleo and it is working.

CAN can1(PB_5, PB_6, 500000);
CAN can2(PD_0, PD_1, 500000);

Eq.: Nucleo-H743ZI2, homemade shield with 2x MCP2551, MbedOS 6.13 and 6.15.1 and KeilStudio

BR, Jan

1 Like