导入
方法
方法参考
Net.get(name, type=NetType.I2C)
按名称获取一个 I2C Net。
返回: I2C Net 实例
config(frequency_hz, pull_ups)
配置 I2C 总线参数。只有显式给出的参数会被修改;省略的参数保留已保存的值。
scan(start_addr, end_addr)
扫描 I2C 总线上已连接的设备。
返回:
list[int] - 以 ACK 应答的 7 位地址列表
read(address, num_bytes, output_format, overrides)
从 I2C 设备读取字节。
返回:
list[int] - 收到的字节,以整数表示(当 output_format="list" 时)
write(address, data, overrides)
向 I2C 设备写入字节。
write_read(address, data, num_bytes, output_format, overrides)
用重复起始条件,在一次 I2C 事务中先写后读。这是读取设备寄存器的标准做法。
返回:
list[int] - 收到的字节,以整数表示(当 output_format="list" 时)
get_config()
获取该 Net 的原始配置字典。
dict - 完整的 Net 配置,包含名称、角色、仪器和参数
输出格式
read() 和 write_read() 的 output_format 参数决定数据以何种形式返回:
示例
基本的设备读取
寄存器读写
总线配置
多设备配置
逐次调用的配置覆盖
受支持的硬件
多通道 FTDI 适配器
FTDI Net 从 Net 记录的params.interface 取得通道,接受 A-D 或 0-3。请用 lager nets add --interface 设置它。没有 interface 的 Net 使用通道 A,在单通道的 FT232H 上这也是唯一的选择。
I2C 运行在 FTDI 芯片的 MPSSE 引擎上,而在 FT4232H 上只有通道 A 和 B 带有 MPSSE 引擎。对于 I2C Net,
lager nets add 会拒绝 C 和 D。手工改成 C 或 D 的 Net 记录会在该 Net 打开时失败,错误信息会指出该通道。
一块芯片上各类 Net 如何分配通道,请参阅 Nets。
LabJack U3
- 在 U3 上使用 I2C 需要 U3 硬件版本 1.21 或更高。U3 只能作为总线主机。
- U3 没有上拉电阻。请从 SDA 和 SCL 各接一个外部电阻到 VS;LabJack 建议 4.7 kΩ。没有上拉时,每个地址都会返回 NAK,
scan()返回空列表。 pull_ups对 U3 不起作用。- 一次事务最多写 50 字节、读 52 字节。超出的事务会抛出错误。
- 时钟约在 10 kHz 至 150 kHz 之间运行,并且绝不会超过
frequency_hz。超出该范围的请求会被钳位,并在脚本的标准错误输出上给出警告。 write()和write_read()会检查地址的应答,以及每个字节的应答。错误信息会指出设备拒绝的第一个字节。写入 31 字节或更多时,错误信息不会指出是哪一个字节。FIO0-FIO3不能承载 I2C。使用这些引脚的 Net 会让驱动抛出错误。
说明
- Net 必须配置为
NetType.I2C - 地址采用 7 位格式(
0x00-0x7F),不是左移后的形式 pull_ups只在 Aardvark 适配器上有效;LabJack T7 和 LabJack U3 会忽略它write_read()用重复起始条件实现原子的寄存器读取- 默认扫描范围(
0x08-0x77)跳过保留地址 - 配置修改会持久化到
saved_nets.json,供后续命令使用 - LabJack T7 把请求的频率映射到一个时钟节流值,范围约为 130 Hz 至 450 kHz
- LabJack U3 约在 10 kHz 至 150 kHz 之间运行

