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

 
 
> 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



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

 


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


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