Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/64: Рейтинг темы: голосов - 64, средняя оценка - 4.88
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
1

МК и карты памяти

21.06.2011, 21:24. Просмотров 12065. Ответов 46
Метки нет (Все метки)

Кто ни буть пробовал микроконтроллером записывать, читать карты памяти?
Можете примеры показать?

Добавлено через 1 час 31 минуту
Вот нашёл наконец что-тоMMC/SD card reader
2
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2011, 21:24
Ответы с готовыми решениями:

форматирование карты памяти
тел. нокиа н 73 карта памяти мини сд 2 гб Зделал ручной ресет забыл карту в телефоне теперь...

Название карты памяти
Здравствуйте! Возникла такая проблема: раньше карта памяти называлася sdcard0 (смотрел через es...

Восстановление карты памяти
Не скажите как можно вытащить информацию с карты памяти (microSDHC - 2 гиг) она пишет карта памяти...

Получение карты памяти
Здравствуйте! Как получить ПОЛНУЮ карту оперативной памяти. Полная - это со всеми MMIO областями....

Восстановление карты памяти
Доброй ночи, уважаемые форумчане! Проблема такая.. купили цифровой фотик, рассчитанный макисмум на...

46
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
23.06.2011, 19:44  [ТС] 2
Ещё попадалась статья про звонок на МК и SD карте. Но там только про чтение карты написано.
Вот ещё хорошая статья
Пойду разбираться.
0
Caruso
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
05.08.2011, 22:59 3
Пробовал разбираться, сейчас этим занимаюсь. Будут вопросы, спрашивай
1
denver
1611 / 281 / 5
Регистрация: 19.09.2009
Сообщений: 701
06.08.2011, 00:41 4
Для примера http://www.rlocman.ru/shem/schematics.html?di=64371
http://elm-chan.org/works/sd8p/report.html
1
06.08.2011, 00:41
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
09.08.2011, 19:09  [ТС] 5
Кто нибудь пробовал записывать на карту?
Но что бы потом можно было компьютером прочитать.
0
Caruso
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
09.08.2011, 23:26 6
Я пробовал. Вопрос конкретнее можешь?
0
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
09.08.2011, 23:50  [ТС] 7
Робот будет записывать показания датчиков. Например для составления карты расположения предметов по комнате.
Желательно чтобы потом и робот смог прочитать записанное.

Добавлено через 12 минут
Я уже думал, чтоб с файловой системой не разбираться, записать на карту один огромный файл (например единицами заполненный), найти на карте место где файл начинается, и пускай робот туда пишет.
0
grizlik78
Эксперт С++
2111 / 1552 / 229
Регистрация: 29.05.2011
Сообщений: 3,223
10.08.2011, 00:05 8
Цитата Сообщение от Grey Посмотреть сообщение
Я уже думал, чтоб с файловой системой не разбираться, записать на карту один огромный файл (например единицами заполненный), найти на карте место где файл начинается, и пускай робот туда пишет.
Это вариант, главное убедиться, что файл записался последовательно, без фрагментации. Хотя на чистой ФС (типа FAT) скорее всего так и будет.
Но вообще-то можно писать на флеш с самого начала, а вот на компьютере уже организовать "сырой" доступ к флешке. Правда для этого потребуются права администратора (если драйвер не писать ) и некоторые способности... В линуксе сырые данные можно читать утилитой dd, возможно нечто подобное есть и для Windows. Но и собственная программа не должна получится сильно сложной.
0
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
10.08.2011, 00:20  [ТС] 9
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но вообще-то можно писать на флеш с самого начала
Я об этом тоже думал.
Хотелось бы без написания драйверов. Сами данные могу и своей программой обработать.
А вот как эти данные в винде получить?
0
grizlik78
Эксперт С++
2111 / 1552 / 229
Регистрация: 29.05.2011
Сообщений: 3,223
10.08.2011, 00:38 10
Цитата Сообщение от Grey Посмотреть сообщение
А вот как эти данные в винде получить?
Для этого можно использовать функцию WinAPI ReadFile(), которая позволяет читать данные из устройства напрямую. Основная проблема, это открыть нужное устройство. То есть открыть тоже не такая уж и проблема, это делается как и для обычных файлов функцией CreateFile(). Проблема найти имя устройства-флешки. Вероятно оно будет выглядеть наподобие '\\.\PhysicalDrive3' или как-то вроде этого. Проверить сейчас не на чем.
1
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
10.08.2011, 00:38  [ТС] 11
Что то я от темы отклонился.
Все же как эти данные записать?
Как МК находит нужные ячейки памяти на карте?
0
grizlik78
Эксперт С++
2111 / 1552 / 229
Регистрация: 29.05.2011
Сообщений: 3,223
10.08.2011, 00:55 12
Цитата Сообщение от Grey Посмотреть сообщение
Все же как эти данные записать?
Как МК находит нужные ячейки памяти на карте?
Ну как. В соответствии с протоколом обмена (интерфейс ведь SPI, да?). Карте, после инициализации, посылается команда на чтение или запись блока. В команде указывается номер блока, который надо читать/писать. После получения ответа, собственно, читаем или записываем 512-байтный блок. Это в общих чертах Конкретики сейчас (и в ближайшее время) дать вряд ли смогу. Но описание протокола вроде много где валяется, даже с примерами.
1
Caruso
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
Grey
Тутошний я
1781 / 933 / 169
Регистрация: 03.11.2009
Сообщений: 2,989
Записей в блоге: 1
05.10.2011, 21:22  [ТС] 15
Я уже научился записывать/считывать SD карты напрямую, без FAT'a. Могу код дать, кому интересно.
Цитата Сообщение от Екклесиаст Посмотреть сообщение
Устройство позволяло сохранять каждую секунду значения напряжения для каждой фазы, определялась частота сети и всё это было снабжено временными метками(год, месяц, день, час, минута, секунда).
Как у вас временные метки расположены в записи?
И можете поделиться схемой, алгоритмом записи или исходным кодом?
0
Екклесиаст
6 / 6 / 1
Регистрация: 19.09.2011
Сообщений: 9
06.10.2011, 06:37 16
Цитата Сообщение от Grey Посмотреть сообщение
Как у вас временные метки расположены в записи?
И можете поделиться схемой, алгоритмом записи или исходным кодом?
Временные метки - шесть байт в начале записи YMDhms (год, месяц, день, час, минута, секунда).
В один сектор 512 байт у меня входило 8 секунд (8 записей по 64 байта). Отслеживался с DS1807 сигнал новой секунды и по этому сигналу считывалось время. Запись велась раз в 8 секунд (за раз записывался один сектор).
Исходный текст написан на ассемблере (много ресурсов требовалось на интегрирование квадрата напряжения, причём вычисление квадрата производилось в прерывании). Выложу когда доберусь до своих архивов.
2
Екклесиаст
6 / 6 / 1
Регистрация: 19.09.2011
Сообщений: 9
14.10.2011, 17:20 17
Лучший ответ Сообщение было отмечено как решение

Решение

Выкладываю схему прибора, проект на ассемблере и картинку с графиком напряжения по 3-м фазам за сутки, полученный с помощью данного прибора.
3
Миниатюры
МК и карты памяти   МК и карты памяти  
Вложения
Тип файла: rar MonU3.rar (17.7 Кб, 128 просмотров)
Use_ful
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
Use_ful
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
ATAMAN200
9 / 9 / 0
Регистрация: 14.08.2010
Сообщений: 148
09.12.2011, 23:10 20
А почему именно карты памяти и какой ты хочеш использовать МК?
0
09.12.2011, 23:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 23:10

Запуск ОС с карты памяти на планшете
Хочу установить ОС на карту SDHC отформатированную в нтфс. И встал вопрос как запустить загрузку с...

Пропали файлы с карты памяти
Пропали файлы с карты памяти. После использования при съемке в фотоаппарате вставлялась в комп и...

Восстановить данные с карты-памяти
Здравствуйте! Карта-памяти Micro-SD требует форматирования, но на ней лежат важные данные. Можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.