Инструменты пользователя

Инструменты сайта


chibios:hal:fatfs

FatFS

ChibiOS поставляется со всеми необходимыми библиотеками для работы с флешками. Я пока работал только с microSD, которая подключена к SPI2.

Первым делом настраиваем выходы SPI2:

/**
 * PB12    - Push Pull output 2MHz (SPI enable);
 * PB13    - Alternate output  (MMC SPI2 SCK).
 * PB14    - Normal input      (MMC SPI2 MISO).
 * PB15    - Alternate output  (MMC SPI2 MOSI).
 */
#define VAL_GPIOBCRH            0xB4B2xxxx      /* PB15...PB8 */

Разрешаем использование SPI2 в mcuconf.h:

#define STM32_SPI_USE_SPI2              TRUE

Разрешаем использование модуля SPI и MMC-через-SPI:

#define HAL_USE_SPI                 TRUE
#define HAL_USE_MMC_SPI             TRUE

Дальше идём в ${CHIBIOS}/ext и распаковываем там архив fatfs-0.9-patched.zip. Получаем библиотеку FATFS, которая полностью совместима с ChibiOS. Из получившегося каталога fatfs/src необходимо скопировать файл ffconf_template.h в каталог своего проекта под именем ffconf.h. Этот файл позволяет настроить библиотеку под свои нужны, а размещение в каталоге проекта даёт нам возможность поместить его под контроль Git.

Обычно на разъёмах для SD карт есть дополнительные контакты, которые обеспечивают электронику признаком наличия карты в слоте. Также можно сделать переключатель для реализации железной защиты от записи. Так как каждая плата может реализовывать эти возможности по-разному, следует явно их описать в board.c:

#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
bool_t mmc_lld_is_card_inserted(MMCDriver *mmcp) {
  (void) mmcp;
  // TODO: Реализовать реальную проверку.
  return TRUE;
}
 
bool_t mmc_lld_is_write_protected(MMCDriver *mmcp) {
  (void) mmcp;
  // TODO: Реализовать реальную проверку.
  return FALSE;
}
#endif

Для подключения библиотеки к проекту, необходимо выполнить несколько действий:

  • Подключить файл сборки библиотеки:
    +CHIBIOS = ../chibios
     include ./board/board.mk
     include $(CHIBIOS)/os/hal/platforms/STM32F1xx/platform.mk
     include $(CHIBIOS)/os/hal/hal.mk
     include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F1xx/port.mk
     include $(CHIBIOS)/os/kernel/kernel.mk
    +include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk
  • Подключить $(FATFSSRC) (определяется в файле сборки библиотеки) в блок CSRC.
  • Подключить $(FATFSINC) (определяется в файле сборки библиотеки) в блок INCDIR.

Дальше руководствуемся кодом из ${CHIBIOS}/demos/ARMCM3-STM32F103-FATFS/main.c, в итоге получаем это:

chibios/hal/fatfs.txt · Последние изменения: 2014/10/29 16:07 — Ruslan Popov