这是最新(主)开发分支的文档。如果您正在查找以前版本的文档,使用左侧的下拉菜单选择所需的版本。

SPI Master Soft (GPIO 模拟) 同步收发示例

功能概述

本应用程序启动后将依次执行以下操作:

  1. 初始化 SPI Master Soft (GPIO 模拟)

    通过软件模拟的方式,利用 GPIO 引脚实现 SPI 主设备的功能。这种方式无需硬件 SPI 模块,但可能会受到 CPU 时钟频率的影响,导致实际工作频率与预设值存在偏差。

  2. 调用 SPI Master Soft (GPIO 模拟) 异步收发接口

    发送 256 字节数据,同时接收 256 字节数据。同步收发机制允许程序在数据传输过程中继续执行其他任务,提高系统效率。

注意事项

  • 由于 GPIO 模拟的限制,实际工作频率可能与预设值存在偏差,且最大频率受 CPU 时钟的影响。

  • 如果对频率的准确性或速率有更高要求,建议使用硬件 SPI Master。

环境要求

  1. 硬件连接

引脚配置存储在 Device Table 中,用户可通过设备名进行定义查询。 本示例中默认配置下 W800 的 GPIO 序号与 SPI Master 接口的对应关系如下表所示,实际配置应参考 Device Table,默认配置储存在选定芯片型号下的 “device_table.toml” 或 “wm_dt_hw.c”,具体使用方式可参考设备表章节:

GPIO 序号 引脚编号 连接描述
WM_GPIO_NUM_27 PB11 CS
WM_GPIO_NUM_26 PB10 MOSI
WM_GPIO_NUM_25 PB9 MISO
WM_GPIO_NUM_24 PB8 CLOCK
  • 用户需确保 Slave 设备与 SPI Master 的引脚已正确连接。

  • 当前示例中 SPI 模式为 Mode 0 (CPOL = 0,CPHA = 0),时钟频率为 2 MHz。

  1. Slave 设备准备 Slave 端需提前启动,处于接收等待状态,并准备好要发送的数据。

编译和烧录

  1. 示例代码位置 示例代码位于 examples/peripheral/spi_master_soft/transceive_sync

  2. 编译和烧录操作 请参考 快速入门

运行结果

成功运行后,程序将输出如下日志:

[I] (2) main: ver: 2.3-beta.2 build at Apr  2 2025 09:37:38
[I] (2) main: boot reason 0
[I] (2) main: heap size 272608(266.22KB)
[I] (3) main: flash size 0x200000(2MB)
[I] (4) exam_spim_soft: spi master async transecie start.
[I] (30) exam_spim_soft: enter example_spim_sync_callback, result:0
[I] (30) exam_spim_soft: rx data as below
[I] (30) exam_spim_soft: dump [rx data]
0x0000   31 32 33 34 35 36 37 38  39 30 31 31 32 33 34 35  1234567890112345
0x0010   36 37 38 39 30 31 32 33  34 35 36 37 38 39 30 31  6789012345678901
0x0020   32 33 34 35 36 37 38 39  30 31 32 33 34 35 36 37  2345678901234567
0x0030   38 39 30 31 32 33 34 35  36 37 38 39 30 31 32 33  8901234567890123
0x0040   34 35 36 37 38 39 30 31  32 33 34 35 36 37 38 39  4567890123456789
0x0050   30 31 32 33 34 35 36 37  38 39 30 31 32 33 34 35  0123456789012345
0x0060   36 37 38 39 30 31 32 33  34 35 36 37 38 39 30 31  6789012345678901
0x0070   32 33 34 35 36 37 38 39  30 31 32 33 34 35 36 37  2345678901234567
0x0080   38 39 30 31 32 33 34 35  36 37 38 39 30 31 32 33  8901234567890123
0x0090   34 35 36 37 38 39 30 31  32 33 34 35 36 37 38 39  4567890123456789
0x00a0   30 31 32 33 34 35 36 37  38 39 30 31 32 33 34 35  0123456789012345
0x00b0   36 37 38 39 30 31 32 33  34 35 36 37 38 39 30 31  6789012345678901
0x00c0   32 33 34 35 36 37 38 39  30 31 32 33 34 35 36 37  2345678901234567
0x00d0   38 39 30 31 32 33 34 35  36 37 38 39 30 31 32 33  8901234567890123
0x00e0   34 35 36 37 38 39 30 31  32 33 34 35 36 37 38 39  4567890123456789
0x00f0   30 31 32 33 34 35 36 37  38 39 30 31 32 33 34 35  0123456789012345

以上日志显示了程序的版本信息、堆大小、闪存大小以及接收到的数据内容。