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

 
 
 
Reply to this topicStart new topic
> SDIO + DMA + FatFs, Проблема с мультиблоковой записью
Nikitoc
сообщение Mar 5 2012, 21:14
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Всем привет. Пытаюсь прикрутить известный примерчик от ST (SDIO+DMA для stm32f205) к FatFs. Все функции работают корректно кроме мультиблоковой записи. И именно это выносит мне мозг. Все зависает на функции:
Код
SD_Error SD_WaitWriteOperation(void)
     {
           SD_Error errorstatus = SD_OK;
           while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK))
           {
             /*if ((SDIO->STA & 0x03) != 0x00){
                 printf(" 0x%X ", SDIO->STA);
             }*/
           }
           if (TransferError != SD_OK)
           {
                 return(TransferError);
           }
           /*!< Clear all the static flags */
           SDIO_ClearFlag(SDIO_STATIC_FLAGS);
           return(errorstatus);
     }


Закомментированный участок кода - это моя отладочная функция. Собственно говоря, когда я начинаю записывать файл мультиблоковая функция нормально отрабатывает несколько раз (5-15, каждый раз по-разному), а затем подвисает. При этом в статусном регистре содержится значение 0x42. Т.е. устанавливаются флаги DCRCFAIL (Data block sent/received (CRC check failed)) и CMDREND (Command response received (CRC check passed)). Почему устанавливается второй флаг - не понимаю.
Если есть какие-нибудь мысли или что-то подобное встречалось - просьба поделиться.
Заранее благодарен.
Go to the top of the page
 
+Quote Post
Igor4444
сообщение Mar 15 2012, 08:17
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 15-12-11
Пользователь №: 68 888



Привет. Не мог бы ты выложить весь код мультиблоковой записи( как я вижу ты написал свой, ну или по крайней мере не Ченовский rolleyes.gif )
Я бьюсь сейчас над похожей проблемой. Подробнее в другой теме форума
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Mar 16 2012, 20:43
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Привет. Я весь код не писал. Я взял примерчик от ST (который идет с IAR 6.30). А в файле diskio.c (который для FatFS) просто написал вызовы функций чтения/записи, которые из примерчика.
Go to the top of the page
 
+Quote Post

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

 


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


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