littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C++的AceSPI库

项目简介

AceSPI是用于Arduino平台的库,它提供统一接口以选择硬件或软件SPI实现。包含硬件SPI(使用digitalWrite()digitalWriteFast())和软件SPI(使用shiftOut()digitalWriteFast())的实现,适用于向SPI从设备发送数据,但不支持从SPI从设备读取数据。

项目的主要特性和功能

  1. 统一接口:提供HardSpiInterfaceHardSpiFastInterfaceSimpleSpiInterfaceSimpleSpiFastInterface四种SPI接口实现。
  2. 编译时多态性:实现编译时多态,避免运行时多态开销,减少内存消耗。
  3. 灵活选择:允许用户根据项目需求选择最适合的SPI实现方式。
  4. 资源优化:提供不同SPI实现方式的资源消耗(闪存和静态内存)信息,帮助用户做出最佳选择。

安装使用步骤

安装库

在Arduino IDE中,打开“库管理器”,搜索“AceSPI”,然后点击安装。

包含头文件

在你的Arduino项目中,包含AceSPI库的头文件: ```cpp

include

```

选择SPI接口

根据需求选择合适的SPI接口实现。例如,使用硬件SPI接口: cpp using ace_spi::HardSpiInterface;

初始化SPI接口

setup()函数中初始化SPI接口: cpp void setup() { SPI.begin(); spiInterface.begin(); }

发送数据

使用提供的接口方法,如send8()send16()等,向SPI从设备发送数据: cpp void loop() { uint8_t data = 0x55; spiInterface.send8(data); delay(1000); }

资源消耗

闪存和静态内存

  • HardSpiInterface:522字节闪存,5字节RAM
  • HardSpiFastInterface:428字节闪存,1字节RAM
  • SimpleSpiInterface:480字节闪存,3字节RAM
  • SimpleSpiFastInterface:62字节闪存,0字节RAM

CPU周期

  • HardSpiInterface:平均117个周期
  • HardSpiFastInterface:平均30个周期
  • SimpleSpiInterface:平均891个周期
  • SimpleSpiFastInterface:平均76个周期

系统要求

支持的硬件

  • Arduino Nano
  • SparkFun Pro Micro
  • STM32 Blue Pill
  • NodeMCU 1.0
  • WeMos D1 Mini
  • ESP32 dev board
  • Teensy 3.2

工具链

  • Arduino IDE 1.8.19
  • Arduino CLI 0.20.2
  • SpenceKonde ATTinyCore 1.5.2
  • Arduino AVR Boards 1.8.4
  • Arduino SAMD Boards 1.8.9
  • SparkFun AVR Boards 1.1.13
  • SparkFun SAMD Boards 1.8.6
  • STM32duino 2.2.0
  • ESP8266 Arduino 3.0.2
  • ESP32 Arduino 2.0.2
  • Teensyduino 1.56

许可证

AceSPI库使用MIT许可证,允许用户在商业或非商业项目中自由使用、修改和分发。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】