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

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


chibios:hal:fatfs

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

chibios:hal:fatfs [2014/10/29 10:24]
Ruslan Popov создано
chibios:hal:fatfs [2014/10/29 16:07] (текущий)
Ruslan Popov
Строка 1: Строка 1:
 +====== FatFS ======
  
 +ChibiOS поставляется со всеми необходимыми библиотеками для работы с флешками. Я пока работал только с microSD, которая подключена к ''​SPI2''​. {{ :​chibios:​hal:​microsd-on-spi.png?​nolink&​200|}}
 +
 +Первым делом настраиваем выходы ''​SPI2'':​
 +
 +<​file>/​**
 + * 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 */</​file>​
 +
 +Разрешаем использование ''​SPI2''​ в ''​mcuconf.h'':​
 +
 +<​file>#​define STM32_SPI_USE_SPI2 ​             TRUE</​file>​
 +
 +Разрешаем использование модуля ''​SPI''​ и ''​MMC-через-SPI'':​
 +
 +<​file>#​define HAL_USE_SPI ​                TRUE
 +#define HAL_USE_MMC_SPI ​            ​TRUE</​file>​
 +
 +Дальше идём в ''​${CHIBIOS}/​ext''​ и распаковываем там архив ''​fatfs-0.9-patched.zip''​. Получаем библиотеку FATFS, которая полностью совместима с ChibiOS. Из получившегося каталога ''​fatfs/​src''​ необходимо скопировать файл ''​ffconf_template.h''​ в каталог своего проекта под именем ''​ffconf.h''​. Этот файл позволяет настроить библиотеку под свои нужны, а размещение в каталоге проекта даёт нам возможность поместить его под контроль Git.
 +
 +Обычно на разъёмах для SD карт есть дополнительные контакты,​ которые обеспечивают электронику признаком наличия карты в слоте. Также можно сделать переключатель для реализации железной защиты от записи. Так как каждая плата может реализовывать эти возможности по-разному,​ следует явно их описать в ''​board.c'':​
 +
 +<​file>#​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</​file>​
 +
 +Для подключения библиотеки к проекту,​ необходимо выполнить несколько действий:​
 +
 +  * Подключить файл сборки библиотеки:​ <​file>​+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</​file>​
 +  * Подключить ''​$(FATFSSRC)''​ (определяется в файле сборки библиотеки) в блок ''​CSRC''​.
 +  * Подключить ''​$(FATFSINC)''​ (определяется в файле сборки библиотеки) в блок ''​INCDIR''​.
 +
 +Дальше руководствуемся кодом из ''​${CHIBIOS}/​demos/​ARMCM3-STM32F103-FATFS/​main.c'',​ в итоге получаем это:
 +
 +{{ :​chibios:​hal:​fatfs_at_work.jpg?​nolink&​200 |}}
 +
 +~~DISQUS~~
chibios/hal/fatfs.txt · Последние изменения: 2014/10/29 16:07 — Ruslan Popov