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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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);
- т.е. я не пойму, функция обращается сама к себе? Или как?
Последний раз редактировалось Frogfot Вс июн 02, 2019 13:54:09, всего редактировалось 1 раз.
Хорошему коту и в декабре - март :)
Реклама
Мудрый кот
Сообщения: 1779
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Frogfot",url="/forum/viewtopic.php?p=3643789#p3643789"]т.е. я не пойму, функция обращается сама к себе? Или как?[/uquote]
Гугл в помощь, искать: "что такое рекурсия".
Реклама
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение Frogfot »

[uquote="jcxz",url="/forum/viewtopic.php?p=3643797#p3643797"]Гугл в помощь, искать: "что такое рекурсия".[/uquote]
Благодарю, нашёл что это такое, теперь бы понять, зачем так сделано? ;)
Хорошему коту и в декабре - март :)
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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
Хорошему коту и в декабре - март :)
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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. Как обратиться к этой структуре?
Хорошему коту и в декабре - март :)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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
Хорошему коту и в декабре - март :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

гадать более не буду
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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 */

Разрешено только чтение, директорий нет, все файлы лежат в корне, ни один не находит.
Последний раз редактировалось Frogfot Пт июн 07, 2019 12:19:29, всего редактировалось 2 раза.
Хорошему коту и в декабре - март :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

мда... третий раз намекать не буду
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение 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
Хорошему коту и в декабре - март :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Добавлено after 31 second:
вот так попробуйте: rc = pf_open("TEST.TXT");
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение Frogfot »

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

2 ARVКак включить/выключить поддержку прописных букв?
Хорошему коту и в декабре - март :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

в pffconf.h
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

Сообщение Frogfot »

[uquote="ARV",url="/forum/viewtopic.php?p=3646898#p3646898"]#define _USE_LCC 1 /* Allow lower case characters for path name */ в pffconf.h[/uquote]
Ещё раз благогодарю!
Хорошему коту и в декабре - март :)
Ответить

Вернуться в «Периферия»