@@ -389,15 +389,18 @@ qspi_status_t qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap, uint32_
389
389
static qspi_status_t _qspi_init_direct (qspi_t * obj , const qspi_pinmap_t * pinmap , uint32_t hz , uint8_t mode )
390
390
#endif
391
391
{
392
- OSPIM_CfgTypeDef OSPIM_Cfg_Struct = {0 };
393
392
debug_if (qspi_api_c_debug , "qspi_init mode %u\n" , mode );
394
393
395
394
// Reset handle internal state
396
395
obj -> handle .State = HAL_OSPI_STATE_RESET ;
397
396
398
397
// Set default OCTOSPI handle values
399
398
obj -> handle .Init .DualQuad = HAL_OSPI_DUALQUAD_DISABLE ;
400
- obj -> handle .Init .MemoryType = HAL_OSPI_MEMTYPE_MICRON ;
399
+ #if defined(TARGET_MX25LM51245G )
400
+ obj -> handle .Init .MemoryType = HAL_OSPI_MEMTYPE_MACRONIX ; // Read sequence in DTR mode: D1-D0-D3-D2
401
+ #else
402
+ obj -> handle .Init .MemoryType = HAL_OSPI_MEMTYPE_MICRON ; // Read sequence in DTR mode: D0-D1-D2-D3
403
+ #endif
401
404
obj -> handle .Init .ClockPrescaler = 4 ; // default value, will be overwritten in qspi_frequency
402
405
obj -> handle .Init .FifoThreshold = 4 ;
403
406
obj -> handle .Init .SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE ;
@@ -408,6 +411,9 @@ static qspi_status_t _qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap,
408
411
obj -> handle .Init .ClockMode = mode == 0 ? HAL_OSPI_CLOCK_MODE_0 : HAL_OSPI_CLOCK_MODE_3 ;
409
412
obj -> handle .Init .DelayHoldQuarterCycle = HAL_OSPI_DHQC_ENABLE ;
410
413
obj -> handle .Init .ChipSelectBoundary = 0 ;
414
+ #if defined(HAL_OSPI_DELAY_BLOCK_USED ) // STM32L5
415
+ obj -> handle .Init .DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_USED ;
416
+ #endif
411
417
412
418
// tested all combinations, take first
413
419
obj -> qspi = pinmap -> peripheral ;
@@ -426,15 +432,13 @@ static qspi_status_t _qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap,
426
432
#if defined(OCTOSPI1 )
427
433
if (obj -> qspi == QSPI_1 ) {
428
434
__HAL_RCC_OSPI1_CLK_ENABLE ();
429
- __HAL_RCC_OSPIM_CLK_ENABLE ();
430
435
__HAL_RCC_OSPI1_FORCE_RESET ();
431
436
__HAL_RCC_OSPI1_RELEASE_RESET ();
432
437
}
433
438
#endif
434
439
#if defined(OCTOSPI2 )
435
440
if (obj -> qspi == QSPI_2 ) {
436
441
__HAL_RCC_OSPI2_CLK_ENABLE ();
437
- __HAL_RCC_OSPIM_CLK_ENABLE ();
438
442
__HAL_RCC_OSPI2_FORCE_RESET ();
439
443
__HAL_RCC_OSPI2_RELEASE_RESET ();
440
444
}
@@ -461,6 +465,11 @@ static qspi_status_t _qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap,
461
465
pin_function (pinmap -> ssel_pin , pinmap -> ssel_function );
462
466
pin_mode (pinmap -> ssel_pin , PullNone );
463
467
468
+ #if defined(OCTOSPI2 )
469
+ __HAL_RCC_OSPIM_CLK_ENABLE ();
470
+
471
+ OSPIM_CfgTypeDef OSPIM_Cfg_Struct = {0 };
472
+
464
473
/* The OctoSPI IO Manager OCTOSPIM configuration is supported in a simplified mode in mbed-os
465
474
* QSPI1 signals are mapped to port 1 and QSPI2 signals are mapped to port 2.
466
475
* This is coded in this way in PeripheralPins.c */
@@ -482,6 +491,7 @@ static qspi_status_t _qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap,
482
491
debug_if (qspi_api_c_debug , "HAL_OSPIM_Config error\n" );
483
492
return QSPI_STATUS_ERROR ;
484
493
}
494
+ #endif
485
495
486
496
return qspi_frequency (obj , hz );
487
497
}
0 commit comments