Hi All,
Here is code of I2C reading (4bytes):
while (1){ //[2] // Delay // ROM_SysCtlDelay(26*10000); //[4] // Read 4 bytes of data // I2CMasterSlaveAddrSet(HIH8120_I2C_BASE, SENSOR_I2C_ADDRESS, true); I2CMasterControl(HIH8120_I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START); while(I2CMasterBusBusy(HIH8120_I2C_BASE)){}; ui8RxBytes[0]=I2CMasterDataGet(HIH8120_I2C_BASE); I2CMasterControl(HIH8120_I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT); while(I2CMasterBusBusy(HIH8120_I2C_BASE)){}; ui8RxBytes[1]=I2CMasterDataGet(HIH8120_I2C_BASE); I2CMasterControl(HIH8120_I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT); while(I2CMasterBusBusy(HIH8120_I2C_BASE)){}; ui8RxBytes[2]=I2CMasterDataGet(HIH8120_I2C_BASE); I2CMasterControl(HIH8120_I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH); while(I2CMasterBusBusy(HIH8120_I2C_BASE)){}; ui8RxBytes[3]=I2CMasterDataGet(HIH8120_I2C_BASE); }
in the code SENSOR_I2C_ADDRESS = 0x27
So, here is what I see on oscilloscope:
withing green vertical lines is 1 first byte of a the transaction on the bus, the firs byte is address and it is correct 0x27 (7 bits) + 1 last bit shows read operation. After the 1 byte I see only two bytes are read. So, the question is:
Why I see on oscilloscope only adress and reading of two bytes, as in the code above I read 4 bytes?