"I2C" (设备连接协议)

  • "I2C" 是底层通信协议,用于直接连至运行 Wolfram 语言的处理器 .
  • I2C 是设备的半双工总线协议,其允许多个设备连接在只有两根线(串行数据线-SDA 和串行时钟线-SCL)的单个设备上. SDA 用于传递数据,SCL 用于设备间数据传递的同步.
  • 有两类设备与 I2C 兼容,主设备和从设备. 主设备允许所有总线上的通信,从设备不允许在总线上通信,除非明确由主设备许可. I2C 的 Wolfram 语言实现指定运行 Wolfram 语言的设备作为 I2C 总线上的主设备.
  • I2C 时钟速度来自于 Linux 内核,在树莓派中默认为 100 kHz.
  • 使用 I2C 内核前需要设置系统;参见 "设置 I2C" 获取更多信息.
  • I2C 总线只有在树莓派上运行 Wolfram 语言才可以被访问.
  • 注意:比 Jessie 低的 Raspbian 版本,访问 GPIO 时,必须以 root 登录或作为 root 运行 Wolfram 语言. 所有更高版本不需要以 root 身份访问.

    设备发现

    • I2C 设备会自动被发现. 使用 FindDevices 列出当前在 I2C 总线上的设备.

    打开设备

      DeviceOpen["I2C",addr]

      使用从地址 addr 打开 I2C 设备的连接.

      DeviceOpen["I2C",{addr,bus}]

      使用在指定的 bus 上的从地址 addr 打开 I2C 设备的连接.

    • 有效的 I2C 从地址是 8 至 119 的整数. 不支持 10 位地址. 对于特殊的设备地址请查询制造厂商的说明.
    • 在树莓派上,唯一有效的总线是 0.

    读取数据

      DeviceRead[dev]

      从 I2C 总线上的设备读取单个字节.

      DeviceRead[dev,n]

      从 I2C 总线上的设备读取 n 个字节.

    • I2C 从设备在通信开始前需要被 Wolfram 语言独立地配置.
    • 注意某些 I2C 从设备对于要求不同字节数的读取操作会有不同的响应. 查询设备的制造厂商说明获取更多信息.

    编写数据

      DeviceWrite[dev,data]

      data 写入设备.

    • data 必须是 0 至 255 之间的整数列表或 0 至 255 之间的单个 Integer.
    • I2C 从设备在通信开始前需要被 Wolfram 语言独立地配置.

    关闭和释放资源

      DeviceClose[dev]

      关闭与 I2C 总线的连接并释放总线让其他程序可用.

    范例

    基本范例  (1)

    找到总线上的 I2C 设备:

    打开设备:

    把字节序列写入设备:

    从设备上读取单个字节:

    从设备上读取 10 个字节的序列: