реклама на сайте
подробности

 
 
> stm32f407 + uSD (SDIO) + FAT, Вылет по флагу SDIO_FLAG_TXUNDERR
rav38
сообщение Jan 5 2017, 14:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 12-06-12
Из: Москва
Пользователь №: 72 275



Здравствуйте все!

Осваиваю работу stm32f4 с uSD, используя STM32F4-DISCOVERY (stm32f407vgt6) + плата STM32F4DIS-BB

Проект собрал, взяв библиотеки из STM32Cube_FW_F4_V1.14.0 и оттуда же из примеров вытащил библиотеки FatFs.

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

В процессе форматирования на n-ном блоке происходит вылет по флагу SDIO_FLAG_TXUNDERR.

Если поставить паузы между блоками по 1 мс, вылетов нет, но после завершения работы программы карта при подключении к винде требует форматирования.

Если убрать вызов ф-ции f_mkfs на уже отформатированной карте успешно создается текстовый файл.

Добавил проверку флага ReadyForData перед каждой записью блока (не нашел к ф-циях HAL такого) -ситуация не изменилась.
Выкинул FreeRTOS, оставил только инициализацию контроллера, проблема осталась.

В настройках SDIO:
SDIO_CLOCK_BYPASS_DISABLE
SDIO_HARDWARE_FLOW_CONTROL_DISABLE

Что не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rav38
сообщение Jan 8 2017, 12:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 12-06-12
Из: Москва
Пользователь №: 72 275



Прикрутил, Новый год, новая библиотека - форматирование старое кривое.

Код проходит вроде без ошибок, но карта виндой по-прежнему не читается.
Форум смотрел, вроде все настройки DMA и SDIO вроде учел и надо ковырять файл stm32f4xx_hal_sd.c

Отсюда вопрос - ни у кого нет исправленной библиотеки или хотя бы подсказки что править?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 8 2017, 13:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Форматирование- это самая сложная из возможных функций и, по-моему, самая редко применяемая. То есть мало кто использует и еще меньше кто расскажет о глюках если они не у каждого встречаются.

Начните с простого
0. Чтение служебной информации диска и файла
1. Чтение из файла
2. Создание файла
3. Добавление в файл
4. Удаление файла
(1-4) в произвольном порядке, несколько раз, ну скажем раз сто.

Работает стабильно? Теперь переходите к форматированию.

Для того чтобы понять что не так, советую поставить программу, которая показывает сектора и прочее, сырые данные диска, и стандартные структуры тоже. Мне WinHex нравится.
Go to the top of the page
 
+Quote Post
rav38
сообщение Jan 10 2017, 07:15
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 12-06-12
Из: Москва
Пользователь №: 72 275



Цитата(Ruslan1 @ Jan 8 2017, 17:24) *
Форматирование- это самая сложная из возможных функций и, по-моему, самая редко применяемая. То есть мало кто использует и еще меньше кто расскажет о глюках если они не у каждого встречаются.

Начните с простого
0. Чтение служебной информации диска и файла
1. Чтение из файла
2. Создание файла
3. Добавление в файл
4. Удаление файла
(1-4) в произвольном порядке, несколько раз, ну скажем раз сто.

Работает стабильно? Теперь переходите к форматированию.

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


Огромное спасибо! Вопрос решился.
Посыпаю голову пеплом. Была ошибка в портировании библиотек в части определения размера карточки. Карточка считывалась верно, но была лишняя локальная переменная в SD_ioctl, из которой подставлялось мусорное значение емкости карты.

В любом случае было даже полезно - изучил досконально интерфейс и библиотеки)))
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 10 2017, 11:21
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(rav38 @ Jan 10 2017, 09:15) *
Огромное спасибо! Вопрос решился.

sm.gif
Кстати, в FatFs нужно внимательно смотреть, чтобы версия документации и сорцов совпадали
Конкретно у меня это был флаг FA_OPEN_APPEND, который был уже описан, но еще не обрабатывался в коде.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 16:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016