Skip to main content
在 Box 与 SPI 外设之间移入、移出数据,可以完全控制模式、位序、字长和片选。

句柄

方法

类型

SpiConfig

值为 None 的字段保留该 Net 已保存的值。设置了的内容会实时应用并持久化到 Box 上

SpiOptions

SpiTransfer

方法参考

configure(config: &SpiConfig) -> Result<SpiEffectiveConfig>

应用设置并回读实际生效的内容。

read(n_words: u32, opts: &SpiOptions) -> Result<SpiTransfer>

移入 n_words 个字,每个字对应移出一个 opts.fill

write(data: &[u32], opts: &SpiOptions) -> Result<SpiTransfer>

恰好移出 data。SPI 是全双工的,因此同一次事务中移入的字会在结果里返回 —— 一次写入同时也是一次读取。

read_write(data: &[u32], opts: &SpiOptions) -> Result<SpiTransfer>

恰好按 data 进行全双工传输。

transfer(data: &[u32], n_words: u32, opts: &SpiOptions) -> Result<SpiTransfer>

恰好传输 n_words 个字,用填充字补齐 data 或者把它截断。

示例

读取 Flash 芯片的 JEDEC ID

在两次事务之间保持片选

处于 auto 片选模式的 LabJack U3 拒绝 keep_cs: true。在 U3 上,请使用一个不带片选的 SPI Net,并用一个 GPIO Net 来驱动片选。

受支持的硬件

说明

  • opts.fill 只会在 read()transfer() 时发送。write()read_write() 恰好移出给定的数据,因此填充字对它们没有意义。
  • 每一次传输都会返回 word_size,因为配置为 16 位字的总线返回的是每字一项,而不是每字节一项。
  • 事务在 Box 上、在该设备的锁之下运行,因此一次多字传输不会被同一设备上的另一个请求打断。
  • configure() 会跨测试持久化。请把您所依赖的设置显式设好,而不是想当然。