0
\$\begingroup\$

this might be a stupid question but i'm unable to clarify this by myself. So i'm working on a project with a STM32F429zit microcontroller. I would like to use CANopen in my project so i can communicate with other CANopen devices. From what i know now is that CANopen is a layer written on top of the CAN protocol. So it uses the same hardware. My microcontroller has 2 CAN interfaces, i've seen a video on youtube( https://www.youtube.com/watch?v=GYhsHJi6pKE&t=357s ) from a guy connecting two STM32F429 boards to each other via CAN directly. I've also seen a movie from a guy using three STM32F429 boards and connect them all together via CAN with a MCP2551 transceiver( https://www.youtube.com/watch?v=4fYoXGiIdDs ). Could somebody explain me the difference between those two setups? Is it really necessary to use an external transceiver to communicate over CAN? I'm planning to communicate with touchscreens using CANopen, those screens are working on 12VDC.

I hope somebody can clarify this for me.

Thank you all!!

\$\endgroup\$
  • \$\begingroup\$ The first thing I'd do would be to stop watching questionable youtube clips and instead read a book about CAN written by a professional. \$\endgroup\$ – Lundin Apr 17 at 6:44
1
\$\begingroup\$

You need to understand the functionality of the CAN Transceiver.

It "transforms" the CAN Rx and Tx Line of the microcontrollers CAN Controller to CAN High and CAN Low signal which is a differential signal.

If you want to connect your project to other CAN components, you probably need a CAN transceiver. If you just want to play around with two evaluation boards, a CAN transceiver is not needed, but the Rx and Tx signal are not as EMC proof as CAN high and low so you can not reach the same transmission path length.

By the way transceiver or not has nothing to do with CANopen. CANopen is just a protocol.

\$\endgroup\$
0
\$\begingroup\$

Yes, it is absolutely necessary to have a CAN transceiver. It transforms the microcontroller's non-standard signal levels to those of the CAN standard (2.5V +/- 1V) and it makes the signal differential. It also provides the drive strength necessary for long bus distances, as well as various protection circuitry.

To not have one might be ok for on-board communication or hobbyist projects, but that's about it. The CAN controller on-board your MCU is not meant to be used that way.

In addition, you need to prepare for bus termination in case your device ends up at the end of the bus.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.