类: SPI
约 843 字大约 3 分钟
2024-05-04
构建固件和导入到JS
该类没有直接导出, 只能从 serial 模块导入该类的实例:
import { spi1 } from "serial"简介
SPI 总线类
用于配置和管理 ESP32 的 SPI 总线。SPI 是一种高速同步串行通信协议, 常用于连接显示屏、SD 卡、以太网模块、传感器等外设。
ESP32 通常有 3 个 SPI 总线(SPI1、SPI2、SPI3),其中:
- SPI1 通常用于连接 Flash,不建议用户使用
- SPI2 和 SPI3 可供用户自由使用
serial 模块会自动创建 SPI 实例并通过 spi1, spi2(部分型号有 spi3)导出。 用户直接通过 serial 模块访问这些实例,无需手动创建。
不同芯片型号导出的 SPI 对象不同:
- ESP32/ESP32-S3:spi1, spi2
- ESP32-C2/C3/C6/H2:spi1, spi2
- ESP32-P4:spi1, spi2, spi3
示例:
import * as serial from "serial"
// 访问 SPI2 总线实例(推荐)
const spi = serial.spi2
// 配置 SPI 引脚
spi.setup({
miso: 19, // MISO 引脚(可选)
mosi: 23, // MOSI 引脚(可选)
sck: 18 // 时钟引脚(必需)
})
// 获取总线编号
console.log("SPI 总线:", spi.spiNum())类方法
方法 spiNum
原型: spiNum ()
获取当前 SPI 实例的总线编号
示例:
import * as serial from "serial"
// 获取 SPI2 总线实例
const spi = serial.spi2
// 获取总线编号
console.log(spi.spiNum()) // 输出: 2返回值:
类型number
说明SPI 总线编号
方法 setup
原型: setup (options:object)
配置并初始化 SPI 总线
初始化 SPI 总线,配置引脚和传输参数。SPI 总线初始化后, 可以被多个 SPI 设备共享使用(通过不同的 CS 引脚)。
示例:
import * as serial from "serial"
// 获取 SPI2 总线实例
const spi = serial.spi2
// 基本配置(半双工模式,只需要 MOSI 和 SCK)
let ret = spi.setup({
mosi: 23, // MOSI 引脚
sck: 18 // 时钟引脚
})
if(ret != 0) {
console.log("SPI 初始化失败")
}
// 全双工配置(需要 MISO、MOSI 和 SCK)
const spi2 = serial.spi2
ret = spi2.setup({
miso: 19, // MISO 引脚
mosi: 23, // MOSI 引脚
sck: 18, // 时钟引脚
max_transfer_sz: 4096 // 最大传输字节数
})
// 与 W5500 以太网模块配合使用
import { W5500 } from "eth"
const eth = new W5500()
// 先初始化 SPI 总线
const spi = serial.spi2
spi.setup({
mosi: 23,
miso: 19,
sck: 18
})
// 然后初始化 W5500(使用相同的 SPI 总线)
eth.setup({
spi: 2, // 使用 SPI2(对应 serial.spi2)
cs: 5 // CS 引脚
})
// 与 SD 卡配合使用
import { SDCard } from "sdcard"
const sd = new SDCard()
// 使用 SPI2 初始化 SD 卡
sd.setup({
spi: 2, // 使用 SPI2(对应 serial.spi2)
cs: 13, // CS 引脚
mount: "/sd" // 挂载路径
})参数:
options
类型object (详见下方类型定义)
参数说明配置选项对象
options 类型定义:
{ miso?: number, // MISO 引脚 GPIO 编号,默认 -1 mosi?: number, // MOSI 引脚 GPIO 编号,默认 -1 sck: number, // SCK 引脚 GPIO 编号(必需) quadwp_io_num?: number, // Quad WP IO 编号,默认 -1 quadhd_io_num?: number, // Quad HD IO 编号,默认 -1 max_transfer_sz?: number // 最大传输大小,默认 20480 }
异常:
- SPI 总线初始化失败
返回值:
类型number
说明错误代码,0 表示成功
