导入
方法
方法参考
Net.get(name, type=NetType.SPI)
按名称获取一个 SPI Net。
返回: SPI Net 实例
config(mode, bit_order, frequency_hz, word_size, cs_active, cs_mode)
配置 SPI 总线参数。只有显式给出的参数会被修改;省略的参数保留已保存的值。
config() 改变的是正在运行的脚本中的驱动。它不会把这些值写入 saved_nets.json。要把配置保存到 Net 上,请在 CLI 中使用 lager spi NET config。
SPI 模式
read(n_words, fill, keep_cs, output_format)
从 SPI 设备读取数据。接收数据的同时发送填充字节(全双工)。
返回:
list[int] - 收到的字,以整数表示(当 output_format="list" 时)
read_write(data, keep_cs, output_format)
同时进行全双工的 SPI 读写。在发送数据的同时接收返回数据。
返回:
list[int] - 收到的字(长度与发送的数据相同)
transfer(n_words, data, fill, keep_cs, output_format)
进行带自动补齐或截断的 SPI 传输。数据短于 n_words 时,用填充值补齐;长于 n_words 时截断。
返回:
list[int] - 收到的字
write(data, keep_cs)
向 SPI 设备写入数据,并丢弃返回数据。这是只写操作的便捷方法。
get_config()
获取该 Net 的原始配置字典。
dict - 完整的 Net 配置,包含名称、角色、仪器和参数
输出格式
output_format 参数决定数据以何种形式返回。十六进制格式会随字长变化:
示例
读取 SPI Flash 的 JEDEC ID
读取 Flash 存储器
用 keep_cs 进行多段事务
处于auto 片选模式的 LabJack U3 拒绝 keep_cs=True。在 U3 上,请使用下面的手动片选示例。
在 LabJack U3 上手动控制片选
U3 会在每次传输时把片选拉低,并在结束时释放。要在多次传输之间保持片选,或者驱动高电平有效的片选,请使用一个不带片选的 SPI Net,再用一个 GPIO Net 来控制片选。不带片选的 SPI Net 使用manual 片选模式。
写入 SPI Flash
16 位字模式
受支持的硬件
多通道 FTDI 适配器
FTDI Net 从 Net 记录的params.interface 取得通道,接受 A-D 或 0-3。请用 lager nets add --interface 设置它。没有 interface 的 Net 使用通道 A,在单通道的 FT232H 上这也是唯一的选择。
SPI 运行在 FTDI 芯片的 MPSSE 引擎上,而在 FT4232H 上只有通道 A 和 B 带有 MPSSE 引擎。对于 SPI Net,
lager nets add 会拒绝 C 和 D。手工改成 C 或 D 的 Net 记录会在该 Net 打开时失败,错误信息会指出该通道。
一块芯片上各类 Net 如何分配通道,请参阅 Nets。
LabJack U3
- 在 U3 上使用 SPI 需要 U3 硬件版本 1.21 或更高。
- 一次传输最多 50 字节:8 位字长时为 50 个字,16 位时为 25 个字,32 位时为 12 个字。超出的传输会抛出错误。
- 时钟约在 5.4 kHz 至 71.4 kHz 之间运行,并且绝不会超过
frequency_hz。超出该范围的请求会被钳位,并在脚本的标准错误输出上给出警告。 - 没有保存
frequency_hz的 Net 以最高速率运行。 cs_active="high"会抛出错误。在auto片选模式下,keep_cs=True会抛出错误。FIO0-FIO3不能承载 SPI。使用这些引脚的 Net 会让驱动抛出错误。
说明
- Net 必须配置为
NetType.SPI - 所有 SPI 操作都是全双工的;数据在发送的同时被接收
write()执行的也是全双工传输,只是丢弃了收到的数据keep_cs=True会在多次调用之间保持片选线有效,用于多段事务transfer()会用填充值补齐过短的数据数组,或把过长的数组截断到n_words- LabJack T7 每次事务最多支持 56 字节,最高速率约 800 kHz。多字节传输在请求速率约 1 kHz 至 800 kHz 之间时,实际以约 1 kHz 运行
- LabJack U3 每次事务最多支持 50 字节,速率约为 5.4 kHz 至 71.4 kHz
- Aardvark 采用 GPIO bit-bang 模式;无论
frequency_hz设为多少,实际速度都受 USB 往返时间限制 config()只对正在运行的脚本生效。lager spi NET config才会把配置保存到saved_nets.json- 低位在前模式(
bit_order="lsb")在 LabJack T7 上通过软件位反转实现

