Between line #50 and #60, is the code I added. First, we send a command (0xFE) to the sensor to do "Soft Reset".After that, we send command (0xEF) to read the user register, and then, we finally read the returned data.

None of this works. Each line simply returns the status as HAL_BUSY.

I went through a lot of forum posts and gathered the following:1. IsDeviceReady is only for memory devices and should not be used (I was using it to test connection earlier, but then removed it, as here also, I was getting HAL_BUSY status)2. The "OwnAddress" should not be left to 0 (zero). So I changed it to 50 (see method MX_I2C1_Init)3. The GPIO setup for PB6/7 should be "Open Drain". I checked the method named "HAL_I2C_MspInit" in the file named "stm32f1xx_hal_msp.c" (autogenerated by the cube tool) and the initialization does use GPIO_MODE_AF_OD4. One forum post said "STM32Cube software with HAL is buggy". So I created an I2C slave in Arduino (see sample code here). When I use "HAL_I2C_IsDeviceReady" method and "HAL_I2C_Master_Transmit/HAL_I2C_Master_Receive" methods, I'm able to get the value "hello" in the STM32 buffer. Therefore, the S/W for I2C is not buggy.

Hence the question is....what am I doing wrong here ? Any pointer to highlight my stupidity would be of great help.Thanks,Vishnu

No suggestions for 2 days is surprising , but I did find the answer...4.7K resistances are no good. Use a lower value. 2.2K did work for me.

The BMP180 board that I have, has 4.7K resistors soldered in such a way, that with the tools I have, I cannot take those out. So have ordered for a new board that allows me to choose the pull-up resistance values.-Thanks