Сб апр 30, 2022 22:55:23
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;
}
Вс май 01, 2022 02:07:33
Вс май 01, 2022 09:52:09
Martian писал(а):таймаут не слишком мал?
Martian писал(а):И что-то Вы не всё показали. В даташите попытка чтения регистра врое несколько более запуутанна, например, сначала получить статус состояния, перед этим вообще инициализировать и активировать датчик...
boolean Adafruit_MPL3115A2::begin(TwoWire *twoWire) {
if (i2c_dev)
delete i2c_dev;
i2c_dev = new Adafruit_I2CDevice(MPL3115A2_ADDRESS, twoWire);
if (!i2c_dev->begin())
return false;
// sanity check
uint8_t whoami = read8(MPL3115A2_WHOAMI);
if (whoami != 0xC4) {
return false;
}
}
Вс май 01, 2022 21:10:33
Сб май 07, 2022 12:35:50
void I2Cx_ReadDataRepeatedStart(uint8_t DeviceAddr, uint8_t RegisterAddr, uint8_t i2cRxBuff[], uint8_t size){
HAL_I2C_Mem_Read(&hi2c1, DeviceAddr, RegisterAddr, 1, i2cRxBuff, size, 100);
}
Сб май 07, 2022 12:59:55
Сб май 07, 2022 13:11:42