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.

HDC2010EVM: Breaking apart sensor alone from controller

Part Number: HDC2010EVM
Other Parts Discussed in Thread: HDC2010

Hello All,

I have HDC2010EVM kit for HDC2010 sensor. My requirement was to have HDC2010 with MSP432. But I am facing issue with starting the conversion with Temp/Humidity from MSP432, as the HDC2010EVM comes along with the MSP430.

Below are my observation,

1. I am able to communicate and read manufacture ID and Device ID from sensor.

2. I am able to write to any Read/Write register and get the same data back.

3. The issue is with only "0x0F Measurement Configuration Register", where even if I write 1 to 0th bit (MEAS_TRIG) to start measurement, it's read as 0 immediately. All other register values are read correct which I wrote.

Suppose, Write(0x0F, 0x53), Read(0x0F) is yielding 0x52. 0th bit is clearing out. Due to this I am not able to start measurement.

Can we separate the sensor from MSP430, as shown below to make it work with MSP432? Can we do this? 

If not, how to make nullify the program which is altering the sensor configuration with it's program? Can anyone suggest.

Any suggestion?

  • Tajpeer- 

    The register 0x0F will clear itself when measurement is completed, so when you write a 1 to it (to start a measurement) - it will start and then clear when done - this is what is meant by the datasheet on page 26 in Table 38 where it states Bit 0 is "Self-clearing bit when measurement completed". (which will occur within 1.4mSec, if set for 14 bit measurements, which is default)

    so the next step after this would be to read the values from 0x00, 0x01 (temp) and 0x02, 0x03 (hum). 

    you can separate the end of the board and connect with 0.100CTR header, it is made to do that - you can also just wire directly to it and not plug in the EVM. 

    The MSP430F552x on the EVM has no code inside of it related to the HDC - all of the commands come from the GUI. 

    Try checking out this FAQ - in which i put some screen shots of how measurement works

    https://e2e.ti.com/support/sensors/f/1023/t/878721?tisearch=e2e-sitesearch&keymatch=HDC2010

  • Hello Josh Wyatt,

    Thanks for the response, which was very precise with the issue which I faced.

    But, I have already dis-connected the connection between J1 and J2 header of the HDC2010EVM instead of cutting as above.

    But now, what I am observing is a different issue where I2C bus is always stating as busy even if I am not doing anything on that bus. Just after invoking "MAP_I2C_enableModule(EUSCI_B0_BASE);" API, bus is stated as busy permanently as marked in red below.

    Can you suggest what might be the issue here? HDC2010 part should work independent of MSP430 right? I am providing 3.3v, GND and SCL and SDA of my MSP432P401R launchpad.

  • Do you have I2C pull-up resistors? See R5 and R6 on HDC EVM schematic. These were disconnected, and are necessary for operation of the bus. The bus will appear busy if the lines are low.

    ren

  • Hi REN, Thanks for the info. I am connecting hdc2010 with my msp432 launchpad after separating from msp430. Msp432 launchpad doesn’t seems to have pull-up resistors with any of it’s 4 i2c channels. That’s the reason I am always getting bus busy status.
  • It's normal for the LaunchPad to not have the pull-up resistors, because the pins can be configured for different purposes. You can add appropriate resistors to your circuit, or you might be able to enable internal pull-up inside the MSP432. Check the documentation for your MCU's GPIO. If you need further assistance with your MSP432, don't hesitate to ask. At your request, I can have the MSP432 team review your post.

    thanks,

    ren

  • Thanks Ren. Waiting to hear from Msp432 team for any alternative solution to this issue. Or else I may have to go back and connect the J1 and J2 connector on HDC2010EVM to test the hdc2010 with msp432. As per the previous suggestion, I understand minimum ~2ms delay required for the measurement to complete.
  • Hi Ren,

    I have connected back the J1 & J2 connectors as earlier. But still I always get i2c busy as mentioned above.

    So, I thought the pullup resistors on the msp430 are not enough as we have connecting from MSP432 externally, I have connected pull up resistors to my MSP432 launchpad externally like below to P1.6 & P1.7 lines.

    But after this connection, I am seeing a strange behavior where my I2C bus is working fine for the first few instructions after my launchpad reset. And after that the same issue as I2C as busy.

    Not able to understand what's going on.

    If I have connector the J1 & J2 headers as earlier as original HDC2010EVM kit, then I should be able to control the sensor through I2C from my MSP432 launchpad right? because the connection has not been dis-connected as supply is provided to MSP430 as well.

    Please suggest what might the issue here. I am not able to trace from hardware perspective.

  • Tajpeer,

    You shouldn't connect the HDC2010 to both the EVM's USB dongle and the LaunchPad at the same time. The two hosts could conflict. 

    When connected to the LaunchPad, the HDC2010's VDD, GND, SCL and SDA must be connected to the LaunchPad.

    It looks like you have provided 2kohm pull-up to 3.3V for both SCL and SDA. This is acceptable.

    If you see some successful communication before the bus halts, I'll need you to capture this activity on an oscilloscope or logic analyzer to provide further guidance.

    thanks,

    ren

  • Additionally - you may want to use the correct (default) pins for I2C...the picture you have is for what is normally SPI MISO and MOSI, but can be used for I2C. All the firmware examples we have use the default pins of the Launchpads for I2C. on the MSP432P4 LP, this would be P6.5 (SCL) and P6.4 (SDA)

    from page 16: http://www.ti.com/lit/ug/slau597f/slau597f.pdf

     

  • Hi Ren/Wyatt, I have tried using other channels as well. I don’t think it’s an issue with i2c channels, as I have configured 1.6 and 2.7 correctly. In addition,I didn’t connect EvM usb to any system to use msp430 part. Just connected 3.3v to DVD and find, sad and sick pins of msp432 launchpad to hdc2010. As shown in picture above, I have connected 2k resistor with sea and scl lines of launchpad. As the 2010evm already has 1.5k resistor as pullup and again I have connected 2k. Could that be an issue? As I give 3.3v power to hdc2010, I can see evm part is also powered as I can see led of evm blink. I will try to capture the activity. Let me know if you could see any issue as explained above.
  • The issue still persists. But one thing to note here is, On the first few iterations or first iteration after the power up of the board. I am able to read the Manufacture ID using the I2C driver.

    But after one or few iterations, the code still hangs on I2C busy check! I am not sure, if this issue is because of the pullup resistor or with the driver code which I am using here. From Hwardware, I have disconnected the VDD of HDC2010 with MSP430 on HDC2010EVM. Giving the i2c signal and vdd and gnd from MSP432. And connected 2 1k resistor in series to both scl and sck as exaplained previosu posts.

    Here is my I2C code.

    void I2C_Read_aByte(uint8_t addr, uint8_t *result)

    {

        while(I2C_isBusBusy(EUSCI_B0_BASE));

        /* Set master to transmit mode PL */

        I2C_setMode(EUSCI_B0_BASE, EUSCI_B_I2C_TRANSMIT_MODE);

        /* Send start and the first byte of the transmit buffer. */

        MAP_I2C_masterSendMultiByteStart(EUSCI_B0_BASE, addr);

        *result = MAP_I2C_masterReceiveSingleByte(EUSCI_B0_BASE);

    }

    TXData = 0xFD;
    I2C_Read_aByte(TXData, &RXData);

    Need input from MSP432 I2C driver team on my code above. I don't have the analyser to capture the activities on bus.

  • Hey Tajpeer,

    I'm not very familiar currently with the I2C drivers for MSP432, but I wanted to point to the example code we have for the MSP432P401R launchpad that you are using.  There are about 10 different I2C master examples you can compare to and pull from:    http://dev.ti.com/tirex/explore/node?node=AIaHSvjn.KjUNRDtdnUpsg__z-lQYNj__LATEST 

    Thanks,

    JD