"I2C" (设备连接协议)
"I2C" 是底层通信协议,用于直接连至运行 Wolfram 语言的处理器 .
I2C 是设备的半双工总线协议,其允许多个设备连接在只有两根线(串行数据线-SDA 和串行时钟线-SCL)的单个设备上. SDA 用于传递数据,SCL 用于设备间数据传递的同步.
有两类设备与 I2C 兼容,主设备和从设备. 主设备允许所有总线上的通信,从设备不允许在总线上通信,除非明确由主设备许可. I2C 的 Wolfram 语言实现指定运行 Wolfram 语言的设备作为 I2C 总线上的主设备.
I2C 时钟速度来自于 Linux 内核,在树莓派中默认为 100 kHz.
使用 I2C 内核前需要设置系统;参见 "设置 I2C" 获取更多信息.
I2C 总线只有在树莓派上运行 Wolfram 语言才可以被访问.
设备发现
-
I2C 设备会自动被发现. 使用 FindDevices 列出当前在 I2C 总线上的设备.
打开设备
-
有效的 I2C 从地址是 8 至 119 的整数. 不支持 10 位地址. 对于特殊的设备地址请查询制造厂商的说明.
-
在树莓派上,唯一有效的总线是 0.
DeviceOpen["I2C",addr]
使用从地址 addr 打开 I2C 设备的连接.
DeviceOpen["I2C",{addr,bus}]
使用在指定的 bus 上的从地址 addr 打开 I2C 设备的连接.
读取数据
-
I2C 从设备在通信开始前需要被 Wolfram 语言独立地配置.
-
注意某些 I2C 从设备对于要求不同字节数的读取操作会有不同的响应. 查询设备的制造厂商说明获取更多信息.
DeviceRead[dev]
从 I2C 总线上的设备读取单个字节.
DeviceRead[dev,n]
从 I2C 总线上的设备读取 n 个字节.
编写数据
-
data 必须是 0 至 255 之间的整数列表或 0 至 255 之间的单个 Integer.
-
I2C 从设备在通信开始前需要被 Wolfram 语言独立地配置.
DeviceWrite[dev,data]
把 data 写入设备.
关闭和释放资源
DeviceClose[dev]
关闭与 I2C 总线的连接并释放总线让其他程序可用.
技术笔记
-
▪
- 设置 I2C
历史
2015年引入 (10.3)