Страница 1 из 1

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

Добавлено: Вс июн 02, 2019 13:31:58
Frogfot
Разбираюсь с 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);
- т.е. я не пойму, функция обращается сама к себе? Или как?

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

Добавлено: Вс июн 02, 2019 13:46:14
jcxz
[uquote="Frogfot",url="/forum/viewtopic.php?p=3643789#p3643789"]т.е. я не пойму, функция обращается сама к себе? Или как?[/uquote]
Гугл в помощь, искать: "что такое рекурсия".

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

Добавлено: Вс июн 02, 2019 13:59:59
Frogfot
[uquote="jcxz",url="/forum/viewtopic.php?p=3643797#p3643797"]Гугл в помощь, искать: "что такое рекурсия".[/uquote]
Благодарю, нашёл что это такое, теперь бы понять, зачем так сделано? ;)

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

Добавлено: Пт июн 07, 2019 10:38:01
Frogfot
Курю 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
ARV
Frogfot писал(а):не получается из main обратиться к элементам этой структуры - FATFS->fs_type или fs->fs_type
хрен вас поймешь: инициализируете структуру fatfs, а обращаетесь к FATFS или fs... вам это странным не кажется?

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

Добавлено: Пт июн 07, 2019 11:09:15
Frogfot
[uquote="ARV",url="/forum/viewtopic.php?p=3646842#p3646842"]инициализируете структуру fatfs, а обращаетесь к FATFS или fs... вам это странным не кажется?[/uquote]
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
ARV
вот что за привычка не выкладывать код, а заставлять нас решать ребусы?

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

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

Добавлено: Пт июн 07, 2019 11:40:56
Frogfot
[uquote="ARV",url="/forum/viewtopic.php?p=3646855#p3646855"]правильно в вашем случае, пожалуй, будет так fatfs.fs_type[/uquote]
Благодарю, так прокатило! Вывело: 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
ARV
я вам еще раз тонко намекаю: показывайте ваш код.

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

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

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

Добавлено: Пт июн 07, 2019 12:13:59
Frogfot
[uquote="ARV",url="/forum/viewtopic.php?p=3646876#p3646876"]я вам еще раз тонко намекаю: показывайте ваш код[/uquote]
#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 */

Разрешено только чтение, директорий нет, все файлы лежат в корне, ни один не находит.

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

Добавлено: Пт июн 07, 2019 12:14:46
ARV
мда... третий раз намекать не буду

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

Добавлено: Пт июн 07, 2019 12:20:14
Frogfot

Код: Выделить всё

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
ARV
поддержка прописных букв в имени файла включена?

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

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

Добавлено: Пт июн 07, 2019 12:29:10
Frogfot
[uquote="ARV",url="/forum/viewtopic.php?p=3646889#p3646889"]поддержка прописных букв в имени файла включена?
вот так попробуйте: rc = pf_open("TEST.TXT");[/uquote]
Вау, прямо ARV волшебник - прокатило!

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

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

Добавлено: Пт июн 07, 2019 12:34:30
ARV
я не волшебник, я только учусь :)

Добавлено 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
Frogfot
[uquote="ARV",url="/forum/viewtopic.php?p=3646898#p3646898"]#define _USE_LCC 1 /* Allow lower case characters for path name */ в pffconf.h[/uquote]
Ещё раз благогодарю!