in reply to Re: i2c bus contention
in thread i2c bus contention
If I remember I2C correctly, that is actually over-complicated. The master selects a device by emitting an address onto the bus, possibly writes some number of bytes to that device (a device-internal register number and/or data to write), and possibly reads some number of bytes from that device. The bus then returns to idle state.
So the manager only needs a slave-address/write-buffer/read-count 3-tuple to define a transaction that can be performed atomically. If read-count is zero, only a completion can be returned; otherwise, the data read from the device is returned. In pseudo-C with the uint8_t[] type as a Perl-like scalar that carries its own length, an I2C transaction has this prototype:
uint8_t[] i2c_xact(i2c_address slave, uint8_t[] write, size_t read_count);
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: i2c bus contention
by GrandFather (Saint) on Mar 30, 2020 at 06:24 UTC | |
by jcb (Parson) on Mar 31, 2020 at 04:03 UTC | |
|
Re^3: i2c bus contention
by anita2R (Scribe) on Mar 30, 2020 at 13:16 UTC |