0

I understand that how open collector works on protocol like I2C. However, from my understanding, the automotive protocols like CAN and LIN also use open collector to talk to other devices. LIN is connect to 12v battery whereas CAN is connect to 3.5v and 2.5v. My confusion is that why they do not need pullup resistor as they are open collector circuit. My assumption would be there might be an internal pullup in the CAN and LIN transceiver so external pullup is no need. For CAN, it is propably more complicated circuit than I think because it has CANH and CANL. I believe CANL uses open collector circuit but not sure about CANH.

Edit: Sorry for not being specific, my main question is about the pullup resistor. Just comparing LIN and I2C, both use open collector. if no resistor is used, i2c device may have floating pin. Why Lin does not have the same effect when no pull up resistor is connecting to 12V battery.

2 Answers2

0

To understand how LIN and CAN buses are driven, you can simply look at the datasheet for any transceiver for those buses.

Like this, from the datasheet of TLIN2029A-Q1 (LIN transceiver): TLIN2029A-Q1 Functional block diagram

As one can see, there is an internal pull-up (45 kΩ, which in this specific transceiver can be enabled/disabled) in the transceiver. Then there is an open-collector driver.

And here is from the datasheet of TCAN1057A-Q1 (CAN transceiver) TCAN1057A-Q1 Functional block diagram As you can see, there is no internal pull-up. The differential output is driven to Vcc and GND respectively, or they are floating. Instead of pull-up, CAN uses termination resistors. There shall be exactly two, 120 Ω termination resistors between CANL and CANH on a bus.

When the bus is "low" (recessive state), the lines have the same voltage (usually about 50% of Vcc) due to the termination resistors connecting them together. When the bus is "high" (dominant state), CANL is pulled to ground and CANH is pulled to Vcc by the open collector outputs.

Klas-Kenny
  • 4,283
  • 5
  • 24
  • Well this is quite over-simplified, CAN is specified to give an idle voltage of 2.5V on both lines and they do not pull to ground or Vcc but 1.5V and 3.5V respectively. – Lundin Jan 10 '22 at 07:44
0

You have some misunderstanding about LIN not needing pull-up resistors, because they are required, just like for any open-collector/open-drain bus.

LIN Specification mandates a nominal pull-up resistances of 1 kohm on LIN controller and 30 kohm on each LIN device.

CAN is also an open collector bus, but just a differential one. The CANH and CANL wires are connected together by termination resistances equaling 60 ohms. So when nothing is driving the CAN bus, the CANH and CANL wires have no voltage difference between them in idle state, so CANH-CANL voltage is 0V and no current flows via termination resistors.

When any device wants to drive the bus, it pulls the CANL wire low with a transistor to 0V ground like any other open collector device does, but it will also have to use an open collector output to drive the CANH wire high to 5V. This will make the CANH-CANL voltage to be 5V, and current will flow via the termination resistors.

This makes it possible to have an idle state and any device can drive the bus to active state.

Justme
  • 127,425
  • 3
  • 97
  • 261