Components I Usually Use (I): DS28CM00 – I2C Serial Number

I want to start a serie of brief articles describing the components that I usually used in my electronic designs.The first one is the DS28CM00 I2C serial number. This device is an electronic registration number that gives you an unique 64-bit serial number over I2C or SMBUS interface. This 64-bit serial number is  factory lasered, so there aren’t  two devices with the same number.

I use this component in a railway application, to identify the PCB’s mounted in the system. The pinout and the typical connection of this device is shown here:

DS28CM00 I2C Serial Number

The serial number has the following structure:

–          1 byte that identifies the family code (0x70)

–          6 bytes with the unique serial number

–          1 byte corresponiding the 8 bit CRC of the above bytes.

Also, the device has a contro register, where you can select the type of communication: I2C or SMBus. In the next figure, you can see the address of these registers:

DS28CM00 I2C Serial Number

As an I2C device, the DS20CM00 must have a bus address to access it. The address for read is 0xA1, and the address for write is 0xA0. Unfortunately, this address cannot be configurated, so you must be carefully if you use in the bus with other devices, to avoid conflicts on it.

  • Software example

Here you can see an example of how to access and communicate with this device. I use an AT89C51RE2 microcontroller from Atmel, and with two pins I do a bit-banging I2C software bus. The code I use is here:


  • Calculating CRC-8

In the datasheet, you can find a reference to an application note (AN27) that describes how to calculate the CRC-8. I use it to make my own routine in C code:

Finally, two tips to use this function:

– The variable CRC-8 must be a global variable.

– Before call the function for the first time, you must initialize this variable to 0x00.

  • Twitter
  • Digg
  • Facebook
  • Technorati
  • Reddit
  • Yahoo Buzz
  • StumbleUpon

2 thoughts on “Components I Usually Use (I): DS28CM00 – I2C Serial Number

  1. Satya

    Please help,
    I want to run this in my WIndows machine
    Where Do I get “I2C3_xxxx()” functions/library available?

    Thanks & Regards,

    1. jechavarria Post author

      Hi Satya:

      Thanks for read the blog! Note that the functions you mentione are for I2C communications. If you want to use this piece with a PC, you need a converter for the USB port of the PC (or serial RS232) to I2C, in order to connect this device. The functions you show in the code are for a microcontroller where is connected the DS28CM00.

      Best regards from Spain!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.