@@ -49,6 +49,7 @@ QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, Pin
49
49
_qspi_io3 = io3;
50
50
_qspi_clk = sclk;
51
51
_qspi_cs = ssel;
52
+ _explicit_pinmap = NULL ;
52
53
_inst_width = QSPI_CFG_BUS_SINGLE;
53
54
_address_width = QSPI_CFG_BUS_SINGLE;
54
55
_address_size = QSPI_CFG_ADDR_SIZE_24;
@@ -65,6 +66,31 @@ QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, Pin
65
66
MBED_ASSERT (success);
66
67
}
67
68
69
+ QSPI::QSPI (const qspi_pinmap_t &pinmap, int mode) : _qspi()
70
+ {
71
+ _qspi_io0 = pinmap.data0_pin ;
72
+ _qspi_io1 = pinmap.data1_pin ;
73
+ _qspi_io2 = pinmap.data2_pin ;
74
+ _qspi_io3 = pinmap.data3_pin ;
75
+ _qspi_clk = pinmap.sclk_pin ;
76
+ _qspi_cs = pinmap.ssel_pin ;
77
+ _explicit_pinmap = &pinmap;
78
+ _inst_width = QSPI_CFG_BUS_SINGLE;
79
+ _address_width = QSPI_CFG_BUS_SINGLE;
80
+ _address_size = QSPI_CFG_ADDR_SIZE_24;
81
+ _alt_width = QSPI_CFG_BUS_SINGLE;
82
+ _alt_size = QSPI_CFG_ALT_SIZE_8;
83
+ _data_width = QSPI_CFG_BUS_SINGLE;
84
+ _num_dummy_cycles = 0 ;
85
+ _mode = mode;
86
+ _hz = ONE_MHZ;
87
+ _initialized = false ;
88
+
89
+ // Go ahead init the device here with the default config
90
+ bool success = _initialize_direct ();
91
+ MBED_ASSERT (success);
92
+ }
93
+
68
94
qspi_status_t QSPI::configure_format (qspi_bus_width_t inst_width, qspi_bus_width_t address_width, qspi_address_size_t address_size, qspi_bus_width_t alt_width, qspi_alt_size_t alt_size, qspi_bus_width_t data_width, int dummy_cycles)
69
95
{
70
96
// Check that alt_size/alt_width are a valid combination
@@ -255,6 +281,24 @@ bool QSPI::_initialize()
255
281
return _initialized;
256
282
}
257
283
284
+ // Note: Private helper function to initialize qspi HAL
285
+ bool QSPI::_initialize_direct ()
286
+ {
287
+ if (_mode != 0 && _mode != 1 ) {
288
+ _initialized = false ;
289
+ return _initialized;
290
+ }
291
+
292
+ qspi_status_t ret = qspi_init_direct (&_qspi, _explicit_pinmap, _hz, _mode);
293
+ if (QSPI_STATUS_OK == ret) {
294
+ _initialized = true ;
295
+ } else {
296
+ _initialized = false ;
297
+ }
298
+
299
+ return _initialized;
300
+ }
301
+
258
302
// Note: Private function with no locking
259
303
bool QSPI::_acquire ()
260
304
{
0 commit comments