Regeneration CubeMX (Appli) preparant le driver ST67W611M1 et la carte SD : - SPI4 (PE12/13/14, CS PF8) + DMA GPDMA1 canaux 4/5, SPI_RDY (PD12/EXTI12), CHIP_EN (PD13) et BOOT (PD15) pour la X-NUCLEO-67W61M1 sur l'Arduino - SDMMC1 + FatFs (appels d'init non generes dans main, IRQ SDMMC1 prio 14), PM14 en open-drain ; I2S6_CK sur PA5 pour liberer PC12 (SDMMC1_CK) - HAL UART retire ; USE_BSP_COM_FEATURE=0 - Audio preserve : ADF 4/16/24, prio IRQ 2, DMA canal 0 en priorite haute, GPDMA1_Channel2_IRQHandler deplace dans audio_irq.c (hors fichiers generes), BSP_MX_I2S6_Init (renommage dans le BSP pour eviter le conflit avec CubeMX) - Middlewares/ST/ST67W6X_Network_Driver, FatFs et sources HAL SPI/SD ajoutes (driver ST67 pas encore integre au build) Build et debug sous Linux : - gcc/toolchain-env.sh, gdbserver.sh, arm-gdb.sh : outils de STM32CubeIDE par glob ; flash.sh les retrouve ; ruby_compat.rb pour Ruby >= 3.2 (TouchGFX) - makefile_appli : sources SD/SPI/FatFs/audio_irq ; chmod +x des .out TouchGFX - Objets de build (*.o, *.d, *.su) retires de l'index (deja dans .gitignore) - AGENTS.md : toolchain Linux, configs VS Code (cppdbg et ST stlinkgdbtarget), pieges de l'extension ST (.settings/ide.store.json, preRunCommands reset) Verifie sur carte : audio OK, debug Appli/Boot OK. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
121 lines
3.6 KiB
C
121 lines
3.6 KiB
C
/**
|
|
******************************************************************************
|
|
* @file ff_gen_drv.c
|
|
* @author MCD Application Team
|
|
* @brief FatFs generic low level driver.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) 2023 STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This software is licensed under terms that can be found in the st_license.txt
|
|
* file in the root directory of this software component.
|
|
* If no st_license.txt file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "ff_gen_drv.h"
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
/* Private define ------------------------------------------------------------*/
|
|
/* Private variables ---------------------------------------------------------*/
|
|
Disk_drvTypeDef disk = {{0},{0},{0},0};
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
/* Private functions ---------------------------------------------------------*/
|
|
|
|
/**
|
|
* @brief Links a compatible diskio driver/lun id and increments the number of active
|
|
* linked drivers.
|
|
* @note The number of linked drivers (volumes) is up to 10 due to FatFs limits.
|
|
* @param drv: pointer to the disk IO Driver structure
|
|
* @param path: pointer to the logical drive path
|
|
* @param lun : only used for USB Key Disk to add multi-lun management
|
|
else the parameter must be equal to 0
|
|
* @retval Returns 0 in case of success, otherwise 1.
|
|
*/
|
|
uint8_t FATFS_LinkDriverEx(const Diskio_drvTypeDef *drv, char *path, uint8_t lun)
|
|
{
|
|
uint8_t ret = 1;
|
|
uint8_t DiskNum = 0;
|
|
|
|
if(disk.nbr < FF_VOLUMES)
|
|
{
|
|
disk.is_initialized[disk.nbr] = 0;
|
|
disk.drv[disk.nbr] = drv;
|
|
disk.lun[disk.nbr] = lun;
|
|
DiskNum = disk.nbr++;
|
|
path[0] = DiskNum + '0';
|
|
path[1] = ':';
|
|
path[2] = '/';
|
|
path[3] = 0;
|
|
ret = 0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* @brief Links a compatible diskio driver and increments the number of active
|
|
* linked drivers.
|
|
* @note The number of linked drivers (volumes) is up to 10 due to FatFs limits
|
|
* @param drv: pointer to the disk IO Driver structure
|
|
* @param path: pointer to the logical drive path
|
|
* @retval Returns 0 in case of success, otherwise 1.
|
|
*/
|
|
uint8_t FATFS_LinkDriver(const Diskio_drvTypeDef *drv, char *path)
|
|
{
|
|
return FATFS_LinkDriverEx(drv, path, 0);
|
|
}
|
|
|
|
/**
|
|
* @brief Unlinks a diskio driver and decrements the number of active linked
|
|
* drivers.
|
|
* @param path: pointer to the logical drive path
|
|
* @param lun : not used
|
|
* @retval Returns 0 in case of success, otherwise 1.
|
|
*/
|
|
uint8_t FATFS_UnLinkDriverEx(char *path, uint8_t lun)
|
|
{
|
|
uint8_t DiskNum = 0;
|
|
uint8_t ret = 1;
|
|
|
|
if(disk.nbr >= 1)
|
|
{
|
|
DiskNum = path[0] - '0';
|
|
if(disk.drv[DiskNum] != 0)
|
|
{
|
|
disk.drv[DiskNum] = 0;
|
|
disk.lun[DiskNum] = 0;
|
|
disk.nbr--;
|
|
ret = 0;
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* @brief Unlinks a diskio driver and decrements the number of active linked
|
|
* drivers.
|
|
* @param path: pointer to the logical drive path
|
|
* @retval Returns 0 in case of success, otherwise 1.
|
|
*/
|
|
uint8_t FATFS_UnLinkDriver(char *path)
|
|
{
|
|
return FATFS_UnLinkDriverEx(path, 0);
|
|
}
|
|
|
|
/**
|
|
* @brief Gets number of linked drivers to the FatFs module.
|
|
* @param None
|
|
* @retval Number of attached drivers.
|
|
*/
|
|
uint8_t FATFS_GetAttachedDriversNbr(void)
|
|
{
|
|
return disk.nbr;
|
|
}
|