Skip to content

Commit 96d9a8f

Browse files
committed
Merge branch 'MX25LM51245G_QSPI_test_config' of git://github.com/LMESTM/mbed into dev_rollup
2 parents 206e52c + 8cd00b3 commit 96d9a8f

File tree

23 files changed

+733
-143
lines changed

23 files changed

+733
-143
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2018-2018 ARM Limited
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
#ifndef MBED_QSPI_FLASH_MX25LM51245G_H
17+
#define MBED_QSPI_FLASH_MX25LM51245G_H
18+
19+
20+
#define QSPI_FLASH_CHIP_STRING "macronix MX25LM51245G"
21+
22+
// Command for reading status register
23+
#define QSPI_CMD_RDSR 0x05
24+
// Command for reading configuration register
25+
#define QSPI_CMD_RDCR0 0x15
26+
#define QSPI_CMD_RDCR1 0x71
27+
// Command for writing status/configuration register
28+
#define QSPI_CMD_WRSR 0x01
29+
// Command for reading security register
30+
#define QSPI_CMD_RDSCUR 0x2B
31+
32+
// Command for setting Reset Enable
33+
#define QSPI_CMD_RSTEN 0x66
34+
// Command for setting Reset
35+
#define QSPI_CMD_RST 0x99
36+
37+
// Command for setting write enable
38+
#define QSPI_CMD_WREN 0x06
39+
// Command for setting write disable
40+
#define QSPI_CMD_WRDI 0x04
41+
42+
// WRSR operations max time [us] (datasheet max time + 15%)
43+
#define QSPI_WRSR_MAX_TIME 34500 // 30ms
44+
// general wait max time [us]
45+
#define QSPI_WAIT_MAX_TIME 100000 // 100ms
46+
47+
48+
// Commands for writing (page programming)
49+
// Only single/octal mode supported with this memory
50+
// So only single 1-1-1 mode in this QSPI config
51+
#define QSPI_CMD_WRITE_1IO 0x02 // 1-1-1 mode
52+
// write operations max time [us] (datasheet max time + 15%)
53+
#define QSPI_PAGE_PROG_MAX_TIME 11500 // 10ms
54+
55+
#define QSPI_PAGE_SIZE 256 // 256B
56+
#define QSPI_SECTOR_SIZE 4096 // 4kB
57+
#define QSPI_SECTOR_COUNT 2048
58+
59+
// Commands for reading
60+
// Only single/octal mode supported with this memory
61+
// So only single 1-1-1 mode in this QSPI config
62+
#define QSPI_CMD_READ_1IO_FAST 0x0B // 1-1-1 mode
63+
#define QSPI_CMD_READ_1IO 0x03 // 1-1-1 mode
64+
65+
#define QSPI_READ_1IO_DUMMY_CYCLE 0
66+
#define QSPI_READ_FAST_DUMMY_CYCLE 8
67+
68+
// Commands for erasing
69+
#define QSPI_CMD_ERASE_SECTOR 0x20 // 4kB
70+
//#define QSPI_CMD_ERASE_BLOCK_32 // not supported, only ersae block 64
71+
#define QSPI_CMD_ERASE_BLOCK_64 0xD8 // 64kB
72+
#define QSPI_CMD_ERASE_CHIP 0x60 // or 0xC7
73+
74+
// erase operations max time [us] (datasheet max time + 15%)
75+
#define QSPI_ERASE_SECTOR_MAX_TIME 480000 // 400 ms
76+
#define QSPI_ERASE_BLOCK_64_MAX_TIME 2400000 // 2s
77+
78+
// max frequency for basic rw operation (for fast mode)
79+
#define QSPI_COMMON_MAX_FREQUENCY 1000000
80+
81+
#define QSPI_STATUS_REG_SIZE 1 //2 ??
82+
#define QSPI_CONFIG_REG_0_SIZE 1
83+
#define QSPI_CONFIG_REG_1_SIZE 1
84+
#define QSPI_SECURITY_REG_SIZE 1
85+
#define QSPI_MAX_REG_SIZE 2
86+
87+
// status register
88+
#define STATUS_BIT_WIP (1 << 0) // write in progress bit
89+
#define STATUS_BIT_WEL (1 << 1) // write enable latch
90+
#define STATUS_BIT_BP0 (1 << 2) //
91+
#define STATUS_BIT_BP1 (1 << 3) //
92+
#define STATUS_BIT_BP2 (1 << 4) //
93+
#define STATUS_BIT_BP3 (1 << 5) //
94+
//#define STATUS_BIT_QE (1 << 6) // Not supported
95+
//#define STATUS_BIT_SRWD (1 << 7) // Not supported
96+
97+
// configuration register 0
98+
// bit 0, 1, 2, 4, 5, 7 reserved
99+
#define CONFIG0_BIT_TB (1 << 3) // Top/Bottom area protect
100+
101+
#endif // MBED_QSPI_FLASH_MX25LM51245G_H

TESTS/mbed_hal/qspi/flash_configs/flash_configs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
#elif defined(TARGET_DISCO_F769NI)
3333
#include "MX25L51245G_config.h" // MX25L51245G
3434

