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

 
 
> Проблема с MicroSD картой. Кто поможет?
М430
сообщение Jan 23 2008, 11:53
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349



Уважаемые форумчане, есть к вам вопрос.

Итак, есть микроконтроллер 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. Но происходит все время при перезаписи сектора таблицы размещения - т.е. секторов, которые используются многократно. Может есть какая-то хитрость при работе с карточками? У кого есть опыт, поделитесь.

Заранее спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
М430
сообщение Jan 25 2008, 09:20
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349



Сегодня добавил еще один коненсатор на питание (хотя подозрения насчет питания и не оправдались) и подтягивающие резисторы на линии входных/выходных данных. Результаты те же.
Если подробнее то ситуация такая:
1. Вызывается функция записи сектора и выполняется успешно
2. Затем вызывается функция ожидания освобождения карточки памяти, т.е. отсылает пустые байты и проверяет полученные до появления трех последовательных 0xFF.
3. Вызывается функция чтения. Ошибка происходдит при поиске стартового байта пакета данных. Когда отладчик останавливается на точке останова в подфункции поиска стартового байта я вижу что последний входной байт был равен 0??? Т.е. карточка вроде как еще занята, хотя в пункте 2 было зафиксировано несколько 0xFF, т.е. карточка освободилась. Если в этот момент руками послать пару пустых байт карточке, то входные байты станут 0xFF и будут постоянно такими пока посылаю байты.
Если после этого заново послать карте команду считывания блока, то все нормально считается.
Как для меня - то я не понимаю что происходит с карточкой.
Разве карточка может войти в режим Busy после получения команды о считывании блока?
Go to the top of the page
 
+Quote Post
NoName
сообщение Feb 3 2008, 14:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078



Цитата(М430 @ Jan 25 2008, 11:20) *
1. Вызывается функция записи сектора и выполняется успешно
2. Затем вызывается функция ожидания освобождения карточки памяти, т.е. отсылает пустые байты и проверяет полученные до появления трех последовательных 0xFF.


1. в указанном примере после записи, вызывается функция mmcCheckBusy,
читайте сразу, без повторного вызова проверки Busy. smile.gif

2. резисторы лучьше установить.
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Feb 18 2008, 10:50
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



Цитата(NoName @ Feb 3 2008, 17:26) *
читайте сразу, без повторного вызова проверки mmcCheckBusy
резисторы лучше установить.

заработало ?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 11:32
Рейтинг@Mail.ru


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