Arduino CAN Bus Module

Last week I received an early xmas present! A reader, Jeremy kindly sent me a bunch of chips including some truly vintage devices that I will be analyzing over the next few weeks.  Included in the haul was a small CAN Bus controller board for Arduino.  Jeremy was interested in looking at a CAN transceiver chip so I am more than happy to oblige 🙂 CAN (Controller area network) was developed for automotive, and is used in all cars made today. It can communicate between the various ECU’s without the need for a central MCU.  I was not aware that it was being used outside of automotive, I guess with Arduino it is useful as a low cost control bus for home automation type projects.

This is the board containing two chips a timing crystal and four each of capacitors and resistors




The two chips are a Microchip MC2515 CAN bus controller, and the chip we are most interested in, the 8 pin NXP TJA1050 CAN bus transceiver.



The NXP TJA1050 has a datasheet that indicates it was first launched in 2003. The die is very interesting

(Click on image for high resolution version)

It’s a small die 1.54mm x 1.24mm (1.91 mm2) made on a two metal process. I spend a long time looking at the die trying to figure out what process technology is used. At first I thought it was a CMOS process as there is plenty of polysilicon visible, but the transistors do not look like MOSFETS.  I am now pretty confident that  this part is made on a double polysilicon Bipolar process.  This is a high speed Bipolar process that uses polysilicon to form base contacts and the emitters.  The CAN bus is relatively high speed interface up to 1Mbaud, so it makes sense to use a high speed Bipolar process.

Whilst I am not 100% sure I have it all figured out what layers you can see in the die photo, here is my take on the transistors

I think they have actually used 3 polysilicon layers, first they use an N++ polysilicon that contacts the low resistance collector regions, the second polysilicon is P-type (And the non-silicides regions of this show as pink/purple in my die photo).  This contacts the low doped implanted base doping layer and is a doughnut shape, with a hole that self-aligns the emitter.  The emitter poly (N++) covers the hole and is not directly visible, as it is itself covered with metal (And presumably silicide).

Why I think that three polysilicon layers are used, is that some strange resistor structures are present, that confused me and I can only reconcile with the extra poly.  I am pretty sure the pink layer is p-type polysilicon, but for many resistors like this one, it appears to be sitting on top of another polysilicon layer.  Thus I think they have put the collector polysilicon contact layer under the p-type resistors.  

I do not know why they have done that (Rather than the more conventional placement of resistors over the field oxide). It is possible that these are “pinched resistors” (Resistors where the p-type is used to pinch the n-epi to give a high resistance) but it would be odd to see a chain of pinched resistors, and the resistance value would be huge.

Here is a close-up (Focus stacked) image of another transistor design taken with my 80x objective

This is the block diagram from the datasheet


And here is the the pin-out annotated on the die photo




I did manage to trace the CANL and CANH pins to the two 25kΩ resistors, which are the resistors I showed earlier. Which also indicates the pink polysilicon layer has a ~75Ω/sq sheet resistance, to get the 25kΩ resistor value so confirming it is not a pinched resistorI think the driver is the two large transistors that have the part number over them, but I cannot resolve the block diagram to the die photo much further.

Since I de-capped the TJA1050 I also de-capped and took a die photo of the MCP2515 for completeness. It is a modern MCU die, probably made with a 90nm 6 or 8 metal CMOS process, so is not terribly interesting to look at.

Die Size 1.95 mm x 1.66 mm (3,24mm2)

(Click on image for high resolution version)

This entry was posted in Die Photo and tagged , , , , , , . Bookmark the permalink.

4 Responses to Arduino CAN Bus Module

  1. Jeremy says:

    Wow that can transceiver was very interesting! I’ll have to send some more! 🙂

    As additional background, even today it is common that the can tranciever is a separate chip from the microcontroller or controller chip. I’ve heard it is easier to deal with transients and other faults by maintaining this chip separately. In industrial networks the can bus tranciever can be isolated from the controller.

    • Gary says:

      Thanks again for the chips. I am starting to look at some of the others, there is material there for a few weeks of blogs!

  2. Frank says:

    This article concerning a similar chip (TJA1041) says its a silicon-on-insulator process:

    • Gary says:

      SOI would not be visible in a die photo (Would need to see a cross section). I t might be BCDMOS as mentioned in the article on TJA1041, which would make all my analysis wrong 🙁 and the transistors we can see being DMOS.

Comments are closed.