35+
#elif defined(TARGET_DISCO_L4R9I)
36+
#include "MX25LM51245G_config.h" // MX25LM51245G
37+
3538
#elif defined(TARGET_DISCO_L476VG)
3639
#include "N25Q128A_config.h" // N25Q128A13EF840E
3740
/* See STM32L476 Errata Sheet, it is not possible to use Dual-/Quad-mode for the command phase */

TESTS/mbed_hal/qspi/main.cpp

Lines changed: 18 additions & 0 deletions
Large diffs are not rendered by default.

TESTS/mbed_hal/qspi/qspi_test_utils.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,19 @@ struct Qspi {
7777

7878

7979
#define READ_1_1_1 MODE_1_1_1, QSPI_CMD_READ_1IO, QSPI_READ_1IO_DUMMY_CYCLE
80+
#ifdef QSPI_CMD_READ_1I2O
8081
#define READ_1_1_2 MODE_1_1_2, QSPI_CMD_READ_1I2O, QSPI_READ_1I2O_DUMMY_CYCLE
82+
#endif
83+
#ifdef QSPI_CMD_READ_2IO
8184
#define READ_1_2_2 MODE_1_2_2, QSPI_CMD_READ_2IO, QSPI_READ_2IO_DUMMY_CYCLE
85+
#endif
86+
#ifdef QSPI_CMD_READ_1I4O
8287
#define READ_1_1_4 MODE_1_1_4, QSPI_CMD_READ_1I4O, QSPI_READ_1I4O_DUMMY_CYCLE
88+
#endif
89+
#ifdef QSPI_CMD_READ_4IO
8390
#define READ_1_4_4 MODE_1_4_4, QSPI_CMD_READ_4IO, QSPI_READ_4IO_DUMMY_CYCLE
91+
#endif
92+
8493
#ifdef QSPI_CMD_READ_DPI
8594
#define READ_2_2_2 MODE_2_2_2, QSPI_CMD_READ_DPI, QSPI_READ_2IO_DUMMY_CYCLE
8695
#endif

targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F413xH/objects.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,6 @@ struct trng_s {
4444
RNG_HandleTypeDef handle;
4545
};
4646

47-
struct qspi_s {
48-
QSPI_HandleTypeDef handle;
49-
PinName io0;
50-
PinName io1;
51-
PinName io2;
52-
PinName io3;
53-
PinName sclk;
54-
PinName ssel;
55-
};
56-
5747
#include "common_objects.h"
5848

5949
#ifdef __cplusplus

targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F469xI/objects.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ struct trng_s {
5858
RNG_HandleTypeDef handle;
5959
};
6060

61-
struct qspi_s {
62-
QSPI_HandleTypeDef handle;
63-
PinName io0;
64-
PinName io1;
65-
PinName io2;
66-
PinName io3;
67-
PinName sclk;
68-
PinName ssel;
69-
};
70-
7161
#include "common_objects.h"
7262

7363
#ifdef __cplusplus

targets/TARGET_STM/TARGET_STM32F4/common_objects.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,23 @@ struct can_s {
143143
};
144144
#endif
145145

146+
#if DEVICE_QSPI
147+
struct qspi_s {
148+
#if defined(OCTOSPI1)
149+
OSPI_HandleTypeDef handle;
150+
#else
151+
QSPI_HandleTypeDef handle;
152+
#endif
153+
QSPIName qspi;
154+
PinName io0;
155+
PinName io1;
156+
PinName io2;
157+
PinName io3;
158+
PinName sclk;
159+
PinName ssel;
160+
};
161+
#endif
162+
146163
#ifdef __cplusplus
147164
}
148165
#endif

targets/TARGET_STM/TARGET_STM32F7/TARGET_STM32F746xG/objects.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ struct trng_s {
5858
RNG_HandleTypeDef handle;
5959
};
6060

61-
struct qspi_s {
62-
QSPI_HandleTypeDef handle;
63-
PinName io0;
64-
PinName io1;
65-
PinName io2;
66-
PinName io3;
67-
PinName sclk;
68-
PinName ssel;
69-
};
70-
7161
#include "common_objects.h"
7262

7363
#ifdef __cplusplus

targets/TARGET_STM/TARGET_STM32F7/TARGET_STM32F756xG/objects.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ struct trng_s {
5858
RNG_HandleTypeDef handle;
5959
};
6060

61-
struct qspi_s {
62-
QSPI_HandleTypeDef handle;
63-
PinName io0;
64-
PinName io1;
65-
PinName io2;
66-
PinName io3;
67-
PinName sclk;
68-
PinName ssel;
69-
};
70-
7161
#include "common_objects.h"
7262

7363
#ifdef __cplusplus

targets/TARGET_STM/TARGET_STM32F7/TARGET_STM32F769xI/objects.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ struct trng_s {
5858
RNG_HandleTypeDef handle;
5959
};
6060

61-
struct qspi_s {
62-
QSPI_HandleTypeDef handle;
63-
PinName io0;
64-
PinName io1;
65-
PinName io2;
66-
PinName io3;
67-
PinName sclk;
68-
PinName ssel;
69-
};
70-
7161
#include "common_objects.h"
7262

7363
#ifdef __cplusplus

0 commit comments

Comments
 (0)