Skip to content

File syn_i2c_dev.h

FileList > drivers > syn_i2c_dev.h

Go to the source code of this file

I2C device register helpers — thin layer over port I2C. More...

  • #include "../common/syn_defs.h"
  • #include "../port/syn_port_i2c.h"
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_I2CDev
I2C device descriptor — bus number + 7-bit address.

Public Static Functions

Type Name
void syn_i2c_dev_init (SYN_I2CDev * dev, uint8_t bus, uint8_t addr)
Initialize device descriptor.
SYN_Status syn_i2c_dev_modify8 (const SYN_I2CDev * dev, uint8_t reg, uint8_t mask, uint8_t val)
Modify register: read, mask, set bits, write back.
uint16_t syn_i2c_dev_read16_be (const SYN_I2CDev * dev, uint8_t reg)
Read a 16-bit register (big-endian, MSB first).
uint16_t syn_i2c_dev_read16_le (const SYN_I2CDev * dev, uint8_t reg)
Read a 16-bit register (little-endian, LSB first).
uint8_t syn_i2c_dev_read8 (const SYN_I2CDev * dev, uint8_t reg)
Read a single 8-bit register.
SYN_Status syn_i2c_dev_read_burst (const SYN_I2CDev * dev, uint8_t reg, uint8_t * buf, size_t len)
Burst read: read len bytes starting fromreg .
SYN_Status syn_i2c_dev_write16_be (const SYN_I2CDev * dev, uint8_t reg, uint16_t val)
Write a 16-bit register (big-endian).
SYN_Status syn_i2c_dev_write8 (const SYN_I2CDev * dev, uint8_t reg, uint8_t val)
Write a single 8-bit register.
SYN_Status syn_i2c_dev_write_burst (const SYN_I2CDev * dev, uint8_t reg, const uint8_t * data, size_t len)
Burst write: write len bytes starting fromreg .

Detailed Description

Provides convenient register-level access for I2C sensors/peripherals. Eliminates boilerplate for reading/writing 8-bit and 16-bit registers and burst reads.

** **

SYN_I2CDev bmp280;
syn_i2c_dev_init(&bmp280, 0, 0x76);  // bus 0, addr 0x76

uint8_t chip_id = syn_i2c_dev_read8(&bmp280, 0xD0);
syn_i2c_dev_write8(&bmp280, 0xF4, 0x27);  // ctrl_meas

uint8_t burst[6];
syn_i2c_dev_read_burst(&bmp280, 0xF7, burst, 6);

Public Static Functions Documentation

function syn_i2c_dev_init

Initialize device descriptor.

static inline void syn_i2c_dev_init (
    SYN_I2CDev * dev,
    uint8_t bus,
    uint8_t addr
) 

Parameters:

  • dev Device instance.
  • bus I2C bus number.
  • addr 7-bit device address.

function syn_i2c_dev_modify8

Modify register: read, mask, set bits, write back.

static inline SYN_Status syn_i2c_dev_modify8 (
    const SYN_I2CDev * dev,
    uint8_t reg,
    uint8_t mask,
    uint8_t val
) 

Parameters:

  • dev Device.
  • reg Register address.
  • mask Bits to modify.
  • val New values for masked bits.

Returns:

SYN_OK on success.


function syn_i2c_dev_read16_be

Read a 16-bit register (big-endian, MSB first).

static inline uint16_t syn_i2c_dev_read16_be (
    const SYN_I2CDev * dev,
    uint8_t reg
) 

Parameters:

  • dev Device.
  • reg Register address.

Returns:

16-bit value (MSB first).


function syn_i2c_dev_read16_le

Read a 16-bit register (little-endian, LSB first).

static inline uint16_t syn_i2c_dev_read16_le (
    const SYN_I2CDev * dev,
    uint8_t reg
) 

Parameters:

  • dev Device.
  • reg Register address.

Returns:

16-bit value (LSB first).


function syn_i2c_dev_read8

Read a single 8-bit register.

static inline uint8_t syn_i2c_dev_read8 (
    const SYN_I2CDev * dev,
    uint8_t reg
) 

Parameters:

  • dev Device.
  • reg Register address.

Returns:

Register value.


function syn_i2c_dev_read_burst

Burst read: read len bytes starting fromreg .

static inline SYN_Status syn_i2c_dev_read_burst (
    const SYN_I2CDev * dev,
    uint8_t reg,
    uint8_t * buf,
    size_t len
) 

Parameters:

  • dev Device.
  • reg Starting register address.
  • buf Output buffer.
  • len Number of bytes to read.

Returns:

SYN_OK on success.


function syn_i2c_dev_write16_be

Write a 16-bit register (big-endian).

static inline SYN_Status syn_i2c_dev_write16_be (
    const SYN_I2CDev * dev,
    uint8_t reg,
    uint16_t val
) 

Parameters:

  • dev Device.
  • reg Register address.
  • val 16-bit value to write.

Returns:

SYN_OK on success.


function syn_i2c_dev_write8

Write a single 8-bit register.

static inline SYN_Status syn_i2c_dev_write8 (
    const SYN_I2CDev * dev,
    uint8_t reg,
    uint8_t val
) 

Parameters:

  • dev Device.
  • reg Register address.
  • val Value to write.

Returns:

SYN_OK on success.


function syn_i2c_dev_write_burst

Burst write: write len bytes starting fromreg .

static inline SYN_Status syn_i2c_dev_write_burst (
    const SYN_I2CDev * dev,
    uint8_t reg,
    const uint8_t * data,
    size_t len
) 

Parameters:

  • dev Device.
  • reg Starting register address.
  • data Data to write.
  • len Number of bytes (max 32).

Returns:

SYN_OK on success, SYN_ERROR if len > 32.



The documentation for this class was generated from the following file src/syntropic/drivers/syn_i2c_dev.h