Following the guide figure,I wrote some codes,the sensor hdc1050didn't received data of temperture and humidity.MCU is msp432.
and application always cycle around at the sentence“MAP_I2C_masterSendMultiByteNext...”“
Here are snippets and the guide figure.
#include "driverlib.h"
#define SLAVE_ADDRESS 0x40 //hdc1050 address
volatile uint8_t msb,lsb;
const eUSCI_I2C_MasterConfig i2cConfig =
{
EUSCI_B_I2C_CLOCKSOURCE_SMCLK,
3000000,
EUSCI_B_I2C_SET_DATA_RATE_400KBPS,
0,
EUSCI_B_I2C_NO_AUTO_STOP
};
int main(void)
{
MAP_WDT_A_holdTimer();
MAP_CS_setDCOCenteredFrequency(5000000);
MAP_CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1 );
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P6,
GPIO_PIN4 + GPIO_PIN5, GPIO_PRIMARY_MODULE_FUNCTION);
MAP_I2C_initMaster(EUSCI_B1_MODULE, &i2cConfig);
MAP_I2C_setSlaveAddress(EUSCI_B1_MODULE, SLAVE_ADDRESS);
MAP_I2C_enableModule(EUSCI_B1_MODULE);
MAP_I2C_setMode(EUSCI_B1_MODULE, EUSCI_B_I2C_TRANSMIT_MODE);
MAP_I2C_masterSendStart(EUSCI_B1_MODULE);
MAP_I2C_masterSendMultiByteNext(EUSCI_B1_MODULE,0x02); //pointer register address
MAP_I2C_masterSendMultiByteNext(EUSCI_B1_MODULE,0);
MAP_I2C_masterSendMultiByteNext(EUSCI_B1_MODULE,0);
MAP_I2C_masterSendMultiByteStop(EUSCI_B1_MODULE);
MAP_I2C_setSlaveAddress(EUSCI_B1_MODULE, SLAVE_ADDRESS);
MAP_I2C_setMode(EUSCI_B1_MODULE, EUSCI_B_I2C_TRANSMIT_MODE);
MAP_I2C_masterSendSingleByte(EUSCI_B1_MODULE,0x01); //temperature register
MAP_I2C_setMode(EUSCI_B1_MODULE, EUSCI_B_I2C_RECEIVE_MODE);
MAP_I2C_setSlaveAddress(EUSCI_B1_MODULE, SLAVE_ADDRESS);
MAP_I2C_masterReceiveStart(EUSCI_B1_MODULE);
while (1)
{
msb=I2C_masterReceiveMultiByteNext(EUSCI_B1_MODULE);
while(MAP_I2C_isBusBusy(EUSCI_B1_MODULE)==EUSCI_B_I2C_BUS_BUSY);
lsb=I2C_masterReceiveMultiByteNext(EUSCI_B1_MODULE);
}
}