Khepera III 工具箱/工具箱/模块/i2c 流
外观
i2c_stream 模块实现了一个简单的 I2C 数据流协议。数据流的来源设备也必须实现相同的协议。
查看 i2c_stream_read 程序的源代码以获取示例。
该模块使用 i2cal 模块将数据块从外部设备(芯片)传输到程序。它主要由两个函数组成
- i2c_stream_read_start,用于启动流
- i2c_stream_read_next,需要经常调用(并且以或多或少规律的间隔调用)以读取可用数据块
以下四个设置需要提供给模块
- 设备: 要查询的设备的 I2C 地址
- 寄存器: 从中读取流的 I2C 寄存器
- 块大小: 一个块的大小(以字节为单位)
- 最大块数: 一次传输的最大块数(此值必须 <= 128 / 块大小)
用于数据流的协议非常简单:要重置流,模块首先发送寄存器,然后发送 1。要读取数据块,模块发送寄存器,然后从设备读取 (块大小 + 1) 字节的倍数。块的第一个字节是状态字节,它可以取以下值之一
- 255 (I2C_STREAM_BUFFER_OVERRUN): 设备上发生了缓冲区溢出,即块读取速度不够快。
- 254 (I2C_STREAM_EMPTY): 块不包含任何数据。
- 0..253: 设备上可用的块数