SPI Engine#
SPI Engine is a highly flexible and powerful SPI controller framework. It consist out of multiple sub-modules which communicate over well defined interfaces. This allows a high degree of flexibility and re-usability while at the same time staying highly customizable and easily extensible.
The core component of the SPI Engine framework is a lean but powerful fully programmable execution module, which implements the SPI bus control logic. The SPI Engine execution module is controlled by a command stream which is generated by a separate module. Different command stream manager modules are available and can be used depending on the system requirements. For example a software controlled memory mapped command stream offers high flexibility, while a offload core which executes a pre-programmed command stream when triggered by an external event allows for very low latency response times. By using a SPI Engine interconnect it is possible to connect multiple command stream manager modules to a SPI Engine execution module.
Sub-modules#
SPI Engine Execution Module: Main module which processes a SPI engine command stream and implements the SPI bus interface logic.
AXI SPI Engine Module: Memory mapped software accessible interface to a SPI Engine command stream and/or offload cores.
SPI Engine Offload Module: Stores a SPI Engine command stream, execution is triggered by an external event.
SPI Engine Interconnect Module: Connects multiple SPI Engine command streams to a SPI Engine execution module.
Interfaces#
SPI Engine Control Interface: SPI Engine command stream.
SPI Engine Offload Control Interface: Program the command stream stored in a offload module.
SPI Bus Interface: Low-level SPI bus interface.
Software#
Linux Driver: Linux driver for the SPI Engine framework.
SPI Engine Instruction Set Specification: Overview of the SPI Engine Instruction format.
Examples#
CN0363: Colorimeter application using the AD7175-2 Sigma-Delta ADC.
adaq7980-sdz: A 16-bit ADC subsystem with four common signal processing and conditioning blocks.
ad5766: 16-channel, 16-/12-bit, voltage output Digital-to-Analog Converters (DAC).
CN0363: The AD7768-1 is a low power, high performance, Σ-Δ analog-to-digital converter (ADC).
projects/ad40xx_fmc Evaluation Board for the AD4000 Series 16-/18-/20-Bit Precision SAR ADCs.
AD469x: 16-Bit, 16-Channel, 500 kSPS/1 MSPS, Easy Drive Multiplexed SAR ADC.
AD4630-24 / AD4030-24 / AD4630-16: 16/24-Bit, 2 MSPS Single or Dual Channel SAR ADC.
Additional Resources#
Software Support#
No-OS project at drivers/axi_core/spi_engine
No-OS driver at drivers/axi_core/spi_engine/spi_engine.c
Linux project at drivers/spi
Linux driver at drivers/spi/spi-axi-spi-engine.c
References#
HDL IP core at library/spi_engine