7 #include <xcore/port.h>
8 #include <xcore/clock.h>
9 #include <xcore/hwtimer.h>
50 uint16_t p_setup_ticks;
51 uint16_t sr_setup_ticks;
52 uint16_t s_hold_ticks;
53 uint16_t low_period_ticks;
54 uint16_t high_period_ticks;
86 size_t *num_bytes_sent,
147 const uint32_t scl_bit_position,
148 const uint32_t scl_other_bits_mask,
150 const uint32_t sda_bit_position,
151 const uint32_t sda_other_bits_mask,
152 const unsigned kbits_per_second);
287 #define I2C_CALLBACK_ATTR __attribute__((fptrgroup("i2c_callback")))
336 uint8_t device_addr);
void i2c_master_init(i2c_master_t *ctx, const port_t p_scl, const uint32_t scl_bit_position, const uint32_t scl_other_bits_mask, const port_t p_sda, const uint32_t sda_bit_position, const uint32_t sda_other_bits_mask, const unsigned kbits_per_second)
i2c_res_t
Definition: i2c.h:21
void i2c_master_shutdown(i2c_master_t *ctx)
i2c_res_t i2c_master_write(i2c_master_t *ctx, uint8_t device_addr, uint8_t buf[], size_t n, size_t *num_bytes_sent, int send_stop_bit)
void i2c_master_stop_bit_send(i2c_master_t *ctx)
i2c_res_t i2c_master_read(i2c_master_t *ctx, uint8_t device_addr, uint8_t buf[], size_t n, int send_stop_bit)
@ I2C_STARTED
Definition: i2c.h:24
@ I2C_NOT_STARTED
Definition: i2c.h:25
@ I2C_NACK
Definition: i2c.h:22
@ I2C_ACK
Definition: i2c.h:23
i2c_slave_ack_t(* ack_write_request_t)(void *app_data)
Definition: i2c.h:224
int(* shutdown_t)(void *app_data)
Definition: i2c.h:281
i2c_slave_ack
Definition: i2c.h:183
enum i2c_slave_ack i2c_slave_ack_t
i2c_slave_ack_t(* ack_read_request_t)(void *app_data)
Definition: i2c.h:205
i2c_slave_ack_t(* master_sent_data_t)(void *app_data, uint8_t data)
Definition: i2c.h:254
uint8_t(* master_requires_data_t)(void *app_data)
Definition: i2c.h:238
#define I2C_CALLBACK_ATTR
Definition: i2c.h:287
void i2c_slave(const i2c_callback_group_t *const i2c_cbg, port_t p_scl, port_t p_sda, uint8_t device_addr)
void(* stop_bit_t)(void *app_data)
Definition: i2c.h:266
@ I2C_SLAVE_ACK
Definition: i2c.h:184
@ I2C_SLAVE_NACK
Definition: i2c.h:185
I2C_CALLBACK_ATTR master_requires_data_t master_requires_data
Definition: i2c.h:302
I2C_CALLBACK_ATTR ack_read_request_t ack_read_request
Definition: i2c.h:296
I2C_CALLBACK_ATTR stop_bit_t stop_bit
Definition: i2c.h:308
void * app_data
Definition: i2c.h:314
I2C_CALLBACK_ATTR ack_write_request_t ack_write_request
Definition: i2c.h:299
I2C_CALLBACK_ATTR shutdown_t shutdown
Definition: i2c.h:311
I2C_CALLBACK_ATTR master_sent_data_t master_sent_data
Definition: i2c.h:305