9 #include <satcat5/cfg_i2c.h>
10 #include <satcat5/cfgbus_multiserial.h>
14 #ifndef SATCAT5_I2C_TXBUFF
15 #define SATCAT5_I2C_TXBUFF 256
18 #ifndef SATCAT5_I2C_RXBUFF
19 #define SATCAT5_I2C_RXBUFF 64
22 #ifndef SATCAT5_I2C_MAXCMD
23 #define SATCAT5_I2C_MAXCMD 16
45 bool clock_stretch =
true);
53 u8 regbytes, u32 regaddr, u8 nread,
59 u8 regbytes, u32 regaddr, u8 nwrite,
const u8* data,
66 u8 regbytes, u32 regaddr,
67 u8 nwrite,
const u8* data, u8 nread,
75 u16 m_devaddr[SATCAT5_I2C_MAXCMD];
76 u32 m_regaddr[SATCAT5_I2C_MAXCMD];
79 u8 m_txbuff[SATCAT5_I2C_TXBUFF];
80 u8 m_rxbuff[SATCAT5_I2C_RXBUFF];
Callback interface for cfg::I2cGeneric events.
Polymorphic API for a generic I2C interface.
Interace driver for "cfgbus_i2c_controller".
bool busy() override
Is the I2C controller currently busy?
void read_done(unsigned idx)
Callback when each transaction is finished.
I2c(satcat5::cfg::ConfigBus *cfg, unsigned devaddr)
Constructor links to specified ConfigBus address.
bool read(const satcat5::util::I2cAddr &devaddr, u8 regbytes, u32 regaddr, u8 nread, satcat5::cfg::I2cEventListener *callback=0) override
Add a read operation to the queue.
bool write(const satcat5::util::I2cAddr &devaddr, u8 regbytes, u32 regaddr, u8 nwrite, const u8 *data, satcat5::cfg::I2cEventListener *callback=0) override
Add a write operation to the queue.
void configure(unsigned refclk_hz, unsigned baud_hz, bool clock_stretch=true)
Configure the I2C controller.
Partial driver for the multipurpose serial peripheral.
Conversion function for I2C device addresses.