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