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.
JOSEPH129009 asked Jan 8, 2022 at 3:07 JOSEPH129009 JOSEPH129009 3 3 3 bronze badges \$\begingroup\$ Please ask a specific question \$\endgroup\$ Commented Jan 8, 2022 at 4:25You 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.