跳转到内容

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: 设备上可用的块数
华夏公益教科书