Тутошний я
|
|
1 | |
МК и карты памяти21.06.2011, 21:24. Показов 13911. Ответов 46
Метки нет (Все метки)
Кто ни буть пробовал микроконтроллером записывать, читать карты памяти?
Можете примеры показать? Добавлено через 1 час 31 минуту Вот нашёл наконец что-тоMMC/SD card reader
2
|
21.06.2011, 21:24 | |
Ответы с готовыми решениями:
46
Путь до карты памяти Восстановление карты памяти форматирование карты памяти Разделение карты памяти |
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
|
|
05.08.2011, 22:59 | 3 |
Пробовал разбираться, сейчас этим занимаюсь. Будут вопросы, спрашивай
1
|
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
|
|
06.08.2011, 00:41 | 4 |
1
|
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
|
|
09.08.2011, 23:26 | 6 |
Я пробовал. Вопрос конкретнее можешь?
0
|
Тутошний я
|
|
09.08.2011, 23:50 [ТС] | 7 |
Робот будет записывать показания датчиков. Например для составления карты расположения предметов по комнате.
Желательно чтобы потом и робот смог прочитать записанное. Добавлено через 12 минут Я уже думал, чтоб с файловой системой не разбираться, записать на карту один огромный файл (например единицами заполненный), найти на карте место где файл начинается, и пускай робот туда пишет.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
10.08.2011, 00:05 | 8 |
Это вариант, главное убедиться, что файл записался последовательно, без фрагментации. Хотя на чистой ФС (типа FAT) скорее всего так и будет.
Но вообще-то можно писать на флеш с самого начала, а вот на компьютере уже организовать "сырой" доступ к флешке. Правда для этого потребуются права администратора (если драйвер не писать ) и некоторые способности... В линуксе сырые данные можно читать утилитой dd, возможно нечто подобное есть и для Windows. Но и собственная программа не должна получится сильно сложной.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
10.08.2011, 00:38 | 10 |
Для этого можно использовать функцию WinAPI ReadFile(), которая позволяет читать данные из устройства напрямую. Основная проблема, это открыть нужное устройство. То есть открыть тоже не такая уж и проблема, это делается как и для обычных файлов функцией CreateFile(). Проблема найти имя устройства-флешки. Вероятно оно будет выглядеть наподобие '\\.\PhysicalDrive3' или как-то вроде этого. Проверить сейчас не на чем.
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
10.08.2011, 00:55 | 12 |
Ну как. В соответствии с протоколом обмена (интерфейс ведь SPI, да?). Карте, после инициализации, посылается команда на чтение или запись блока. В команде указывается номер блока, который надо читать/писать. После получения ответа, собственно, читаем или записываем 512-байтный блок. Это в общих чертах Конкретики сейчас (и в ближайшее время) дать вряд ли смогу. Но описание протокола вроде много где валяется, даже с примерами.
1
|
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
|
|
10.08.2011, 22:06 | 13 |
Вообще то не очень понятно. Зачем вам файловая система на карточке. Можно же просто писать на карту начиная с какого то фиксированного адреса и читать с него. Если вы эту карту не будете в комп подтыкать, то и ФС вам, наверное, не нужна.
Теперь о карте. MMC/microSD может работать общаться с внешним миром по двум протоколам SD и SPI. Наиболее прост протокол SPI, О SD я ничего не знаю. После того как вы вставили карту в слот вам необходимо проинициализировать карту. -при высоком уровне сигнала CS послать на карту 10 раз данные 0xFF -выждать несколько милисекунд -послать команду CMD0 ( 0x40, 0x0, 0x0, 0x0, 0x0, 0x95) на что карта должна ответить 0x01 -послать команду CMD1 на что карта должна ответить 0x00 (если необходимо этот этап нужно повторять несколько раз, пока не дождетесь нужного ответа от карты) -послать команду CMD16 это мы устанавливаем размер блока обычно это 512 байт вот и все. Далее идут сами операции чтения и записи. Вот здесь все расписано http://www.gaw.ru/html.cgi/txt/app/memory/mmc.htm
1
|
6 / 6 / 1
Регистрация: 19.09.2011
Сообщений: 9
|
|
04.10.2011, 06:50 | 14 |
Мне в своё время заказали сделать монитор 3-х фазного напряжения, чтобы можно было посмотреть когда какое напряжение было (порой выходила из строя аппаратура, и хотелось узнать - существует ли корреляция с изменением напряжения сети).
Реализовал я приборчик на ATmega8, DS1807, карта памяти MMC/SD. Чтобы не париться с FAT, я поступал просто: 1) Форматировал карточку (быстрое форматирование) 2) Сразу записывал на карточку 1 файл размером во всю память карты. Файл заполнял значениями FF. В программе несложно вычислить начало области данных (даже на ассемблере это делается элементарно), а дальше просто я писал по порядку сектор за сектором. На компьютере же просто читал данные из этого файла. Устройство позволяло сохранять каждую секунду минимальное/максимальное/среднее/эффективное значения напряжения для каждой фазы (причём эффективное значение честно считалось интегрированием квадрата напряжения по интервалу времени 1 секунда), определялась частота сети и всё это было снабжено временными метками(год, месяц, день, час, минута, секунда). 2Гб карточки хватало для записи данных в течении 1 года. Так что в простых случаях можно и не использовать сложную библиотеку для работы с FAT, а сэкономить память (что важно для кристаллов с ограниченной памятью).
1
|
Тутошний я
|
|
05.10.2011, 21:22 [ТС] | 15 |
Я уже научился записывать/считывать SD карты напрямую, без FAT'a. Могу код дать, кому интересно.
Как у вас временные метки расположены в записи? И можете поделиться схемой, алгоритмом записи или исходным кодом?
0
|
6 / 6 / 1
Регистрация: 19.09.2011
Сообщений: 9
|
|
06.10.2011, 06:37 | 16 |
Временные метки - шесть байт в начале записи YMDhms (год, месяц, день, час, минута, секунда).
В один сектор 512 байт у меня входило 8 секунд (8 записей по 64 байта). Отслеживался с DS1807 сигнал новой секунды и по этому сигналу считывалось время. Запись велась раз в 8 секунд (за раз записывался один сектор). Исходный текст написан на ассемблере (много ресурсов требовалось на интегрирование квадрата напряжения, причём вычисление квадрата производилось в прерывании). Выложу когда доберусь до своих архивов.
2
|
6 / 6 / 1
Регистрация: 19.09.2011
Сообщений: 9
|
|
14.10.2011, 17:20 | 17 |
Сообщение было отмечено как решение
Решение
Выкладываю схему прибора, проект на ассемблере и картинку с графиком напряжения по 3-м фазам за сутки, полученный с помощью данного прибора.
3
|
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 7
|
|
28.10.2011, 23:01 | 18 |
Тут недавно наткнулся в описании среды "mikroPascal for PIC" на готовые библиотеки для работы с CF и SD/MMC, причём с поддержкой FAT. И тут же - готовый пример для PIC18F4520 c контролем через терминал USORT.
Сам пока не пробывал - не было необходимости, пользовался пока только готовыми библиотеками для работы с более мелкими флешками - микросхемами по I2C и SPI протоколам для сохранения настроек для МК без внутреннего EEPROM, поэтому о тонкостях не знаю.
0
|
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 7
|
|
14.11.2011, 22:31 | 19 |
Хочу добавить: для предпочитающих язык "Си" те же библиотеки для CF, MMC (с поддержкой FAT) и готовые примеры (с комментариями) соединения PIC18F4520 c MultiMediaCard и Compact Flash есть в описании mikroC for PIC (руководство "mikroC PRO for PIC", стр.273 - 293, и стр.368 - 383 соответственно).
Кстати, надеюсь, это заинтересует и пишущих на ассемблере, так как редактор позволяет просматривать asm-файл откомпелированного исходника на "Си" и пользоваться "выдранными" оттуда фрагментами. Я и сам так постоянно пользуюсь: надо мне написать подпрограмму задержки на определённое время для заданного кварца, я в свойствах проекта выставляю частоту, далее вызываю функции Delay_us(t) или Delay_ms(t), где параметром t ставлю время в микро\миллисекундах, затем компилирую, нахожу в файле ассемблера эту подпрограмму и бессовестно переписываю её текст в свой исходник на ассемблере. Поверьте, здОрово экономит силы и время!
0
|
9 / 9 / 0
Регистрация: 14.08.2010
Сообщений: 148
|
|
09.12.2011, 23:10 | 20 |
А почему именно карты памяти и какой ты хочеш использовать МК?
0
|
09.12.2011, 23:10 | |
09.12.2011, 23:10 | |
Помогаю со студенческими работами здесь
20
Восстановление карты памяти Получение карты памяти Название карты памяти Пропали файлы с карты памяти Восстановление карты памяти Micro SD Парсинг файла из карты памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |