Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Непонятки с PFF (Petit FAT File System Module)

Вс июн 02, 2019 13:31:58

Разбираюсь с PFF. Кусок файла работы с MMS/SD - отправка команды:

Код:
static BYTE send_cmd (
   BYTE cmd,      /* 1st byte (Start + Index) */
   DWORD arg  /* Argument (32 bits) */
)
{
   BYTE n, res;

   if (cmd & 0x80) { /* ACMD<n> is the command sequense of CMD55-CMD<n> */
      cmd &= 0x7F;
      res = send_cmd(CMD55, 0);
      if (res > 1) return res;
   }

   /* Select the card */
   CS_HIGH();
   rcv_spi();
   CS_LOW();
   rcv_spi();

Если проверка
Код:
if (cmd & 0x80) { /* ACMD<n> is the command sequense of CMD55-CMD<n> */
выполняется, то
Код:
res = send_cmd(CMD55, 0);
- т.е. я не пойму, функция обращается сама к себе? Или как?
Последний раз редактировалось Frogfot Вс июн 02, 2019 13:54:09, всего редактировалось 1 раз.

Re: Непонятки с PFF (Petit FAT File System Module)

Вс июн 02, 2019 13:46:14

т.е. я не пойму, функция обращается сама к себе? Или как?

Гугл в помощь, искать: "что такое рекурсия".

Re: Непонятки с PFF (Petit FAT File System Module)

Вс июн 02, 2019 13:59:59

Гугл в помощь, искать: "что такое рекурсия".

Благодарю, нашёл что это такое, теперь бы понять, зачем так сделано? ;)

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 10:38:01

Курю Petit FatFs - FAT file system module include file R0.03a на STM32F103C8.

FAT вроде запустился, pf_mount(&fatfs) выдала FR_OK = 0, теперь хочу поковырять, что считалось с SD карточки - в файле pff.h есть структура FATFS, не получается из main обратиться к элементам этой структуры - FATFS->fs_type или fs->fs_type - как прочитать? Компилятор Keil выдает: main.c(98): error: #254: type name is not allowed

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 10:57:30

Frogfot писал(а):не получается из main обратиться к элементам этой структуры - FATFS->fs_type или fs->fs_type
хрен вас поймешь: инициализируете структуру fatfs, а обращаетесь к FATFS или fs... вам это странным не кажется?

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 11:09:15

инициализируете структуру fatfs, а обращаетесь к FATFS или fs... вам это странным не кажется?

fatfs->fs_type - тоже не катит - теперь пишет: main.c(98): error: #44: expression must have pointer type. Как обратиться к этой структуре?

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 11:20:02

вот что за привычка не выкладывать код, а заставлять нас решать ребусы?

судя по всему, вы не правильно обращаетесь к структуре. правильно в вашем случае, пожалуй, будет так fatfs.fs_type

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 11:40:56

правильно в вашем случае, пожалуй, будет так fatfs.fs_type

Благодарю, так прокатило! Вывело: fs_type = 2 - т.е. - FS_FAT16.

Монтирует правильно, теперь пробовал открыть файл rc = pf_open("test.txt"); (несколько из тех, что есть на SD) - пишет: FR_NO_FILE ???

Затыкается в функции pf_open (const char *path) на follow_path и возвращает FR_NO_FILE = 3:

Код:
fs->flag = 0;
dj.fn = sp;
res = follow_path(&dj, dir, path); // Follow the file path
if (res != FR_OK) return res;      // Follow failed

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:04:00

я вам еще раз тонко намекаю: показывайте ваш код.

ваш затык может быть, например, по причине "отключения" в настройках pffconf.h поддержки каталогов, но при этом имя файла содержит символы, задающие путь.

гадать более не буду

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:13:59

я вам еще раз тонко намекаю: показывайте ваш код

#define PF_USE_READ 1 /* pf_read() function */
#define PF_USE_DIR 0 /* pf_opendir() and pf_readdir() function */
#define PF_USE_LSEEK 0 /* pf_lseek() function */
#define PF_USE_WRITE 0 /* pf_write() function */

#define PF_FS_FAT12 0 /* FAT12 */
#define PF_FS_FAT16 1 /* FAT16 */
#define PF_FS_FAT32 0 /* FAT32 */

Разрешено только чтение, директорий нет, все файлы лежат в корне, ни один не находит.
Последний раз редактировалось Frogfot Пт июн 07, 2019 12:19:29, всего редактировалось 2 раз(а).

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:14:46

мда... третий раз намекать не буду

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:20:14

Код:
rc = pf_mount(&fatfs); // Mount SD Card
PrintHEX8 (rc);
if (rc == FR_OK)
{
  rc = pf_open("test.txt");
  PrintHEX8 (rc);
}

pf_open("test.txt") возвращает FR_NO_FILE = 3

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:24:44

поддержка прописных букв в имени файла включена?

Добавлено after 31 second:
вот так попробуйте: rc = pf_open("TEST.TXT");

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:29:10

поддержка прописных букв в имени файла включена?
вот так попробуйте: rc = pf_open("TEST.TXT");

Вау, прямо ARV волшебник - прокатило!

2 ARVКак включить/выключить поддержку прописных букв?

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:34:30

я не волшебник, я только учусь :)

Добавлено after 1 minute 30 seconds:
Frogfot писал(а):Как включить/выключить поддержку прописных букв?
#define _USE_LCC 1 /* Allow lower case characters for path name */

в pffconf.h

Re: Непонятки с PFF (Petit FAT File System Module)

Пт июн 07, 2019 12:36:04

#define _USE_LCC 1 /* Allow lower case characters for path name */ в pffconf.h

Ещё раз благогодарю!
Ответить