MPU9255 without lib on STM32
For STM32 HAL define the slave address as uint8_t adressMPU = (0x68&lt;&lt;1);, because if you check the register description:



in 7 bit addressing mode actually [7:1] bits of the I2C CR2 register are used but HAL sets the address field as follows:



tmpreg |= (uint32_t)(((uint32_t)DevAddress &amp; I2C_CR2_SADD) | (((uint32_t)Size &lt;&lt; 16 ) &amp; I2C_CR2_NBYTES) | \
            (uint32_t)Mode | (uint32_t)Request);

/* update CR2 register */
hi2c-&gt;Instance-&gt;CR2 = tmpreg;


(I2C_CR2_SADD is 0x3FF which actually just masks the first 10 bits.) So the point is that HAL will set the 7 bit address mistakenly on [6:0] bits of the register if you do not shift to left by one manually.