cancel
Showing results for 
Search instead for 
Did you mean: 

CAN FD multiple MCUs

Arjun_Bansal
Associate III

I am trying to connect 2 NUCLEO-G0B1RET6 boards,using CAN FD. I previously did it using CAN, But now i am trying to connect these boards using CAN FD. So far no success,I want to know if it is possible to do it using CANFD.Kindly help me in this regard.

27 REPLIES 27

For all we know, the OP could have 2 different computers or just two USB chargers connected to each setup. If so then the grounds are not common to each other and communication will not work correctly. However, If both Nucleo boards are connected to the same computer then the USB ports would provide ground reference between the 2 Nucleo boards/Transceivers.

I think some people may mistakenly think they only have to run a twisted pair of wires from one location to another location, but don't know that differential signals also need a ground reference between all nodes.

Tips and Tricks with TimerCallback https://www.youtube.com/@eebykarl
If you find my solution useful, please click the Accept as Solution so others see the solution.

It's a controversy subject on the internet: "is common ground needed for CAN communication?"
Example:
https://www.edn.com/does-the-can-bus-need-a-common-ground/
https://electronics.stackexchange.com/questions/198864/is-a-ground-common-needed-for-proper-can-bus-communication#:~:text=Yes%2C%20a%20common%20ground%20is,able%20to%20recognize%20the%20bits.

For me, common ground is not necessary at least for just testing with the same power levels. And I don't think the issue above is related to a common mode level / ground offset issues. It's more likely related to the usage of a non-suitable transceiver.

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.

Hello everyone

I have achieved,whatever i was trying to do.Thanks for your inputs.This really helped me to understand few basic things.

Although there was problem related to my filter ID configuration due to which i wasn't able to transmit and receive the data.

Now everything is resolved.

Current issue: I'm trying to transmit,the data which was recieved(using FDCAN)  from MCU1 and MCU2,to serial monitor(Tera Term) by using UART but I'm getting "d" for 100, "(" for 40. Is there any way to overcome this? Please share your views on it.

show your code

Tips and Tricks with TimerCallback https://www.youtube.com/@eebykarl
If you find my solution useful, please click the Accept as Solution so others see the solution.

There is code for both MCUs, I'm trying to transmit integers to serial monitor using UART but I'm getting coressponding character on serial monitor.

I Googled Tera Term and I think Tera Term doesn't show hex values, only ASCII. If so, try Docklight as it can show either type, plus decimal or binary

 

 

Tips and Tricks with TimerCallback https://www.youtube.com/@eebykarl
If you find my solution useful, please click the Accept as Solution so others see the solution.

Issue solved. 

  • I upload the updated code,with exact desired output.
  • This project was built using 2nos. G0B1RE, BD41041FJ-C CAN Transceiver
  • Solution:There is need of typeCasting,configure filter id carefully to do this.
SofLit
ST Employee

Hi @Arjun_Bansal ,

You're welcome. Please click on Accept as Solution on the reply which solved your first issue (described in your first comment) as its gives a better visibility on the answered topics.

Thank you

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.