跳到主要内容

pico-i2c-slave

提供中断驱动 I2C 从机接口的函数。

详细描述

此 I2C 从机辅助库配置从机模式,并挂钩相关的 I2C IRQ,使得用户提供的处理函数能够以枚举的 I2C 事件被调用。

使用本库的示例应用程序 slave_mem_i2c 可在 pico_examples(https://github.com/raspberrypi/pico-examples/blob/master/i2c/slave_mem_i2c/slave_mem_i2c.c) 中找到。

类型定义

  • typedef enum i2c_slave_event_t i2c_slave_event_t``: I2C 从机事件类型。 typedef void(** i2c_slave_handler_t)(i2c_inst_t **i2c, i2c_slave_event_t event)`
     I2C 从机事件处理函数。

枚举

  • enum i2c_slave_event_t { [I2C_SLAVE_RECEIVE], [I2C_SLAVE_REQUEST], [I2C_SLAVE_FINISH] }: I2C 从机事件类型。

函数

void i2c_slave_init (i2c_inst_t *i2c, uint8_t address, i2c_slave_handler_t handler)
 将 I2C 实例配置为从机模式。

void i2c_slave_deinit (i2c_inst_t *i2c)
 将 I2C 实例恢复为主机模式。

类型定义文档

i2c_slave_event_t

typedef enum i2c_slave_event_t i2c_slave_event_t

I2C 从机事件类型。

i2c_slave_handler_t

typedef void(** i2c_slave_handler_t) (i2c_inst_t **i2c, i2c_slave_event_t event)

I2C 从机事件处理函数。

事件处理函数将从 I2C ISR 中运行,因此应快速返回(在 400 kb/s 时需在 25 us 以内)。避免在处理函数中阻塞,并将大数据传输拆分为多次调用以获得最佳效果。向主机发送数据时,最多可以写入 i2c_get_write_available() 字节而不阻塞。从主机接收数据时,最多可以读取 i2c_get_read_available() 字节而不阻塞。

参数

  • i2c: [i2c0] 或 i2c1
  • event: 事件类型。

枚举类型文档

i2c_slave_event_t

enum i2c_slave_event_t

I2C 从机事件类型。

.枚举值 | I2C_SLAVE_RECEIVE | 来自主机的数据可供读取。从机必须从 Rx FIFO 中读取。 | | I2C_SLAVE_REQUEST | 主机正在请求数据。从机必须向 Tx FIFO 中写入数据。 | | I2C_SLAVE_FINISH | 主机已发送停止或重新开始信号。从机可以为下一次传输做准备。 |

函数文档

i2c_slave_deinit

void i2c_slave_deinit (i2c_inst_t * i2c)

将 I2C 实例恢复为主机模式。

参数

  • i2c: [i2c0] 或 i2c1

i2c_slave_init

void i2c_slave_init (i2c_inst_t * i2c, uint8_t address, i2c_slave_handler_t handler)`

将 I2C 实例配置为从机模式。

参数

  • i2c: I2C 实例。
  • address: 7 位从机地址。
  • handler: 用于处理来自 I2C 主机事件的回调函数。它将在 I2C ISR 中运行,位于从机初始化所在的 CPU 核心上。

中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352