This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HDC2010: i2c not working in cc2650 Custom board

Part Number: HDC2010
Other Parts Discussed in Thread: CC2650

Hello,

I am working with HDC2010 Humidity and temperature sensor and recently I have build my PCB, and the I2C communication is not working.

For the tests I have used Sensor Controller Studio with a CC2650 Laucnpad conected to the evaluation module HDC2010 and it is working correcty but when I start the task testing the i2cStatus is 0x0001 all the time. The slave address is 0x40 (same as the evaluation module) and when using Sensor controller Studio I shift it one position to 0x80. I changed the I/O mapping according to my board and the SCA and SCL are specified correctly.

I have tried too with a simple code in CCS and is not transmiting neither. 

HDC2010 schematic: https://drive.google.com/file/d/1CM9L1NDdmx0hvC2EPwnHTLH1MSBOPUHM/view?usp=sharing

HDC2010 PCB: https://drive.google.com/file/d/1ETNrPAhIOdk4t6IR3sIYx2eB0ChTELKZ/view?usp=sharing

The slave address is 0x40 (same as the evaluation module) and when using Sensor controller Studio I shift it one position to 0x80.

I have checked short cuts/ open circuits and everything seems to be ok.

The pull up resistors im using are 10K, the evaluation module works ok with that values, so I don't know if that could be the reason.

Trying the Blouetooth Comunication with my PCB I have discovered another mistake with one of the crystal oscillators of the MCU, probably that is not related but there is the only aditional mistake I have seen. 

Thanks.

  • Howdy Miguel,

    Can you share any oscilloscope captures of the transaction?  From the above, I'm unsure if you've successfully communicated with the HDC2010 device, can you try to read the manufacturer ID and share via e2e?

    Best Regards,

    Matt

  • Hello Matthew,

    I have read the manufacturer ID using the evaluation module HDC2010 and the lauchpad without any problem with the following code in SCS:

    // If a measurement was successfully started during the last execution ...

    //if (state.i2cStatus == 0x0000) {

    // Select the result register

    i2cStart();

    i2cTx(I2C_OP_WRITE | HDC_I2C_ADDR);

    i2cTx(DEV_ID_LOW_ADDR);

    // If successful ...

    // if (state.i2cStatus == 0x0000) {

    U16 VALUE_LOW;

    U16 VALUE_HIGH;

    // Read the result

    i2cRepeatedStart();

    i2cTx(I2C_OP_READ | HDC_I2C_ADDR);

    i2cRxAck(VALUE_LOW);

    i2cRxNack(VALUE_HIGH);

    i2cStop();

    // Convert the temperature result

    U16 value = (VALUE_HIGH << 8) |VALUE_LOW;

    output.idval = value;

    // } else {

    // i2cStop();

    // }

    //}

    I have commented the IFs to load that code in my custom board because the i2cstatus is 0x0001 all the time, so i could force it to read the value but it is clearly a wrong value.

    The following screenshot shows the SDA transaction, it seems that there is a problem after sending the addres  because it goes to HIGH forever, and i dont understand the the manufacturer ID register is 0xFE - 0xFF that contains 0x07 and 0xD0.

  • Can you capture both SCLK and SDA, this will allow me to verify if there is anything wrong with the transaction from a setup point of view.

    Best Regards,
    Matt
  • This first picture is using my custom board.

    SDA : Yellow        SCL: BLUE

    That second picture is using the laucnhpad and the evaluation module:

    I can see the error but I don't know what can be it cause. Microcontroller  or Sensor broken?

  • Miguel,

    One experiment you can try is to use the custom board on the EVM module.  The EVM allows the HDC2010 device to separate from the main board, therefore you can spider wire the leads of your current prototype to the separated board.  If the device doesn't respond, it is more likely a software issue, and I would encourage you to post this question to the cc2650 forum. 

    Please let me know the results of the experiment.

    Best Regards,

    Matt

  • Matthew,
    I connected my custom board to the EVM sensor and it is working, so the microcontroller in the custom board doesn't have problems, it seems that the cause of the problem isthe sensor placed in my board, that is probably damaged for any reason.
    I have re-checked shortcuts between the pins of the sensor and the electrical connections are fine just as the evm, I will try to made another board with a new HDC2010 and i will see if it works.
  • Thanks Miguel,

    Keep me posted.

    Best Regards,

    Matt

  • I have already made the new PCB, same code, same layout, same model of each component and now it is working. The sensor was probably damaged.
  • Hi Miguel,

    Thanks for the response, and I'm glad you were able to track down the issue.

    Best Regards,

    Matt