FLASH 5 CLICK
PID: MIKROE-3780
Weight: 17 g
Flash 5 Click is a perfect solution for the mass storage option in various embedded
applications. It features the W25N01GVZEIG/IT (1G-bit) Serial SLC NAND Flash
Memory from Winbond which provides a storage solution for systems with limited
space, pins and power. The W25N SpiFlash family incorporates the popular SPI
interface and the traditional large NAND non-volatile memory space. They are ideal for
code shadowing to RAM, executing code directly from Dual/Quad SPI (XIP) and storing
voice, text and data.
The Flash 5 click is supported by a mikroSDK compliant library, which includes
functions that simplify software development. This Click board™ comes as a fully tested
product, ready to be used on a system equipped with the mikroBUS™ socket.
HOW DOES IT WORK?
The Flash 5 click is based on the W25N01GVZEIG/IT (1G-bit) Serial SLC NAND Flash
Memory from Winbond. The device operates on a single 3.3V power supply with current
consumption as low as 25mA active and 10µA for standby. All W25N SpiFlash family
devices are offered in space-saving packages which were impossible to use in the past
for the typical NAND flash memory.
The W25N01GVZEIG/IT 1G-bit memory array is organized into 65,536 programmable
pages of 2,048-bytes each. The entire page can be programmed at one time using the
data from the 2,048-Byte internal buffer. Pages can be erased in groups of 64 (128KB
block erase). The W25N01GVZEIG/IT has 1,024 erasable blocks.
The Flash 5 click uses the standard Serial Peripheral Interface (SPI), supporting SPI
clock frequencies of up to 104MHz. Besides that, the W25N01GVZEIG/IT provides a
new Continuous Read Mode that allows for efficient access to the entire memory array
with a single Read command. This feature is ideal for code shadowing applications.
Also, it offers the highest performance thanks to the Serial NAND Flash with 104MHz
Standard/Dual/Quad SPI clocks and a 50MB/S continuous data transfer rate. Given the
fact it has a efficient “Continuous Read Mode”, it allows direct read access to the entire
array. However, the performance also depends on the main MCU used with this Click
board™.
A Hold pin, Write Protect pin and programmable write protection, provide further control
flexibility. Additionally, the device supports JEDEC standard manufacturer and device
ID, one 2,048-Byte Unique ID page, one 2,048-Byte parameter page and ten 2,048-Byte
OTP pages. To provide better NAND flash memory manageability, user configurable
internal ECC, bad block management are also available in W25N01GVZEIG/IT.
The W25N01GVZEIG/IT is accessed through an SPI compatible bus consisting of four
signals: Serial Clock (CLK), Chip Select (/CS), Serial Data Input (DI) and Serial Data
Output (DO). Standard SPI instructions use the DI input pin to serially write instructions,
addresses or data to the device on the rising edge of CLK. The DO output pin is used to
read data or status from the device on the falling edge of CLK.
For the detailed explanation, please consult the included datasheet. However,
MikroElektronika provides a library which contains functions that simplify and speed up
working with this device. The provided application example demonstrates the
functionality of the library functions. It can be used as a reference for a custom project
development.
This Click Board™ is designed to be operated only with 3.3V logic level. A proper logic
voltage level conversion should be performed before the Click board™ is used with
MCUs with logic levels of 5V.
SPECIFICATIONS
Type
FLASH
Applications
A storage solution for systems with limited space, pins and power,
code shadowing to RAM, executing code directly from Dual/Quad
SPI (XIP) and storing voice, text and data.
On-board
modules
W25N01GVZEIG/IT (1G-bit) Serial SLC NAND Flash Memory from
Winbond
Key Features
W25N01GV: 1G-bit / 128M-byte, Compatible SPI serial flash
commands, On chip 1-Bit ECC for memory array, -40°C to +85°C
operating range
Interface
QSPI,SPI
Compatibility
mikroBUS
Click board
size
S (28.6 x 25.4 mm)
Input Voltage
3.3V
PINOUT DIAGRAM
This table shows how the pinout on the Flash 5 click corresponds to the pinout on the
mikroBUS™ socket (the latter shown in the two middle columns).
Notes
Write Protect
Pin
Pin
NC
1
AN
PWM
16
HLD
WP
2
RST
INT
15
NC
Notes
Hold
CS
3
CS
RX
14
NC
SPI Clock
SCK
4
SCK
TX
13
NC
SPI Data OUT/S01
SDO
5
MISO
SCL
12
NC
SPI Data IN/S00
SDI
6
MOSI
SDA
11
NC
Power Supply
3.3V
7
3.3V
5V
10
NC
Ground
GND
8
GND
GND
9
GND
Chip Select
Ground
ONBOARD SETTINGS AND INDICATORS
Label
Name
Default
LD1
PWR
-
Description
Power LED Indicator
SOFTWARE SUPPORT
We provide a library for the Flash 5 Click on our LibStock page, as well as a demo
application (example), developed using MikroElektronika compilers. The demo can run
on all the main MikroElektronika development boards.
Library Description
The library initializes and defines the SPI bus and drivers that offer a choice for writing
data in memory and reads data from memory. The library includes function for
controling configuration of the device, software reset and erasing memory.
Key functions:
void flash5_send_cmd ( uint8_t cmd_data ) - Sends one Byte of data
void flash5_page_read_memory ( uint16_t column_addr, uint8_t *data_buf, uint16_t buf_size
) - Reads data from memory to buffer
void flash5_page_load_memory ( uint16_t column_addr, uint8_t *data_buf, uint16_t buf_size
) - Writes data to memory from buffer
uint8_t flash5_read_status_data ( uint8_t status_cmd, uint8_t status_addr ) - Reads status
of selected status registar
void flash5_write_status_data ( uint8_t status_cmd, uint8_t status_addr, uint8_t
status_data ) - Writes status to selected status registar
void flash5_erase_chip ( void ) - Erases whole device memory
void flash5_software_reset ( void ) - Resets device
Examples description
The application is composed of three sections :
System Initialization - Initializes SPI module
Application Initialization - Initializes driver, resets device, erasing one page of memory, tests
communication and configures device
Application Task - Writes "MikroE" to device memory and then reads it and sends it to log
void applicationTask( )
{
uint8_t n_counter;
flash5_send_cmd( FLASH5_CMD_WRITE_ENABLE );
flash5_page_load_memory( 0x000A, &write_buf[ 0 ], 6 );
flash5_page_read_memory( 0x000A, &read_buf[ 0 ], 6 );
for( n_counter = 0; n_counter