Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/75: Рейтинг темы: голосов - 75, средняя оценка - 4.53
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
1

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

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

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

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

Путь до карты памяти
Как узнать путь до карты памяти програмно? xe10 android

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

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

Разделение карты памяти
Доброго времени суток.:) Вот хочу попробовать поставить на свой i780 Android. Подскажите как...

46
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
23.06.2011, 19:44  [ТС] 2
Ещё попадалась статья про звонок на МК и SD карте. Но там только про чтение карты написано.
Вот ещё хорошая статья
Пойду разбираться.
0
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
Для примера http://www.rlocman.ru/shem/sch... l?di=64371
http://elm-chan.org/works/sd8p/report.html
1
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
09.08.2011, 19:09  [ТС] 5
Кто нибудь пробовал записывать на карту?
Но что бы потом можно было компьютером прочитать.
0
31 / 30 / 4
Регистрация: 22.03.2010
Сообщений: 126
09.08.2011, 23:26 6
Я пробовал. Вопрос конкретнее можешь?
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
09.08.2011, 23:50  [ТС] 7
Робот будет записывать показания датчиков. Например для составления карты расположения предметов по комнате.
Желательно чтобы потом и робот смог прочитать записанное.

Добавлено через 12 минут
Я уже думал, чтоб с файловой системой не разбираться, записать на карту один огромный файл (например единицами заполненный), найти на карте место где файл начинается, и пускай робот туда пишет.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
10.08.2011, 00:05 8
Цитата Сообщение от Grey Посмотреть сообщение
Я уже думал, чтоб с файловой системой не разбираться, записать на карту один огромный файл (например единицами заполненный), найти на карте место где файл начинается, и пускай робот туда пишет.
Это вариант, главное убедиться, что файл записался последовательно, без фрагментации. Хотя на чистой ФС (типа FAT) скорее всего так и будет.
Но вообще-то можно писать на флеш с самого начала, а вот на компьютере уже организовать "сырой" доступ к флешке. Правда для этого потребуются права администратора (если драйвер не писать ) и некоторые способности... В линуксе сырые данные можно читать утилитой dd, возможно нечто подобное есть и для Windows. Но и собственная программа не должна получится сильно сложной.
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
10.08.2011, 00:20  [ТС] 9
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но вообще-то можно писать на флеш с самого начала
Я об этом тоже думал.
Хотелось бы без написания драйверов. Сами данные могу и своей программой обработать.
А вот как эти данные в винде получить?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
10.08.2011, 00:38 10
Цитата Сообщение от Grey Посмотреть сообщение
А вот как эти данные в винде получить?
Для этого можно использовать функцию WinAPI ReadFile(), которая позволяет читать данные из устройства напрямую. Основная проблема, это открыть нужное устройство. То есть открыть тоже не такая уж и проблема, это делается как и для обычных файлов функцией CreateFile(). Проблема найти имя устройства-флешки. Вероятно оно будет выглядеть наподобие '\\.\PhysicalDrive3' или как-то вроде этого. Проверить сейчас не на чем.
1
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
10.08.2011, 00:38  [ТС] 11
Что то я от темы отклонился.
Все же как эти данные записать?
Как МК находит нужные ячейки памяти на карте?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
10.08.2011, 00:55 12
Цитата Сообщение от Grey Посмотреть сообщение
Все же как эти данные записать?
Как МК находит нужные ячейки памяти на карте?
Ну как. В соответствии с протоколом обмена (интерфейс ведь 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
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
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-м фазам за сутки, полученный с помощью данного прибора.
Миниатюры
МК и карты памяти   МК и карты памяти  
Вложения
Тип файла: rar MonU3.rar (17.7 Кб, 129 просмотров)
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2011, 23:10
Помогаю со студенческими работами здесь

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

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

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

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

Восстановление карты памяти Micro SD
Недавно приобрел карту памяти SD на 32 гб. с адаптером под карту памяти и под флешку от Sony. Когда...

Парсинг файла из карты памяти
Пытаюсь парсить файл из внешней карты памяти - не получается. Пытался парсить из папки ../res - все...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru