i2c.h

[Stub] support.

Library Documentation

Inter-Integrated Circuit (I2C) peripheral support.

Defines
I2C_MSG_READ

I2C_MSG_10BIT_ADDR

I2C1_BASE

I2C2_BASE

I2C_CR1_SWRST

I2C_CR1_ALERT

I2C_CR1_PEC

I2C_CR1_POS

I2C_CR1_ACK

I2C_CR1_START

I2C_CR1_STOP

I2C_CR1_PE

I2C_CR2_LAST

I2C_CR2_DMAEN

I2C_CR2_ITBUFEN

I2C_CR2_ITEVTEN

I2C_CR2_ITERREN

I2C_CR2_FREQ

I2C_CCR_FS

I2C_CCR_DUTY

I2C_CCR_CCR

I2C_SR1_SB

I2C_SR1_ADDR

I2C_SR1_BTF

I2C_SR1_ADD10

I2C_SR1_STOPF

I2C_SR1_RXNE

I2C_SR1_TXE

I2C_SR1_BERR

I2C_SR1_ARLO

I2C_SR1_AF

I2C_SR1_OVR

I2C_SR1_PECERR

I2C_SR1_TIMEOUT

I2C_SR1_SMBALERT

I2C_SR2_MSL

I2C_SR2_BUSY

I2C_SR2_TRA

I2C_SR2_GENCALL

I2C_SR2_SMBDEFAULT

I2C_SR2_SMBHOST

I2C_SR2_DUALF

I2C_SR2_PEC

I2C_FAST_MODE

I2C_DUTY_16_9

I2C_REMAP

I2C_BUS_RESET

I2C_ERROR_PROTOCOL

I2C_ERROR_TIMEOUT

I2C_IRQ_ERROR

Enable one or more i2c interrupts.

Parameters:
  • dev -

    i2c device

  • irqs -

    bitwise-or of: I2C_IRQ_ERROR: Error interrupt I2C_IRQ_EVENT: Event interrupt I2C_IRQ_BUFFER: Buffer interrupt

I2C_IRQ_EVENT

I2C_IRQ_BUFFER

Enums
i2c_state enum

Values:

  • I2C_STATE_DISABLED = 0 -
  • I2C_STATE_IDLE = 1 -
  • I2C_STATE_XFER_DONE = 2 -
  • I2C_STATE_BUSY = 3 -
  • I2C_STATE_ERROR = -1 -
Functions
void i2c_master_enable(i2c_dev * dev, uint32 flags)

Initialize an i2c device as bus master.

Parameters:
  • dev -

    Device to enable

  • flags -

    Bitwise or of the following I2C options: I2C_FAST_MODE: 400 khz operation I2C_DUTY_16_9: 16/9 Tlow/Thigh duty cycle (only applicable for fast mode) I2C_BUS_RESET: Reset the bus and clock out any hung slaves on initialization I2C_10BIT_ADDRESSING: Enable 10-bit addressing I2C_REMAP: Remap I2C1 to SCL/PB8 SDA/PB9

int32 i2c_master_xfer(i2c_dev * dev, i2c_msg * msgs, uint16 num, uint32 timeout)

Process an i2c transaction.

Transactions are composed of one or more i2c_msg’s and may be read or write tranfers. Multiple i2c_msg’s will generate a repeated start inbetween messages.

Parameters:
  • dev -

    i2c device

  • msgs -

    messages to send/receive

  • num -

    number of messages to send/receive

  • timeout -

    bus idle timeout in milliseconds before aborting the transfer. 0 denotes no timeout.

Return:

0 on success I2C_ERROR_PROTOCOL if there was a protocol error. I2C_ERROR_TIMEOUT if the transfer timed out.

void i2c_bus_reset(const i2c_dev * dev)

Reset an i2c bus by clocking out pulses until any hung slaves release SDA and SCL, then generate a START condition, then a STOP condition.

Parameters:
  • dev -

    i2c device

void i2c_disable(i2c_dev * dev)

void i2c_peripheral_enable(i2c_dev * dev)

turn on an i2c peripheral

Parameters:
  • dev -

    i2c device

void i2c_peripheral_disable(i2c_dev * dev)

turn off an i2c peripheral

Parameters:
  • dev -

    i2c device

void i2c_write(i2c_dev * dev, uint8 byte)

Fill transmit register.

Parameters:
  • dev -

    i2c device

  • byte -

    byte to write

void i2c_set_input_clk(i2c_dev * dev, uint32 freq)

Set input clock frequency, in mhz.

Parameters:
  • dev -

    i2c

  • freq -

    frequency in megahertz (2-36)

void i2c_set_clk_control(i2c_dev * dev, uint32 val)

Set i2c clock control register.

See RM008

Parameters:
  • dev -

    i2c device

Return:

Par:

void i2c_set_trise(i2c_dev * dev, uint32 trise)

Set SCL rise time.

Parameters:
  • dev -

    device to configure

  • trise -

    Maximum rise time in fast/standard mode (See RM008 for formula)

void i2c_start_condition(i2c_dev * dev)

Generate a start condition on the bus.

Parameters:
  • device -

    i2c device to use

void i2c_stop_condition(i2c_dev * dev)

Generate a stop condition on the bus.

Parameters:
  • device -

    i2c device to use

void i2c_enable_irq(i2c_dev * dev, uint32 irqs)

void i2c_disable_irq(i2c_dev * dev, uint32 irqs)

Disable one or more i2c interrupts.

Parameters:
  • dev -

    i2c device

  • irqs -

    bitwise-or of: I2C_IRQ_ERROR: Error interrupt I2C_IRQ_EVENT: Event interrupt I2C_IRQ_BUFFER: Buffer interrupt

void i2c_enable_ack(i2c_dev * dev)

Enable i2c acknowledgment.

Parameters:
  • dev -

    i2c device

void i2c_disable_ack(i2c_dev * dev)

Disable i2c acknowledgment.

Parameters:
  • dev -

    i2c device

Variables
i2c_dev *const I2C1

i2c_dev *const I2C2

class i2c_reg_map

Public Members
__io uint32 CR1

__io uint32 CR2

__io uint32 OAR1

__io uint32 OAR2

__io uint32 DR

__io uint32 SR1

__io uint32 SR2

__io uint32 CCR

__io uint32 TRISE

class i2c_msg

Public Members
uint16 addr

uint16 flags

uint16 length

uint16 xferred

uint8 * data

class i2c_dev

Public Members
i2c_reg_map * regs

gpio_dev * gpio_port

uint8 sda_pin

uint8 scl_pin

uint8 clk_line

uint8 ev_nvic_line

uint8 er_nvic_line

uint8 state

uint16 msgs_left

i2c_msg * msg

uint32 timestamp

uint32 error_flags