-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
bugSomething isn't workingSomething isn't working
Description
The I2C protocol for reading registers from the KTD2026 (datasheet) seems to be different from the usual implementation.
<SEND ADDRESS IN READ MODE> <REGISTER TO READ> FOLLOWED BY <READ VALUE>

For sensors we have previously used, for example, MAX30101 (datasheet), the read sequence looks like

This I2C sequence can be achieved by the following commands
_i2c->beginTransmission(_address);
_i2c->write(reg); // Register address
_i2c->endTransmission();
_i2c->requestFrom(_address, 1); // request 1 byter of data
_i2c->read();
However, there seems to be no support in the Wire library to send <SEND ADDRESS IN READ MODE> <REGISTER TO READ>.
I think the intended use of the Wire library to read a register is:
- send device address in write_mode (LSB=0)
- send register address
- send device address in read_mode (LSB=1)
- read bytes of data sent from the slave
I could not find a API to create the I2C timing diagram we need.
References:
- Understanding the I2C Bus
- I2C - - — Arduino ESP32 latest documentation
- Wire | Arduino Documentation
- Read KTD2026 registers without tx command - Nordic Q&A - Nordic DevZone - Nordic DevZone
Logic Analyzer output
- Using the logic analyzer, you can confirm that
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
