@@ -483,7 +483,9 @@ static uint32_t dosfs_sflash_nor_identify(dosfs_sflash_t *sflash)
483483 QSPI_COMMAND_DATA_SINGLE | QSPI_COMMAND_ADDRESS_SINGLE | QSPI_COMMAND_INSTRUCTION_SINGLE | 0x0b );
484484#endif
485485
486- return data_size ;
486+ stm32l4_qspi_unselect (& sflash -> qspi );
487+
488+ return data_size ;
487489}
488490
489491static bool dosfs_sflash_nor_erase (dosfs_sflash_t * sflash , uint32_t address )
@@ -2447,9 +2449,11 @@ static int dosfs_sflash_format(void *context)
24472449 int status = F_NO_ERROR ;
24482450
24492451#if (DOSFS_CONFIG_SFLASH_SIMULATE_TRACE == 1 )
2450- printf ("SFLASH_INFO \n" );
2452+ printf ("SFLASH_FORMAT \n" );
24512453#endif /* (DOSFS_CONFIG_SFLASH_SIMULATE_TRACE == 1) */
24522454
2455+ stm32l4_qspi_select (& sflash -> qspi );
2456+
24532457 dosfs_sflash_ftl_format (sflash );
24542458
24552459 if (!dosfs_sflash_ftl_mount (sflash ))
@@ -2463,6 +2467,8 @@ static int dosfs_sflash_format(void *context)
24632467 sflash -> state = DOSFS_SFLASH_STATE_READY ;
24642468 }
24652469
2470+ stm32l4_qspi_unselect (& sflash -> qspi );
2471+
24662472 return status ;
24672473}
24682474
@@ -2482,6 +2488,8 @@ static int dosfs_sflash_reclaim(void *context, uint32_t size)
24822488 }
24832489 else
24842490 {
2491+ stm32l4_qspi_select (& sflash -> qspi );
2492+
24852493 if (size < sflash -> xlate_count )
24862494 {
24872495 size = size * 3 ;
@@ -2499,6 +2507,8 @@ static int dosfs_sflash_reclaim(void *context, uint32_t size)
24992507
25002508 dosfs_sflash_ftl_reclaim (sflash , victim_offset );
25012509 }
2510+
2511+ stm32l4_qspi_unselect (& sflash -> qspi );
25022512 }
25032513
25042514 return status ;
@@ -2519,12 +2529,16 @@ static int dosfs_sflash_discard(void *context, uint32_t address, uint32_t length
25192529 }
25202530 else
25212531 {
2532+ stm32l4_qspi_select (& sflash -> qspi );
2533+
25222534 while (length -- )
25232535 {
25242536 dosfs_sflash_ftl_discard (sflash , address );
25252537
25262538 address ++ ;
25272539 }
2540+
2541+ stm32l4_qspi_unselect (& sflash -> qspi );
25282542 }
25292543
25302544 return status ;
@@ -2545,7 +2559,11 @@ static int dosfs_sflash_read(void *context, uint32_t address, uint8_t *data)
25452559 }
25462560 else
25472561 {
2562+ stm32l4_qspi_select (& sflash -> qspi );
2563+
25482564 dosfs_sflash_ftl_read (sflash , address , data );
2565+
2566+ stm32l4_qspi_unselect (& sflash -> qspi );
25492567 }
25502568
25512569 return status ;
@@ -2566,12 +2584,16 @@ static int dosfs_sflash_read_sequential(void *context, uint32_t address, uint32_
25662584 }
25672585 else
25682586 {
2587+ stm32l4_qspi_select (& sflash -> qspi );
2588+
25692589 while (length -- )
25702590 {
25712591 dosfs_sflash_ftl_read (sflash , address , data );
25722592
25732593 address ++ ;
25742594 }
2595+
2596+ stm32l4_qspi_unselect (& sflash -> qspi );
25752597 }
25762598
25772599 return status ;
@@ -2592,7 +2614,11 @@ static int dosfs_sflash_write(void *context, uint32_t address, const uint8_t *da
25922614 }
25932615 else
25942616 {
2617+ stm32l4_qspi_select (& sflash -> qspi );
2618+
25952619 dosfs_sflash_ftl_write (sflash , address , data );
2620+
2621+ stm32l4_qspi_unselect (& sflash -> qspi );
25962622 }
25972623
25982624 return status ;
@@ -2613,14 +2639,17 @@ static int dosfs_sflash_write_sequential(void *context, uint32_t address, uint32
26132639 }
26142640 else
26152641 {
2642+ stm32l4_qspi_select (& sflash -> qspi );
2643+
26162644 while (length -- )
26172645 {
26182646 dosfs_sflash_ftl_write (sflash , address , data );
26192647
26202648 address ++ ;
26212649 }
2622- }
26232650
2651+ stm32l4_qspi_unselect (& sflash -> qspi );
2652+ }
26242653
26252654 return status ;
26262655}
@@ -2666,6 +2695,8 @@ int dosfs_sflash_init(uint32_t param, const F_INTERFACE **p_interface, void **p_
26662695 }
26672696 else
26682697 {
2698+ stm32l4_qspi_select (& sflash -> qspi );
2699+
26692700 sflash -> xlate_count = ((((sflash -> data_size / DOSFS_SFLASH_ERASE_SIZE ) * ((DOSFS_SFLASH_ERASE_SIZE / DOSFS_SFLASH_BLOCK_SIZE ) - 1 )) - 2 ) + (DOSFS_SFLASH_XLATE_ENTRIES - 1 )) / DOSFS_SFLASH_XLATE_ENTRIES ;
26702701
26712702 sflash -> cache [0 ] = & dosfs_sflash_cache [0 ];
@@ -2681,6 +2712,8 @@ int dosfs_sflash_init(uint32_t param, const F_INTERFACE **p_interface, void **p_
26812712 {
26822713 sflash -> state = DOSFS_SFLASH_STATE_READY ;
26832714 }
2715+
2716+ stm32l4_qspi_unselect (& sflash -> qspi );
26842717 }
26852718 }
26862719
0 commit comments