DM00091013
DM00091013
User manual
STM32 Advanced NAND Flash Driver for SLC NAND
Introduction
The NAND driver library for STM32 is a generic library from which STM32 can access
NAND with advanced features like garbage collection, wear leveling, bad block
management, ECC checking etc.
The NAND Flash driver supports dynamic NAND Flash detection based on the Device ID.
The driver automatically detects the mounted SLC NAND Flash and works accordingly
(described in more detail in Section 2.8). This solution runs on the STM32F1, STM32F2 &
STM32F4 series of microcontrollers using the FSMC interface.
The board can run in two modes: USB Mass Storage mode and Standalone mode.
In USB Mass Storage mode, the NAND Flash works as USB mass storage media.
In Standalone mode, the .bmp images stored in the ‘pics’ folder of the root directory are
read using FatFS file system, and displayed on the onboard TFT LCD.
Six evaluation boards are available for this SLC NAND FLASH Driver:
STEVAL_CCM006V1: USB mass storage mode demo using STM32F103ZET6
STEVAL_CCM006V2: Standalone mode demo using STM32F103ZET6
STEVAL_CCM007V1: USB Mass Storage mode Demo using STM32F205ZET6
STEVAL_CCM007V2: Standalone mode Demo using STM32F205ZET6
STEVAL_CCM008V1: USB Mass Storage mode Demo using STM32F405ZGT6
STEVAL_CCM008V2: Standalone mode Demo using STM32F405ZGT6
NAND is a non-volatile Flash memory device where address lines are multiplexed with data
input/output and commands input. The NAND driver library has the following features:
1. Supports both FAT file system and USB MSC device.
2. Supports SLC NAND with page size of 512 Bytes & 2 KBytes.
3. Garbage collection.
4. Wear leveling.
5. Bad block management.
6. ECC check.
This document applies to the following microcontrollers:
STM32L151xD, STM32L152xD, STM32L1562xD.
STM32F405/415, STM32F407/417, STM32F427/437, STM32F429/439 lines.
STM32F2 Series.
STM32F103xC, STM32F103xD and STM32F103xE, STM32F103xF, STM32F103xG,
STM32F101xC, STM32F101xD and STM32F101xE, STM32F101xF, STM32F101xG,
STM32F100xC, STM32F100xD, STM32F100xE.
Contents
4 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
List of tables
List of figures
This document describes how to connect a NAND Flash device to an STM32 family
microcontroller and communicate using FSMC. NAND driver library for STM32 is a generic
library where STM32 can access NAND with some advanced features like garbage
collection, wear leveling, bad block management, ECC checking etc. The library supports
both FAT file system and USB MSC device.
STM32 Lib
File System
FTL Interface
MS33215V1
Bulk-only-transport (BOT)
A general BOT transaction is based on a simple basic state machine. It begins with ready
state (idle state) and if a CBW is received from the host three cases can be managed:
DATA-OUT-STAGE: when direction flag is set to 0, Device shall prepare itself to receive
an amount of data indicated in dCBWDataTransferLength in the CBW block. At the end
of data transfer a CSW is returned with the remaining data length and the STATUS
field.
DATA-IN-STAGE: when direction flag is set to 1, Device shall prepare itself to send an
amount of data indicated in dCBWDataTransferLength in the CBW block. At the end of
data transfer a CSW is returned with the remaining data length and the STATUS field.
ZERO DATA: no data stage is needed so CSW block is sent immediately after CBW.
The BOT transport protocol encapsulates SCSI commands and transfers them in three
steps:
1. Send the command block CBW.
2. Transfer data.
3. Return the status of the block CSW.
Ready
Command transport
CBW
Status
Transport
MS33216V1
#define BOT_CBW_PACKET_LENGTH 31
#define CSW_DATA_LENGTH 13
#define SEND_CSW_DISABLE 0
#define SEND_CSW_ENABLE 1
#define DIR_IN 0
#define DIR_OUT 1
#define BOTH_DIR 2
1.3 FSMC
The FSMC block is able to communicate with the synchronous and asynchronous memory.
Its main purpose is to:
Translate the AHB protocol transactions of external devices
Respect the access time of external devices
The FSMC provides a single access to an external device.
The FSMC has four blocks:
AHB Interface
Controller NOR Flash / PSRAM
Controller NAND Flash / PC Card
Interface to external device
The FSMC generates the appropriate signals to drive the NAND Flash memory.
The FSMC controller consists of two blocks of code error correction hardware. They reduce
the workload on the host processor when processing code error correction by the system
software. These two blocks are identical and are respectively associated with banks 2 and
3. The ECC algorithm used in the FSMC can perform 1- and 2-bit error detection.
Block 0 0x000
Page 0
Block 1 Data
Page 1 +
Spare area
Page m 0x83F
2K Physical pages
Physical block
or
Block N 0X000
Data
Block N-1
Spare area 0x200
0x20F
512 Physical page (unit)
Physical zone
MS33217V1
The spare area contains information about the page and the code error correction:
For small page (512 + 16 Byte) NAND Flash:
I/O 8-15 Data Input/Outputs: for x16 devices. The I/O pins are used to input data,
address, command and output data during read operation.
I/O 0-7 Data Input/Outputs: Address Inputs, or Command Inputs for x8 and x16 devices.
ALE Address Latch Enable: When active, an address can be written.
CLE Command Latch Enable: This pin should be LOW while writing commands to the
command register.
CE/ Chip Enable: The CE input enables the device. Signal is active low. If the signal
is inactive the device will be in standby.
RE/ Read Enable: The RE input is the serial data out control. Signal is active low to
out data.
RB/ Ready/Busy (open-drain output) The RB output provides the status of the device
operation. It is an open drain output, hence should be connected to a GPIO with
pull-up.
LOW: a program, erase or read operation is in process.
HIGH: the process is complete.
WE/ Write Enable: The WE input controls write operations to I/O port. Commands,
data and address are latched on the rising edge of WE.
WP/ Write Protect: Typically connected to Vcc, but may also be connected to a GPIO.
USB_Istr
main
CTR_LP
Set_SystemA
Write_Memory
MAL_Config
MAL_Write
MAL_Init
NAND_Write
NAND_Init
NAND_WearLeveling No
SBLK_NAND_WearLeveling
MS33218V1
OTG_FS_IRQHandler
main USBD_OTG_ISR_Handler
DCD_HandleOutEP_ISR
NAND_Init
USBD_DataOutStage
Yes Is another Zone
NAND_CleanLUT
requested?
USBD_MSC_DataOut
No
NAND_WearLeveling
Write in current Zone MSC_BOT_Data_Out
of NAND Flash
SCSI_ProcessCmd
No
Small Block SCSI_Write10
NAND?
LBLK_NAND_WearLeveling Yes SCSI_ProcessWrite
SBLK_NAND_WearLeveling
STORAGE_Write
NAND_Write
MS33219V1
The above figure gives an overview of the firmware flow with respect to the way the Wear
Leveling Mechanism is implemented.
Let us consider a scenario in which the host is trying to send the data to the controller via
USB and write it to the NAND Flash. The corresponding CBW has to be decoded. The
function given below is called in such a case, to write to the memory which uses the
information provided from the CBW
2.3 ECC
Unlike NOR Flash memory that does not require error correction code, NAND memory
needs to ensure data integrity.
The disadvantage of the NAND configuration is that when a cell is read, the sense amplifier
detects a signal much lower than for the NOR configuration because many transistors are in
series. Therefore access to a cell is not straightforward and must necessarily go through all
the cells in series which reduces precision and makes code error correction required.
There are three error correction codes:
The Hamming code can correct only one bit error.
The Reed Solomon code can correct more errors.
The BCH code can correct many errors and is more efficient than Reed Solomon.
0 1 0 1 Even quarters
0 1 0 1 Even halves
Data packet 0 1 0 1 0 1 0 1
0 1 0 1 Odd bits
0 1 0 1 Odd quarters
0 0 0 0 Odd halves
MS33220V1
After the partition of the data packet, the parity of each group is calculated to generate two
values of ECC. The results are concatenated to form the ECC values.
ECC even = 0 ^ 1 ^ 0 ^ 1, 0 ^ 1 ^ 0 ^ 1, 1 ^ 1 ^ 1 ^ 1 = 000
ECC odd = 0 ^ 1 ^ 0 ^ 1, 0 ^ 1 ^ 0 ^ 1, 0 ^ 0 ^ 0 ^ 0 = 000
These ECC bits allow us to identify the error position when the data packet is analyzed at a
later date. Data packets require larger number of ECC values. Each data packet of 2n-bit
ECC requires a value of n bits.
Based on this calculation, both the data packet and the ECC values are programmed into
the NAND Flash memory. Later, when the data packet is read from the NAND, the ECC
values are recalculated. Data corruption is indicated when the values of the newly
calculated ECC differ from those programmed into the NAND Flash.
Applying “exclusive or” to all four values of ECC (two old and two new), one can determine
whether one or more bits have been corrupted. If the result is 000 there is no corruption. If
the result is 111 then a single bit is wrong. If two or more bits were damaged, this code
allows the detection of two errors and the correction of only one bit.
ECCeven (old) ^ ECCodd (old) ^ ECCeven (new) ^ ECCodd (new)
When the result shows that a bit has been corrupted, the address of this bit can be identified
by the application of “exclusive or” on both ECC odd values
ECCodd (old) ^ ECCodd (new)
The erroneous bit position is identified by the position of the 1 in the "exclusive or" value.
No No
All results >1 bit
= zero? = zero?
Yes
12 bit No
= one?
MS33221V1
Start
Block No
status Update bad block table
=FFh?
Yes
Last No
block?
Yes
End
MS33222V1
NAND
Main
USB
MAL_
Config
MAL_Init Set_USBClock
USB_Interrupts_Config
USB_Init
disk_initialize
read write
disk_read disk_write
NAND_Post_Write
MS32851V1
Table 4. NAND_Init
Function name NAND_Init.
Prototype uint16_t NAND_Init(void)
Behavior description Initializes NAND Interface
Input parameter None
Status of NAND Initialization. This parameter can be:
Output parameter – NAND_OK: when the NAND is OK.
– NAND_FAIL: when NAND fails to initialize.
Table 5. NAND_Write
Function name NAND_Write.
uint16_t NAND_Write(uint32_t Memory_Offset,
Prototype uint8_t *Writebuff,
uint16_t Transfer_Length)
Behavior description Writes one sector at once
Memory_Offset: Memory Offset.
Input parameter Writebuff: Pointer to the data to be written.
Transfer_Length: Number of byte to write.
Status of NAND Write. This parameter can be:
Output parameter – NAND_OK: when the NAND Write is successful
– NAND_FAIL: when NAND fails to Write.
Table 6. NAND_Read
Function name NAND_Read.
uint16_t NAND_Read(uint32_t Memory_Offset,
Prototype uint8_t *Readbuff,
uint16_t Transfer_Length)
Behavior description Reads sectors.
Memory_Offset: Memory Offset.
Input parameter Readbuff: Pointer to store the read data.
Transfer_Length: Number of byte to read.
Status of NAND Read. This parameter can be:
Output parameter – NAND_OK: when the NAND Read is successful.
– NAND_FAIL: when NAND fails to Read.
Table 7. NAND_WriteECC
Function name NAND_WriteECC.
uint16_t NAND_WriteECC(uint32_t Memory_Offset,
Prototype uint8_t *Writebuff,
uint16_t NumByte)
Behavior description Writes one sector & copy rest Block during ECC Correctable Error Case.
Memory_Offset: Memory Offset.
Input parameter Writebuff: Pointer to the data to be written.
Transfer_Length: Number of byte to write.
Status of NAND Write. This parameter can be:
Output parameter – NAND_OK: when the NAND Write is successful
– NAND_FAIL: when NAND fails to Write
Table 8. NAND_PostWriteECC
Function name NAND_PostWriteECC.
Prototype uint16_t NAND_PostWriteECC(void)
Behavior description Copies whole block after writing corrected page in ECC Correction.
Input parameter None
Output parameter Status of NAND Write.
Table 9. NAND_CleanLUT
Function name NAND_CleanLUT.
Prototype uint16_t NAND_CleanLUT (uint8_t ZoneNum)
Behavior description Rebuilds the Look Up Table.
Input parameter ZoneNbr: Zone Number to Rebuild the Look Up Table.
Status of NAND Build look up table. This parameter can be:
Output parameter – NAND_OK: when the NAND Clean is successful.
– NAND_FAIL: when NAND fails to clean look up table.
The firmware supports other manufacturer's NAND Flash with same device ID without any
change to hardware or firmware.
The code size for the NAND Flash Driver files (nand_drv.c & fsmc_nand_if.c) is
JTAG connector
TFT connector
MS33246V1
RESET switch
STM32
Voltage Regulator
NAND Flash NAND Flash socket footprint USB High Speed PHY*
MS33245V1
Note: The USB High Speed section is only present in STEVAL-CCM007V1, STEVAL-CCM007V2,
STEVAL-CCM008V1 and STEVAL-CCM008V2.
3.2 Schematics
Figure 13. Microcontroller schematic
GND
R1
PG14_TSCREEN_INT
GND
3V3
PG10_FSMC_NE3
R2
PB5_OTG_HS_ULPI_D7
0 Ohm
PA14_JTAG_JTCK
PB4_JTAG_JNTRST
PA15_JTAG_JTDI
10K
PB3_JTAG_JTDO
PD4_FSMC_NOE
PD1_FSMC_D3
PD0_FSMC_D2
PG9_FSMC_NCE3
PD7_FSMC_NCE2
PD6_FSMC_NWAIT
PD5_FSMC_NWE
SW1
R3
PB7_I2C1_SDA
PB6_I2C1_SCL
3V3
NRST 0 Ohm
PB9
PB8
N
PUSH BUTT ON
GND
3V3
GND
3V3
C1 R
R4 3V3
100nF 10K
144
143
142
141
140
139
138
137
136
135
134
133
132
131
130
129
128
127
126
125
124
123
122
121
120
119
118
117
116
115
114
113
112
111
110
109
U1
VDD_SA
VDD_3
PE1
PE0
PB9
PB8
BOOT0
PB7
PB6
PB5
PB4
PB3
PG15
VDD_11
VSS_11
PG14
PG13
PG12
PG11
PG10
PG9
PD7
PD6
VDD_10
VSS_10
PD5
PD4
PD3
PD2
PD1
PD0
PC12
PC11
PC10
PA15
PA14
D1
R5
PE2 GND PE2 1 108 3V3
PE2 VDD_2
PE3 2 107 GND
1K PE3 VSS_2 VCAP
3 106
PE4 VCAP_2
TEST_LED1 4 105 PA13_JTAG_JTMS
PE5 PA13
5 104 PA12_OTG_FS_DP_USB
D2 PE6 PA12
6 103 PA11_OTG_FS_DM_USB
R6 VBAT PA11
7 102 PA10_OTG_FS_ID_USB
PC13-TAMPER-RTC PA10
PE3 GND 8 101 PA9_OTG_FS_VBUS_USB
PC14-OSC32_IN PA9
9 100
1K PC15-OSC32_OUT PA8
PF0_FSMC_ADDR_A0 10 99
PF0 PC9
TEST_LED2 11 98
PF1 PC8
12 97
PF2 PC7
13 96
PH0_OSC_IN
14
PF3
PF4
STM32F103ZET6/ PC6
VDD_9
95 3V3
C2 15 94
20pF GND 16
PF5 STM32F205ZET6/ VSS_9
93
GND
VSS_5 PG8 PG8_USB_PU
3V3 17
18
VDD_5 STM32F405ZGT6 PG7
92
91
PG7_FSMC_INT3
PF6 PG6 PG6_FSMC_INT2
Y1 19 90
PF7 PG5
25MHz 20 89
PF8 PG4
21 88
R7 PF9 PG3
22 87
C3 PH1_OSC_OUT PF10 PG2
PH0_OSC_IN 23 86 PD15_FSMC_D1
20pF OSC_IN PD15
PH1_OSC_OUT 24 85 PD14_FSMC_D0
390 OSC_OUT PD14
NRST 25 84 3V3
NRST VDD_8
PC0_OTG_HS_ULPI_STP 26 83 GND
PC0 VSS_8
27 82
PC1 PD13
PC2_OTG_HS_ULPI_DIR 28 81 PD12_FSMC_ADDR_A17
PC2 PD12
PC3_OTG_HS_ULPI_NXT 29 80 PD11_FSMC_ADDR_A16
PC3 PD11
For STM32F10xx 30 79 PD10_FSMC_D15
GND R8 GND VDD_12 PD10
Y1----- 8MHz 31 78 PD9_FSMC_D14
VSSA PD9
0 Ohm 32 77 PD8_FSMC_D13
3V3 VREF+ PD8
For STM32F2xxx & STM32F4xxx 33
VDDA PB15
76
Y1------ 25MHz 34 75
PA0_WKUP PB14
35 74 PB13_OTG_HS_ULPI_D6
PA1 PB13
36 73
PB2-BOOT1
R9 PA2 PB12 PB12_OTG_HS_ULPI_D5
3V3
VCAP_1
0 Ohm
VDD_4
VDD_6
VDD_7
VDD_1
VSS_4
VSS_6
VSS_7
PE10
PE11
PE12
PE13
PE14
PE15
PB10
PB11
PF11
PF12
PF13
PF14
PF15
PG0
PG1
PC4
PC5
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PE7
PE8
PE9
VCAP TP1
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1
C4 C5
2.2uF 2.2uF TEST POINT
10K
3V3
3V3
3V3
3V3
R10
GND
GND
GND
For STM32F10xx VCAP
PE7_FSMC_D4
PE8_FSMC_D5
PE9_FSMC_D6
PE10_FSMC_D7
PE11_FSMC_D8
PE12_FSMC_D9
PE13_FSMC_D10
PE14_FSMC_D11
PE15_FSMC_D12
PB0_OTG_HS_ULPI_D1
PB1_OTG_HS_ULPI_D2
PA5_OTG_HS_ULPI_CK
PB10_OTG_HS_ULPI_D3
PB11_OTG_HS_ULPI_D4
Mount --- R1,R8,R11
PA3_OTG_HS_ULPI_D0
GND
0 Ohm
GND
1 3V3
2 PB8
3 GND
1K
CONN TRBLK 3
3V3
CONN TRBLK 3
MS33224V1
J4
USB5V_FS 1 6
USB_VCC SHELL
2 7
USBDM SHELL
3 8
C22 USBDP SHELL
4 9
ID SHELL
10uF 5
USB_GND
USB_MINIA/B TYPE
PA9_OTG_FS_VBUS_USB
R31
PA11_OTG_FS_DM_USB R32 1M C23
22 4.7nF
PA12_OTG_FS_DP_USB R34
22
PA10_OTG_FS_ID_USB R36
0
U4
1 6 D3
I/O1 I/O1
2 5
GND VBUS R40
3 4
I/O2 I/O2 1k
USBLC6-2P6
LED_GREEN
MS33225V1
3V3_HS
XTAL1
XTAL2
C27 C28 C29 C30 R43
10K
0.1uF 0.1uF 0.1uF 0.1uF
C36
4.7uF
31
16
30
25
27
28
6
U6
D6
R44 1K
REG_EN
VDD3.3
VDD3.3
VDD3.3
VDD3.3
XO
XI
33
GNDPAD LED_GREEN
1
GND
PA3_OTG_HS_ULPI_D0 24 2
DATA0 GND
PB0_OTG_HS_ULPI_D1 23 3
DATA1 CPEN
PB1_OTG_HS_ULPI_D2 22 10 J7
DATA2 EXTVBUS R46 12K
PB10_OTG_HS_ULPI_D3 21 32 L1
DATA3 RBIAS USB5V_HS
PB11_OTG_HS_ULPI_D4 20 4 1
DATA4 VBUS R47 820 USB_VCC
PB12_OTG_HS_ULPI_D5 19 8 2 6
DATA5 DM USBDM SHELL
PB13_OTG_HS_ULPI_D6 18 7 3
DATA6 DP USBDP BEAD
PB5_OTG_HS_ULPI_D7 17 5 4 7
DATA7 ID ID SHELL
5
VDDA1.8
USB_GND
CLKOUT
VDD1.8
VDD1.8
RESET
NXT
STP
DIR
9
11
12
13
14
15
29
26
USB3300
PC3_OTG_HS_ULPI_NXT
PC0_OTG_HS_ULPI_STP
PA5_OTG_HS_ULPI_CK
PC2_OTG_HS_ULPI_DIR
C41 XTAL1
33pF
C42
Y2 R50
24MHz 1M 0.1uF C43
C46 C44
0.1uF 4.7uF
C45 XTAL2
33pF 4.7uF 3V3 R52
3V3_HS
0
MS33226V1
R57
TSC_YU
TSC_XR
TSC_YD
TSC_XL
AGND GND
0
AGND
AGND
12
11
10
U7
IN3
IN2
GND
IN1
TSC_XR 13
X+
8
L2 IN0
3V3 14
VIO
7
BEAD TSC_YU DATA_IN 3V3
15
C37 Y+
1uF C38
STMPE811 6
100nF VCC C39 C40
TSC_XL 16 5 SDAT 100nF 10uF
X- SDAT
SCLK
INT
AGND
A0
Y-
AGND 3V3
1
R49
PG14_TSCREEN_INT
R48 4.7K
TSC_YD SCLK
AGND
4.7K
22
SCLK R51 PB6_I2C1_SCL
22
SDAT R53 PB7_I2C1_SDA
R54 3V3
10k
C47
100nF
AGND MS33227V1
PG10_FSMC_NE3 1 2 PF0_FSMC_ADDR_A0
PD5_FSMC_NWE 3 4 PD4_FSMC_NOE
NRST 5 6 PD14_FSMC_D0
PD15_FSMC_D1 7 8 PD0_FSMC_D2
PD1_FSMC_D3 9 10 PE7_FSMC_D4
PE8_FSMC_D5 11 12 PE9_FSMC_D6
PE10_FSMC_D7 13 14 PE11_FSMC_D8
PE12_FSMC_D9 15 16 PE13_FSMC_D10
PE14_FSMC_D11 17 18 PE15_FSMC_D12
PD8_FSMC_D13 19 20 PD9_FSMC_D14
PD10_FSMC_D15 21 22 GND
5V0 23 24 3V3
3V3 25 26 GND
GND 27 28 5V0
29 30
TSC_XL 31 32 TSC_XR
TSC_YD 33 34 TSC_YU
35 36
37 38
39 40
CONNECTOR20x2
MS33228V1
STPS1L30U U5
GND 1 8
GND NC C26
D5 2 7
VOUT VOUT 10uF
3 6
5V0 VOUT VOUT
USB5V_HS 4 5
VIN NC
STPS1L30U LD1117D33 TR
C48 C35
10uF 100nF
R45 D7
GND 3V3
1k LED_GREEN
MS33229V1
R56
3V3 3V3_NAND2
R55
3V3 3V3_NAND1 0 Ohm
0 Ohm
PG6_FSMC_INT2 PG7_FSMC_INT3
DocID025024 Rev 1
PD7_FSMC_NCE2 R26 0 Ohm 4 45 PG9_FSMC_NCE3 R30 0 Ohm 4 45
NC NC NC NC
5 44 PE10_FSMC_D7 5 44 PE10_FSMC_D7
22 Ohm NC I/O7 22 Ohm NC I/O7
6 43 PE9_FSMC_D6 6 43 PE9_FSMC_D6
NC I/O6 NC I/O6
7 42 PE8_FSMC_D5 7 42 PE8_FSMC_D5
R33 RB I/O5 R35 RB I/O5
PD4_FSMC_NOE 8 41 PE7_FSMC_D4 PD4_FSMC_NOE 8 41 PE7_FSMC_D4
R I/O4 R I/O4
3V3_NAND1 9 40 3V3_NAND2 9 40
E NC E NC
10 39 10 39
10K NC NC 10K NC NC
11 38 11 38
NC NC NC NC
3V3_NAND1 12 37 3V3_NAND1 3V3_NAND2 12 37 3V3_NAND2
VDD VDD VDD VDD
GND 13 36 GND GND 13 36 GND
VSS VSS VSS VSS
14 35 14 35
NC NC NC NC
15 34 15 34
NC NC NC NC
PD11_FSMC_ADDR_A16 16 33 PD11_FSMC_ADDR_A16 16 33
CL NC CL NC
PD12_FSMC_ADDR_A17 17 32 PD1_FSMC_D3 PD12_FSMC_ADDR_A17 17 32 PD1_FSMC_D3
AL I/O3 AL I/O3
PD5_FSMC_NWE 18 31 PD0_FSMC_D2 PD5_FSMC_NWE 18 31 PD0_FSMC_D2
W I/O2 W I/O2
Figure 19. NAND Flash schematic
19 30 PD15_FSMC_D1 19 30 PD15_FSMC_D1
R41 WP I/O1 R42 WP I/O1
20 29 PD14_FSMC_D0 20 29 PD14_FSMC_D0
NC I/O0 NC I/O0
3V3_NAND1 21 28 3V3_NAND2 21 28
C24 NC NC C25 NC NC
22 27 22 27
10K 100nF NC NC 10K 100nF NC NC
23 26 23 26
NC NC NC NC
24 25 24 25
NC NC NC NC
MS33230V1
41/45
NAND evaluation board
44
NAND evaluation board UM1653
PD14_FSMC_D0 1
PD15_FSMC_D1 2
PD0_FSMC_D2 3
PD1_FSMC_D3 4
PE7_FSMC_D4 5
PE8_FSMC_D5 6
PE9_FSMC_D6 7
PE10_FSMC_D7 8
PD11_FSMC_ADDR_A16 9
PD12_FSMC_ADDR_A17 10
PD4_FSMC_NOE 11
PD5_FSMC_NWE 12
PD7_FSMC_NCE2 13
PG9_FSMC_NCE3 14
PG6_FSMC_INT2 15
PG7_FSMC_INT3 16
PD6_FSMC_NWAIT 17
GND 18
3V3 19
GND 20
CON20
MS33231V1
J5 R23
1 3V3 0
2
3 PB4_JTAG_JNTRST R24
4 10k
5 PA15_JTAG_JTDI
6
7 PA13_JTAG_JTMS
NRST
8
9 PA14_JTAG_JTCK
10
11 RTCK
12
13 PB3_JTAG_JTDO
14
15 NRST R37
16 10k
17 DBGRQ R38
18 10k
19 DBGACK R39
20 10k
JTAG_CONN
MS33232V1
4 Revision history
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the
right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any
time, without notice.
All ST products are sold pursuant to ST’s terms and conditions of sale.
Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no
liability whatsoever relating to the choice, selection or use of the ST products and services described herein.
No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this
document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products
or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such
third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS
OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
ST PRODUCTS ARE NOT DESIGNED OR AUTHORIZED FOR USE IN: (A) SAFETY CRITICAL APPLICATIONS SUCH AS LIFE
SUPPORTING, ACTIVE IMPLANTED DEVICES OR SYSTEMS WITH PRODUCT FUNCTIONAL SAFETY REQUIREMENTS; (B)
AERONAUTIC APPLICATIONS; (C) AUTOMOTIVE APPLICATIONS OR ENVIRONMENTS, AND/OR (D) AEROSPACE APPLICATIONS
OR ENVIRONMENTS. WHERE ST PRODUCTS ARE NOT DESIGNED FOR SUCH USE, THE PURCHASER SHALL USE PRODUCTS AT
PURCHASER’S SOLE RISK, EVEN IF ST HAS BEEN INFORMED IN WRITING OF SUCH USAGE, UNLESS A PRODUCT IS
EXPRESSLY DESIGNATED BY ST AS BEING INTENDED FOR “AUTOMOTIVE, AUTOMOTIVE SAFETY OR MEDICAL” INDUSTRY
DOMAINS ACCORDING TO ST PRODUCT DESIGN SPECIFICATIONS. PRODUCTS FORMALLY ESCC, QML OR JAN QUALIFIED ARE
DEEMED SUITABLE FOR USE IN AEROSPACE BY THE CORRESPONDING GOVERNMENTAL AGENCY.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void
any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any
liability of ST.
ST and the ST logo are trademarks or registered trademarks of ST in various countries.
Information in this document supersedes and replaces all information previously supplied.
The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.