Wednesday, November 18, 2015

E90 Can bus

Purchased an E90 Can bus Instrument Cluster to play with.


The cluster pin out is simple.  It only has: Power, Ground, Can bus High, Can bus Low and 2 wires for the outside air temperature.  Makes it easy to hook up :-) All gauges are driven by the can bus.  Using can values from https://loopybunny.co.uk/CarPC/k_can.html and some info we had we quickly had it up and running. 

When power is applied nothing happens.  The cluster, and most of the E90 modules,  require a "terminal 15" on signal, sent over the can bus, to wake up and come a live.

The Instrument cluster gauges are actually on the K-Can bus and the engine, DSC, TCU etc. is on the PT-Can bus.  In the car there is a gateway (the junction box) that is between PT-Can and K-Can Bus.  It repeats the necessary messages for the gauges to work, from the DME on the PT-Can bus, on the K-Can bus.  One thing to be aware of is that the PT-Can bus is at 500kb/s and the K-Can is 100kb/s. When setting up a Can bus interface be sure to use the correct Baud rate.

Later we will take some time to hunt down the proper bytes and bits to turn on the engine warning lights.

Edit:  For T15 turn on we send the following every  100 milliseconds.  Some units will stay on until a turn off is received.  Others will turn off after a length of time without the T15 on message.


to turn on
  id = 0x130;
  len =5;
  data[0]= 0x45; //0x45;  //Key Status
  data[1]= 0x42; // 0x40;  //Transponder Detected
  data[2]= 0x69;  // 0x21;  //Terminal Status
  data[3]= 0x8F;  // Steering lock?
  data[4]= 0xE2;  //Counter and Checksum

To turn off: (if the device doesn't automatically turn off.  IHKA turns off on it's own.  KOMBI doesn't)
  id = 0x130;
  length =5;
  data[0]= 0x00;
  data[1]= 0x40;  //Transponder Detected
  data[2]= 0x21;
  data[3]= 0x8F;
  data[4]= 0x50; //Counter and Checksum