status_t BSP_enuReadDataBlocking(uint8_t u8SlaveAddr,uint8_t * pI2cData,uint8_t u8DataSize,BSP_tenuI2cID enuID,uint8_t* FrameID ) { // status of the request (return value) status_t enuRequestStatus = STATUS_ERROR; /* Flexio I2C Master */ if( I2C_MATER_RIGHT == enuID) { // update slave address FLEXIO_I2C_DRV_MasterSetSlaveAddr(&i2cMasterState,u8SlaveAddr); /* Send data to the slave */ enuRequestStatus = FLEXIO_I2C_DRV_MasterSendDataBlocking(&i2cMasterState,FrameID,1,false, OSIF_WAIT_FOREVER); if( enuRequestStatus == STATUS_SUCCESS) { /* Request data from slave */ enuRequestStatus = FLEXIO_I2C_DRV_MasterReceiveDataBlocking(&i2cMasterState,pI2cData,u8DataSize,true, OSIF_WAIT_FOREVER); } } /* LPi2c Master */ else if (I2C_MATER_LEFT == enuID) { // update slave address LPI2C_DRV_MasterSetSlaveAddr(INST_LPI2C0, u8SlaveAddr, false); /* Send a packet of data to the bus slave */ enuRequestStatus = LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C0,FrameID,1,false,OSIF_WAIT_FOREVER); if( enuRequestStatus == STATUS_SUCCESS) { // send blocking read request (with STOP condition) enuRequestStatus = LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C0,pI2cData,u8DataSize, true,OSIF_WAIT_FOREVER); } } else { /* Do Nothing */ } enuRequestStatus = LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C0,pI2cData,u8DataSize, true,OSIF_WAIT_FOREVER); return enuRequestStatus; }