Пытюась прочитать регистр WHO I AM через STM32 вот таким кодом
Спойлер
Код: Выделить всё
uint8_t I2Cx_ReadData(uint8_t DeviceAddr, uint8_t RegisterAddr) {
uint8_t value = 0;
HAL_I2C_Master_Transmit(&hi2c1, (DeviceAddr << 1), &RegisterAddr, 1, 10);
HAL_I2C_Master_Receive(&hi2c1, (DeviceAddr << 1), &value, 1, 10);
return value;
}Проверял логическим анализатором, адреса идут корректные, как в даташите 0xC0 - для записи, 0xC1 - при чтение.
Сначала подумал, что может адрес не верный. Сделал цикл в котором перебираются все варианты адресов и только по правильному адресу 0xC0 получаю в логическом анализаторе строку вида "Setup Write to [0xC0] + ACK" по всем другим адресам я получаю NAK.
И вот когда я встаю на чтение регистров, то всегда получаю ответ 0x00+ NAK
Подскажите пожалуйста в чем может проблема?
Датчика у меня 2 и оба ведут себя одинаково


