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