SPI
– 串行外设接口¶
SPI由主机驱动的同步串行协议。总线的物理层包括3条线:SCK、MOSI、MISO,多个设备可共享同一总线。
每台设备应有一个单独的信号:SS(从属选择),在总线上选择一台特定设备以进行通信。
SS信号的处理应在用户编码(通过machine.Pin类)中进行。
使用示例¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # coding=utf-8
from machine import Pin, SPI
dc = Pin(28, Pin.OUT)
dc.value(0)
spi = SPI(id=1, baudrate=26000000, polarity=1, phase=0)
spi.write(bytearray([0xAE]))
spi.read(10)
buf = bytearray(4) # create a buffer
spi.write_readinto(b'1234', buf) # write to MOSI and read from MISO into the buffer
spi.write_readinto(buf, buf) # write buf to MOSI and read MISO back into buf
|
函数接口¶
-
machine_spi.
SPI
(id)[源代码]¶ 创建一个具有给定id的SPI对象。 id 的值取决于特定端口及其硬件, 不同设备支持的SPI端口号数目不同,请参考具体电路手册获取。
若无额外参数,创建SPI对象但未进行初始化(该对象有来自总线最后一次初始化的设置,若存在的话)。
若给定额外参数,则初始化总线。初始化参数,请参见 init 函数。
提前注意事项
建议在创建SPI对象的同时进行初始化。
-
machine_spi.
init
(baudrate=500000, polarity=0, phase=0, bits=8, firstbit=0)[源代码]¶ 使用给定参数初始化SPI总线:
- 参数
baudrate – SCK的时钟频率。
polarity – 可为0或1,并为闲置时钟线所在的层级
phase – 可为0或1,分别对应第一和第二时钟脉冲边缘的采样数据。
bits – 为每次传输的位宽。所有硬件都支持的位宽为8位。
firstbit – 每次SPI传输先传输最高位还是最低位: 0为最高位,1为最低位
mode – SPI工作模式:0为从模式, 1为主模式
- 返回
None
- 引发
ValueError – EINVAL
-
machine_spi.
read
(nbytes, write=0)[源代码]¶ 当持续写入由 write 给定的单个字节时,读取由 nbytes 指定的字节数。用读取的数据返回一个 bytes 对象。
- 参数
空 –
- 返回
ADC数值。