做网站类型长岛网站建设
学物联网,来万物简单IoT物联网!!
SPI 介绍
- 模块功能:
SPI串行外设驱动 
接口说明
SPI - 构建SPI对象
- 函数原型:SPI(id, baudrate,polarity, phase,sck, mosi, miso)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| id | int | Y | spi通道,可为1或2 | 
| baudrate | int | N | spi 波特率 | 
| polarity | int | N | spi极性 polarity是指 SCK 空闲时候的状态  | 
| phase | enum | N | spi相位 phase=0 表示SCK在第1个边沿开始取样 phase=1 表示SCK在第2个边沿开始取样  | 
| sck | object | Y | sck引脚对象 | 
| mosi | object | Y | mosi引脚对象 | 
| miso | object | Y | miso引脚对象 | 
- 返回值:
构建的SPI对象。 
SoftSPI - 构建软SPI对象
- 函数原型:SoftSPI(baudrate,polarity, phase,sck, mosi, miso)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| baudrate | int | N | spi 波特率 | 
| polarity | int | N | spi极性 polarity是指 SCK 空闲时候的状态  | 
| phase | enum | N | spi相位 phase=0 表示SCK在第1个边沿开始取样 phase=1 表示SCK在第2个边沿开始取样  | 
| sck | object | Y | sck引脚对象 | 
| mosi | object | Y | mosi引脚对象 | 
| miso | object | Y | miso引脚对象 | 
- 返回值:
构建的软SPI对象。 
read - 从SPI接收指定字节数的数据
- 函数原型:read(size)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| size | int | Y | 读取指定字节长度数据 | 
- 返回值:
buffer - 读取的数据区,长度为参数size 
write - 从SPI发送指定字节数的数据
- 函数原型:write(buffer)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| buffer | array[] | Y | 发送数据的缓冲区,期待发送的字节数为buffer的长度 | 
- 返回值:
无 
readinto - 从SPI接收指定字节数的数据,并放在缓冲区
- 函数原型:readinto(buffer)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| buffer | array[] | Y | 读取数据并存放在缓冲区 | 
- 返回值:
buffer - 读取的数据区,长度为参数size 
write_readinto - SPI先发送数据再接收数据
- 函数原型:write_readinto(sendbuf, recvbuf)
 - 参数说明:
 
| 参数 | 类型 | 必选参数? | 说明 | 
|---|---|---|---|
| sendbuf | array[] | Y | 发送数据的存储数组,期待发送的字节数为sendbuf的长度。 | 
| recvbuf | array[] | Y | 接收数据的存储数组,期待接收的字节数为recvbuf的长度。 | 
- 返回值:
无 - 案例代码
 
from machine import Pin, SoftSPI, SPI# 软SPI创建对象
spi = SoftSPI(baudrate=100000, polarity=1, phase=0, sck=Pin(0), mosi=Pin(2), miso=Pin(4))
# 硬件SPI创建对象
spi = SPI(1, 10000000, sck=Pin(14), mosi=Pin(13), miso=Pin(12))buf = bytearray(10)     # 建立缓冲区
buf = spi.read(10)      # 读取10字节数据spi.readinto(buf)       # 读取数据并存放在缓冲区 (这里读取10个字节)spi.write(b'12345')     # 在MOSI引脚上写5字节数据sendbuf = bytearray(40)      # 建立缓冲区
recvbuf = bytearray(40)      # 建立缓冲区
spi.write_readinto(sendbuf, recvbuf) # 先发送再接收数据

