Уважаемые форумчане, есть к вам вопрос.
Итак, есть микроконтроллер msp430FG4618 и MicroSD карта Transcend. Я пытаюсь организовать поддержку FAT16/32. Для работы с карточкой я использовал техасовский пример для MMC, однако переделанный для моего конкретного применения и использования SDHC (ну это на будущее). Для FAT-а я использовал исходники DOSFS Level 1 Version 1.02 от Lewin-а, однако также достаточно переработанные мною.
Вся эта канитель вроде бы работает нормально - создает файлы и папки, удаляет их, пишет в них небольшое количество данных.
Однако когда я запускаю запись, скажем, мегабайт 10, то в некоторый момент с карточкой что-то происходит: на ее выходе постоянно 0, не реагирует ни на какие команды, даже CMD0. Помогает только передергивание питания. Единственное похожее состояние карточки что я нашел в спецификации - это "Inactive State". Однако согласно той же спецификации карточка не может просто так войти в это состояние - только по CMD15 или несовпадения напряжения питания в команде CMD8. Но во время записи у меня посылаются только 2 команды - чтение блока CMD17 и запись блока CMD24.
Возникает такая ситуация каждый раз по-разному - может 100 секторов записать, может 5000. Но происходит все время при перезаписи сектора таблицы размещения - т.е. секторов, которые используются многократно. Может есть какая-то хитрость при работе с карточками? У кого есть опыт, поделитесь.
Заранее спасибо
|