SPI类 – 串行外设接口

SPI是由主机驱动的串行协议。其物理层包括3道线:SCK、MOSI、MISO。请参见I2C的用法示例;SPI十分类似。主要区别在于初始化SPI总线的参数:

构造函数

class machine.SPI(id, ...)

给定总线上构建一个SPI对象, id 。 id 的值取决于特定端口及其硬件。 值0、1等常用于选择硬件SPI block #0、#1等。值-1常用于SPI(若由端口支持)的位拆裂(软件)实现。”

若无额外参数,创建SPI对象但未进行初始化(该对象有来自总线最后一次初始化的设置,若存在的话)。 若给定额外参数,则初始化总线。初始化参数,请参见 init

方法

SPI.init(baudrate=1000000, *, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=None, mosi=None, miso=None, pins=(SCK, MOSI, MISO))

使用给定参数初始化SPI总线:

  • baudrate 为SCK的时钟频率。

  • polarity 可为0或1,并为闲置时钟线所在的层级。

  • phase 可为0或1,分别对应第一和第二时钟脉冲边缘的采样数据。

  • bits 为每次传输的位宽。所有硬件都支持的位宽为8位。

  • firstbit 可为 SPI.MSBSPI.LSB

  • sck, mosi, miso 是总线信号所用的引脚(machine.Pin)对象。对于大多数硬件SPI模块(由 id 参数选择并用于构造函数)而言,引脚为固定不可更改的。在某些情况下,硬件模块允许位硬件SPI模块设置2-3个可选引脚集。 只有在位拆裂SPI驱动中,任意引脚分配才有可能( id = -1)。

  • pins - WiPy port doesn’t sck, mosi, miso arguments, and instead allows to specify them as a tuple of pins parameter.

对于硬件SPI,实际时钟频率可能低于请求的波特率。这依赖于平台硬件。 实际速率可以通过打印SPI对象来确定。

SPI.deinit()

关闭SPI总线。

SPI.read(nbytes, write=0x00)

当持续写入由 write 给定的单个字节时,读取由 nbytes 指定的字节数。write 用读取的数据返回一个 bytes 对象。

SPI.readinto(buf, write=0x00)

当持续写入由 write 给定的单个字节时,读取入由 buf 指定的缓冲区。返回 None

注意:在WiPy中,该函数返回读取的字节数。

SPI.write(buf)

写入 buf 内包含的字节。返回 None.

注意:在WiPy中,该函数返回写入的字节数。

SPI.write_readinto(write_buf, read_buf)

读取入 read_buf 时,从 write_buf 中写入字节。缓冲区可为相同或不同的,但须有相同长度。返回 None

注意:在WiPy中,该函数返回写入的字节数。

常量

SPI.MASTER

将SPI总线初始化;仅适用于WiPy。

SPI.MSB

将首位设置为最重要的位。

SPI.LSB

将首位设置为最不重要的位。