CMSIS-Driver Implementations: Flash

| CMSIS-Driver Implementations Version 2.7.0 MCU independent device driver implementations and template files of the CMSIS-Driver API specification

- Main Page
- Usage and Description

All Pages
Flash

# Driver Implementations

The ARM::CMSIS-Driver Pack contains implementations of CMSIS-Flash drivers for the following devices:

Driver | Description
--- | ---
AM29x800BB | Flash interface for Parallel NOR Flash AM29x800BB. This product is discontinued.
AT45DB641E | Flash interface for SPI Serial DataFlash AT45DB641E.
AT45DB642D | Flash interface for SPI Serial DataFlash AT45DB642D.
M29EW28F128 | Flash interface for Parallel NOR Flash M29EW28F128.
M29W640FB | Flash interface for Parallel NOR Flash M29W640FB.
N25Q032A | Serial NOR Flash. Device info.
S29GL064Nx2 | Flash interface for Parallel NOR Flash S29GL064N.

# Multiple Driver Instances

CMSIS-Driver API supports multiple driver instances. The Flash drivers are implemented within a single C module and several driver instances of the same type can be used in a project as follows:

- Add the first driver instance to the project. In IDEs with CMSIS-pack management support this can be done from the Run-Time Environment (RTE).
- Create a copy of the driver's .c file with a different file name and add it to the project. This will be the second driver instance. For example, copy `AT45DB641E.c` file as `AT45DB641E_2.c`.
- Copy the driver's .h file to the project or add the driver's folder to the compiler include search path.
- Specify the driver parameters for the second instance based on the hardware design. For example, in `AT45DB641E_2.c` the values for the flash driver number and SPI driver number need to be configured as shown below:
  #define DRIVER_FLASH_NUM 1
  #define DRIVER_SPI_NUM 1
- Now both Flash instances can be accessed from the application. For example:
  #include "Driver_Flash.h"
  /* Flash driver instances */
  extern ARM_DRIVER_FLASH Driver_Flash0;
  extern ARM_DRIVER_FLASH Driver_Flash1;
  #define flash0 (&Driver_Flash0)
  #define flash1 (&Driver_Flash1)