@@ -7,11 +7,11 @@ nRF54L15 porting guide
7
7
:local:
8
8
:depth: 2
9
9
10
-
This page provides a comprehensive overview of the code structure, file hierarchy, and essential configurations and requirements needed to successfully port and implement an sQSPI aplication on the nRF54L15 device.
10
+
This page provides a comprehensive overview of the code structure, file hierarchy, and essential configurations and requirements needed to successfully port and implement an sQSPI application on the nRF54L15 device.
11
11
12
12
.. _nrf54l15_porting_guide_code:
13
13
14
-
sQSPI Application code
14
+
sQSPI application code
15
15
**********************
16
16
17
17
This structure shows the relevant files and directories in the `sdk-nrfxlib`_ repository:
@@ -67,16 +67,16 @@ The following list is a detailed breakdown of the necessary paths:
67
67
68
68
#ifndef NRFX_CONFIG_H__
69
69
#define NRFX_CONFIG_H__
70
-
70
+
71
71
#include "softperipheral_regif.h" // To Resolve correct VPR IRQn for the SoC.
72
72
#define nrf_sqspi_irq_handler SP_VPR_IRQHandler
73
-
73
+
74
74
#define NRF_SQSPI_ENABLED (1)
75
75
#define NRF_SQSPI_MAX_NUM_DATA_LINES (4)
76
76
#define NRF_SQSPI_SP_FIRMWARE_ADDR 0x2003c000
77
77
//^ This address is user defined, the location for the sQSPI firmware
78
-
79
-
78
+
79
+
80
80
#endif // NRFX_CONFIG_H__
81
81
82
82
Compiling source files
@@ -176,8 +176,8 @@ In some cases you might have to modify the sQSPI driver configuration.
176
176
For example, when changing pin drive strength to guarantee signal integrity for a new PCB design.
177
177
You must address these cases on the sQSPI application code:
178
178
179
-
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_gpio_cfg` variable to ``true``, the GPIO configuration is not managed by the sQSPI driver and it must be manually handled by the application.
180
-
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_pmux_cfg` variable to ``true``, the GPIO multiplexing is not managed by the sQSPI driver and it must be manually handled by the application.
179
+
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_gpio_cfg` variable to ``true``, the GPIO configuration is not managed by the sQSPI driver and it must be manually handled by the application.
180
+
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_pmux_cfg` variable to ``true``, the GPIO multiplexing is not managed by the sQSPI driver and it must be manually handled by the application.
181
181
182
182
The following code snippet shows how the application code can allocate the required pins and override the sQSPI driver's default configuration:
183
183
@@ -256,10 +256,10 @@ The following code snippet shows how the application code can enable and disable
256
256
bool result = true;
257
257
uint32_t gpiohs_bias_val;
258
258
uint32_t gpiohs_ctrl_val;
259
-
259
+
260
260
gpiohs_bias_val = 0x7;
261
261
NRF_GPIOHSPADCTRL->BIAS = gpiohs_bias_val;
262
-
262
+
263
263
gpiohs_ctrl_val =
264
264
(0xF << GPIOHSPADCTRL_CTRL_DATAENABLE_Pos) |
265
265
(0x1 << GPIOHSPADCTRL_CTRL_CSNEN_Pos) |
@@ -275,15 +275,15 @@ The following code snippet shows how the application code can enable and disable
275
275
}
276
276
return result;
277
277
}
278
-
278
+
279
279
bool disable_delayed_sampling(void) {
280
280
bool result = true;
281
281
uint32_t gpiohs_bias_val;
282
282
uint32_t gpiohs_ctrl_val;
283
-
283
+
284
284
gpiohs_bias_val = 0x7;
285
285
NRF_GPIOHSPADCTRL->BIAS = gpiohs_bias_val;
286
-
286
+
287
287
gpiohs_ctrl_val = (0x0 << GPIOHSPADCTRL_CTRL_DATAENABLE_Pos) |
288
288
(0x0 << GPIOHSPADCTRL_CTRL_CSNEN_Pos) |
289
289
(0x0 << GPIOHSPADCTRL_CTRL_SCKPHASE_Pos) |
@@ -323,7 +323,7 @@ The following code snippet shows how the application code can reset **P2** pins:
323
323
// NRF_GPIO_PIN_INPUT_DISCONNECT, NRF_GPIO_PIN_NOPULL,
324
324
// NRF_GPIO_PIN_E0E1, NRF_GPIO_PIN_NOSENSE);
325
325
}
326
-
326
+
327
327
void set_serialPadE0E1(nrf_sqspi_dev_cfg_t qspi_dev_config){
328
328
nrf_gpio_cfg(m_qspi_config.pins.sck, NRF_GPIO_PIN_DIR_OUTPUT,
329
329
NRF_GPIO_PIN_INPUT_DISCONNECT, NRF_GPIO_PIN_NOPULL,
@@ -350,7 +350,7 @@ The following code snippet shows how the application code can enable and disable
350
350
nrf_sqspi_spi_lines_t mspi_lines) {
351
351
#pragma GCC diagnostic push
352
352
#pragma GCC diagnostic ignored "-Wmissing-braces"
353
-
353
+
354
354
nrf_sqspi_dev_cfg_t qspi_dev_config = {
355
355
.csn_pin = NRF_PIN_PORT_TO_PIN_NUMBER(5, 2),
356
356
.sck_freq_khz = sck_freq_khz,
@@ -363,27 +363,27 @@ The following code snippet shows how the application code can enable and disable
363
363
.mspi_ddr = NRF_SQSPI_SPI_DDR_SINGLE,
364
364
.spi_clk_stretch = false,
365
365
.xip_cfg = NRF_SQSPI_SPI_XIP_MODE_DISABLED}}};
366
-
366
+
367
367
if (!enable_delayed_sampling(2)) {
368
368
error_exit();
369
369
}
370
-
370
+
371
371
#pragma GCC diagnostic pop
372
-
372
+
373
373
static uint16_t context = 0x45b1;
374
374
if (nrf_sqspi_dev_cfg(p_qspi, &qspi_dev_config, done_callback, &context) !=
375
375
NRFX_SUCCESS) {
376
376
error_exit();
377
377
}
378
-
378
+
379
379
set_serialPadE0E1(qspi_dev_config);
380
380
}
381
-
381
+
382
382
void configure_hs_r(nrf_sqspi_t *p_qspi, uint32_t sck_freq_khz,
383
383
nrf_sqspi_spi_lines_t mspi_lines) {
384
384
#pragma GCC diagnostic push
385
385
#pragma GCC diagnostic ignored "-Wmissing-braces"
386
-
386
+
387
387
nrf_sqspi_dev_cfg_t qspi_dev_config = {
388
388
.csn_pin = NRF_PIN_PORT_TO_PIN_NUMBER(5, 2),
389
389
.sck_freq_khz = sck_freq_khz,
@@ -396,19 +396,19 @@ The following code snippet shows how the application code can enable and disable
396
396
.mspi_ddr = NRF_SQSPI_SPI_DDR_SINGLE,
397
397
.spi_clk_stretch = false,
398
398
.xip_cfg = NRF_SQSPI_SPI_XIP_MODE_DISABLED}}};
399
-
399
+
400
400
if (!enable_delayed_sampling(2)) {
401
401
error_exit();
402
402
}
403
-
403
+
404
404
#pragma GCC diagnostic pop
405
-
405
+
406
406
static uint16_t context = 0x45b1;
407
407
if (nrf_sqspi_dev_cfg(p_qspi, &qspi_dev_config, done_callback, &context) !=
408
408
NRFX_SUCCESS) {
409
409
error_exit();
410
410
}
411
-
411
+
412
412
set_serialPadS0S1();
413
413
set_serialPadE0E1(qspi_dev_config);
414
414
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4