Using the BusPirate to see if it’s Alive- TI HDC1000

Using the BusPirate to get T & RH

I2C Testing with the Buspirate

This mini article is part of a larger project an I will link to it at the end. For this project, I was required to use the TI HDC1000 and instead of buying a module, I decided to get samples and a make a PCB of my own. This would be great except I had to create the footprints which are almost microscopic! Anyways I got it made from SeeedStudios and I bought one of those ultra cheap hot air stations with no indications about temperature or airflow and some paste and got started. The reflow happened painlessly and I was pretty happy with myself. Before I move on to mounting any other parts, I decided to see if the HDC1000 was alive or had kicked the bucked in my hotair experiment.

So I started with soldering the header as well as power test pins and I hooked up the BusPirate. Har har har! I think I can explain the rest via a video and so…

Reading the Temperature and Humidity

In order to read temperature and humidity, there is a set of commands you have fire at it. You should go through the datasheet but I am going to give you the quick and dirty on reading the temperature & RH.
The first thing to do it configure the HDC1000 to take measurements. It is usually in deep-sleep so I need to wake it up and configure it. So I have to send…

[0x86 0x02 0x1e 0x00]

Why I send that? Well the 0x86 is the address of the HDC1000 with write bit and 0x02 is the configuration register address. 0x1e & 0x00 is the configuration to write.

Next we Trigger the reading by

[0x96 0x00

Note that there is no ] at the end which means that I do not send a stop character. Next I send…

[0x87 rrrr]

Which sends another start of frame and the read address of the HDC1000. We read 4 bytes which are MSB then LSB for the Temperature and Humidity.

Using the BusPirate to get T & RH
Using the BusPirate to get T & RH

I am getting the temperature but the humidity still boggles me and I think I may have burned it out. I will post more once I test another HDC1000 or someone helps me πŸ˜‰

Till then,



  1. Hello Inderpreet,

    my breakout boards have arrived and I also built an Arduino library, more details on my blog:

    However, I don’t understand how you’re configuring the chip in your code. Sending “0x1e” followed by “0x00” you are trying to set the BTST bit, which is read-only. Also, you are setting the temp resolution to 11 bit. Try different configs (for example “0x10” followed by “0x00” – 14bit resolution for both temp and humi).

    Also, for reading both humidity and temperature you should then send a read command to the 0x00 register, close the transmission and read the following 4 bytes (the first 2 are the temperature and the last are the humidity) after a delay of some millisecs.

    Take a look at these screenshots from my logic analyzer.

    Config + read request packets:

    Read data after 20ms delay (temp: 0x5D, 0x24 – humi: 0x68, 0xA4):

    Associated Arduino code:

    Let me know if this works!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s