0
\$\begingroup\$

I am trying to design a CAN bus expander. In this case I could implement star topology of multiple buses in parallel. It would avoid having problems with reflections and delay.

For this purpose I prepared a simple schematics, that basically reflects RX signal from the CAN transceiver to the open-drain bus and then connects it to other RX and TX pins of other transceivers. My understanding is that this should work with CAN bus, keeping in mind dominant bits have priority.

The only question remains: Is it OK to connect RX via open-drain circuit to TX of the same bus? I would say it is, but this is the part I am asking actually.

My circuit (drawn on tablet) enter image description here

Image shows 3 different CAN transceivers connected in parallel. No matter on which bus signal is received, other 2 should see the same on their output.

This is schematics that works (verified), which I try to optimize. You can connect as many blocks as you want. enter image description here

\$\endgroup\$
2
  • \$\begingroup\$ You would have to know which CAN tranveiver it is and read the datasheet of it to anwer this. \$\endgroup\$ – Justme Mar 6 at 13:19
  • \$\begingroup\$ Why? CanH and CanL are standardized, so is TX and RX output. Taking into account speed (if neceaaary), it is 125kbit. Im using TJA1050 otherwise. \$\endgroup\$ – tilz0R Mar 6 at 13:21
2
\$\begingroup\$

The TJA1050 CAN PHY can't be used to make a passive CAN hub/repeater.

If any device starts to pull the TXD is low to transmit dominant state on the CAN bus, the receiver is still active as it can monitor for collisions so it will soon after pull RXD low, which in turn will keep your TXD low and so the state latches low. At some point the PHY transmit timeout will activate and maybe release the RXD high. But you have three chips with all RXDs being able to drive the TXDs.

Most likely need an MCU with three CAN controllers to handle three CAN bus segments, and a microcontroller to forward messages between them.

\$\endgroup\$
4
  • \$\begingroup\$ There is no MCU on right side. So any transaction is initiated by RX pin only. Does it still apply? \$\endgroup\$ – tilz0R Mar 6 at 19:12
  • \$\begingroup\$ Yes. If any bus goes to dominant state, it's RXD goes low, it pulls all TXDs low, all buses go to dominant state, all RXDs are low, they all keep TXDs low. \$\endgroup\$ – Justme Mar 6 at 19:29
  • \$\begingroup\$ Ive updated my question with working circuitry that certainly works but Im having difficulties to properly understand it and look for alternate solution. \$\endgroup\$ – tilz0R Mar 7 at 11:47
  • \$\begingroup\$ That circuit works because it has logic circuitry to prevent the lockup. Your original schematic didn't so it will end up having the lockup. \$\endgroup\$ – Justme Mar 7 at 12:07

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.