sonyps4.ru

Компьютер не видит карту памяти sd, minisd, microsd. Что делать, если смартфон или планшет не видит SD карту

В устройствах на микроконтроллерах для хранения больших объемов данных используется внешняя память. Если требуется хранить единицы мегабайт, то подойдут микросхемы последовательной флэш памяти. Однако для больших объемов (десятки -сотни мегабайт) обычно применяются какие-нибудь карты памяти. В настоящий момент наибольшее распространение получили SD и microSD карты, о них я и хотел бы поговорить в серии материалов. В этой статье речь пойдет о подключении SD карт к микроконтроллеру, а в следующих мы будет разбираться как читать или записывать на них данные.

Распиновка SD и microSD карт

SD карты могут работать в двух режимах - SD и SPI . Назначение выводов карт и схема подключения зависит от используемого режима. У 8-и разрядных микроконтроллеров AVR нет аппаратной поддержки SD режима, поэтому карты с ними обычно используются в режиме SPI. В 32-х разрядных микроконтроллерах на ядре ARM, например AT91SAM3, интерфейс для работы с картами в SD режиме есть, поэтому там можно использовать любой режим работы.

Назначение контактов SD карты в SD режиме


Назначение контактов SD карты в SPI режиме

Назначение контактов microSD карты в SD режиме



Назначение контактов microSD карты в SPI режиме



Подключение SD и microSD карт к микроконтроллеру в SPI режиме

Напряжение питания SD карт составляет 2.7 - 3.3 В. Если используемый микроконтроллер запитывается таким же напряжением, то SD можно подключить к микроконтроллеру напрямую. Расово верная схема, составленная путем изучения спецификаций на SD карты и схем различных отладочных плат, показана на рисунке ниже. По такой схеме подключены карты на отладочных платах фирм Olimex и Atmel .

На схеме обозначены именно выводы SD карты, а не разъема.


L1 - феррит или дроссель, рассчитанный на ток >100 мА. Некоторые его ставят, некоторые обходятся без него. А вот чем действительно не стоит пренебрегать, так это полярным конденсатором C2. Потому что при подключении карты происходит бросок тока, напряжение питания "просаживается" и может происходить сброс микроконтроллера.

По поводу подтягивающих резисторов есть некоторая неоднозначность. Поскольку SD карты выпускаются несколькими производителями, на них существует несколько спецификаций. В одних документах четко указана необходимость подтягивающих резисторов (даже для неиспользуемых линий - 8, 9), в других документах этих указаний нет (или я не нашел).

Упрощенный вариант схемы (без подтягивающих резисторов) показан на рисунке ниже. Эта схема проверена на практике и используется в платах фирмы Microelectronika. Также она используется во многих любительских проектах, которые можно найти в сети.



Здесь сигнальные линии SD карты удерживаются в высоком состоянии микроконтроллером, а неиспользуемые линии (8, 9) никуда не подключены. По идее они должны быть подтянуты внутри SD карты. Далее я буду отталкиваться от этой схемы.

Если микроконтроллер запитывается напряжением отличным от напряжения питания SD карты, например 5 В, то нужно согласовать логические уровни . На схеме ниже показан пример согласования уровней карты и микроконтроллера с помощью делителей напряжения. Принцип согласования уровней простой - нужно из 5-и вольт получить 3.0 - 3.2 В.



Линия MISO - DO не содержит делитель напряжения, так как данные по ней передаются от SD карты к микроконтроллеру, но для защиты от дурака можно добавить аналогичный делитель напряжения и туда, на функционировании схемы это не скажется.

Если использовать для согласования уровней буферную микросхему, например CD4050 или 74AHC125, этих недостатков можно избежать. Ниже приведена схема, в которой согласование уровней выполняется с помощью микросхемы 4050. Это микросхема представляет собой 6 неинвертирующих буферов. Неиспользуемые буферы микросхемы "заглушены".

Подключение microSD карт аналогичное, только у них немного отличается нумерация контактов. Приведу только одну схему.



На схемах я рассматривал подключение SD карт к микроконтроллеру напрямую - без разъемов. На практике, конечно, без них не обойтись. Существует несколько типов разъемов и они друг от друга немного отличаются. Как правило, выводы разъемов повторяют выводы SD карты и также содержать несколько дополнительных - два вывода для обнаружения карты в разъеме и два вывода для определения блокировки записи. Электрически эти выводы с SD картой никак не связаны и их можно не подключать. Однако, если они нужны, их можно подключить как обычную тактовую кнопку - один вывод на землю, другой через резистор к плюсу питания. Или вместо внешнего резистора использовать подтягивающий резистор микроконтроллера.

Подключение SD и microSD карт к микроконтроллеру в SD режиме

Ну и для полноты картины приведу схему подключения SD карты в ее родном режиме. Он позволяет производить обмен данными на большей скорости, чем SPI режим. Однако аппаратный интерфейс для работы с картой в SD режиме есть не у всех микроконтроллеров. Например у Atmel`овских ARM микроконтроллеров SAM3/SAM4 он есть.



Шина данных DAT может использоваться в 1 битном или 4-х битном режимах.

Продолжение следует...

Многие пользователи iPhone и iPad мечтали получить возможность подключать к своим устройствам карты памяти еще с релиза iPhone 3G. Чуть позже такое решение появилось, но требовало установки джейлбрейка, а потом «родной» переходник все же дождались и от Apple. Тем не менее первый в мире Lightning-картридер с возможностью чтения и записи разработали вовсе не в Купертино, а в небольшой компании Adata.

Осенью прошлого года последняя представила Lightning Card Reader — специальный переходник для работы iPhone и iPad с картами памяти SD и microSD. Мы дождались свой экземпляр и готовы рассказать о своих впечатлениях, а самое главное — ответить на вопрос: нужен ли вообще такой картридер?

Признаться, все — от упаковки до дизайна — выдает в Lightning Card Reader продукт от Apple, однако это вовсе не так. Да, по внешнему виду он напоминает стандартные «яблочные» переходники, но надпись Adata рассеивает все сомнения. Упаковка простая и удобная, а внутри ничего лишнего: только картридер и небольшая инструкция.

Первое, на что мы сразу обратили внимание, это вес. Аксессуар практически невесомый и утяжелит вашу сумку не более, чем полная упаковка жевательной резинки. Очень здорово для фотографов, у которых и без этого рюкзаки весят не менее 10 килограммов.

Сверху у картридера расположен слот для карт microSD, а снизу — для карточек SD, поддерживаются накопители объемом до 256 ГБ. Любопытно, что microSD вставляются правильно, а вот обычные SD приходится сначала переворачивать надписью вниз. То ли задумка дизайнерская такая, то ли коннекторы перепутали. В любом случае решение странное.

Для работы с Lightning Card Reader необходимо установить универсальное бесплатное приложение Power Drive (ссылка ниже) — с его помощью можно переносить данные с карт на iPhone или iPad, просматривать видео и многое другое. Точно так же картридер работает и в обратном направлении — например, можно «залить» ролик с iPad на карточку SD. До Adata остальные аксессуары работали только на чтение, но не на запись.

В приложении предусмотрена возможность получить быстрый доступ к фотографиям и видео на SD, чтобы не лазить по папкам, а также создать резервную копию устройства на карту. И iTunes больше вам не потребуется, ведь Power Drive — это еще и крутой файловый менеджер. Все в одном, как говорится.



Единственное, чего не хватает Lightning Card Reader, по нашим наблюдениям, так это скорости. Копирование видео занимает больше времени, чем хотелось бы, а уж если вы перекидываете ролик в 4K с GoPro, можно еще успеть пообедать. В остальном же это одно из лучших (и чуть ли не единственных) решений, которое можно найти. Аксессуар сертифицирован в рамках программы MFi, чего не скажешь о дешевых китайских подделках.

Кейсов использования подобного устройства довольно много, но все они так или иначе связаны с камерами: к примеру, быстро скопировать на iPhone снимок с Canon Mark III и выложить его в

Может телефон карту на 12гб не поддерживает

Виды флеш карт. Поддерживается ли SD карта вашим кардридером? Тут хотелось бы остановиться поподробнее. ... Обычно, при покупке, в комплекте к ним идет небольшой адаптер, для того, чтобы данную флешку можно было подключить вместо SD карты...

Так может у тебя телефон может принимать СД карты объемом макисмум 8 гб... Посмотри характеристики своего телефона

Зайти на сайт производителя телефона, либо интернет магазин и посмотри какие карты он поддерживает, и где ты взял на 12??? обычно ж идут 8, 16, 32)

Отформатировать карточку

Как включить SD-карту на Андроиде?

Вставь ее

Если у Вас не получается подключить, Android планшет к компьютеру, попробуйте его перезагрузить. Такое часто бывает когда Вы вставляете или извлекаете SD карту или несколько раз подряд подключали- выключали USB.

Почему комп не видит телефон андроид, а SD-карту видит???

Возможная проблема: Установи на телефоне режим подключения, как носитель. Или заблокирован доступ в карте, это можно изменить в настройках. Конкретнее подсказать не могу, с android только на Вы.

Samsung a7 при подключении к виндовс 8 только заряжаетса. Как его подключить для обмена файлами? ... зайди Настройки-память-извлечь SD карту,потом подключайся к компу как USB.

Помогите! Не могу включить и настроить SD карту!! Lenovo A390 версия OC Android 4.0.4

Настройки - Память - Выбрать съемная память.

Купили сразу SD карту. проблема не заставила себя ждать. нИ приложения с переносами, ни приложения проводники не решают данную проблему. Модель A328 Android 4.4.2.

Что нужно сделать чтобы на Android 4.4.2 kitkat кэш игр записывался на sd карту

Включить root и устанавливать игры на SD.

Привет а на андройд 4.4.2 какую программу можно скачать чтобы сразу на sd скачивалась??? ... LG L7 перенос приложений на SD карту. Ошибка распаковки файла. В какую папку загружается файл приложения перед установкой на android?

Вот вся информация о кэш. http://mobigama.net/kesh_na_android.html Подробно все описано, как говорится, не заблудишься)))

Как подключить SD карту к iPhone 5c

Никак. Iphone не принимают внешнюю память

DirectoryBind работает на Android начиная с 2.3.3 и 4.0.x. ... Приступаем Меню gt Настройки gt Диспетчер приложений gt листаем страницу вправо gt Карта памяти SD gt Ставим галочку на выбранной проге gt Жм м кнопку - На карту памяти SD .

Никак там нет слотов для sd карт

Я сестрёнке так сделала когда у неё памяти не хватало, скачала приложение "Oблако Mail.Ru" из плей маркета (правда у неё тел самсунг на андроиде, но думаю что для iPhone должно быть это приложение не знаю откуда вы их качаете но должно быть, аналог Dropbox если что но в Dropbox 20 гб памяти даётся а в mail.ru 100 гб) и перекинула все её фотки и видео в это облако mail.ru прям с сотки, после того как они полностью закачались в это облако с сотки я их удалила и память освободилась можно теперь и игры ставить и видео снимать и фоткаться и флешка не нужна, нужен только доступ в инет (желательно с хорошей скоростью) к твоим богатствам! а чрез это приложение если есть инет всё это богатство как будто у тебя в сотке остаётся и в любой момент можно скачать хоть с сотки хоть с компа имея доступ к твоей почте, и на отдельные файлы можно открывать и закрывать доступ кому угодно с помощью создания и удаления ссылок к этим файлам, вроди бы мелочь но приятно удобная) так после этого меня её подружки замучали с этим что да как, всем понравилось, если не очень понятно объясняю то попроси кого нибудь по старше ознакомиться они разберуться что к чему! если конечно я тебя правильно поняла;)

Как подключить карту sg на андроид?:...

Купить ее

Из этой статьи вы узнаете, как форматировать SD карту в Windows, Mac OS X, и Android. ... Если на вашем компьютере нет встроенного порта для SD-карты, можно использовать внешний считыватель, подключаемый через USB-порт.

Она же sd а не sg, ну не важно, смотря какой телефон, может закрыты функции переноса приложений, а может и карты просто нет в телефоне у вас

Пытаюсь подключить планшет (Андроид 4,2) к компьютеру, выдает: произошла ошибка при подключении SD-карты, что делать?

Вынуть SD-карту.

Как подключить Android к компьютеру. ... Кроме возможности работы со всеми файлами, которые находятся на вашем устройстве и SD-карте, DroidExplorer позволяет быстро удалить ненужные приложения.

На планшете (андроид) не могу подключить SD карту. Он ее не "видит"

Настройки - Память, правильно вставьте карточку и если на ней нет нечего важного то советую отформатировать средствами планшета её, может поэтому и не видит

Старайтесь производить безопасное извлечение, и после этого не сразу отсоединять кабель USB, а подождать пока не пропадет надпись Подготовка карты SD . ... Как подключить HTC к компьютеру.

Как в андроиде без всяких программ залезть в sd карту?

В старых версиях Android функция установки программ на карту памяти отсутствовала. ... 2. Перейдите в раздел Приложения. 3. Переместитесь на вкладку SD-карта.

Если нет встроенного проводника. то никак

Подключить к компу как флеш-накопитель

Если нету папки: мои файлы то установи файловый менеджер

Если ф. менеджер не открывает карту, то скачай нормальный ф. мен.
Андроид 2+ и 4+ сильно различаются. Писать надо, чего у тебя - кпк, планшет и пр.

Почему не подключается SD-карта на андроид?

Как подключить андроид телефон к авто магнитоле через USB вход? нужно чтение внешней карты памяти.

Если есть вход в магнитоле *ЮСБ* попробуй перекинуть на флеш накопитель свою музыку.так как возможно музыка в телефоне записана в другом формате встроенной памяти.. или проще через ФМ-трансмитер передатчик на магнитоле включенной на волну ФМ. такая функция имеется в навигаторах. за твой андроид не знаю

On SD card приложения, которые мы уже переместили на карту памяти. ... Как восстановить удаленные файлы на Android. Как подключить флешку к планшету.

Почему андроид FLY 238 пишет: ПК не будет видеть SD карту при подключении через USB провод?

Драйвера установи соответствующие на ПК

Android Установка приложений на встроенную флешку при подключенной SD. ... По скольку этого объема вполне хватает, SD-карту покупать не стал. Все было хорошо пока не понадобилось подключить SD для обмена файлами.

Люди, андроид перестал видеть карту sd при подключении к компьютеру, видна только внутренняя встроенная память!

Попробуй переформатировать карту в FAT32.

Android Настройка Android Замена внутренней памяти внешней SD-картой на планшетах Androida. ... Как получить ROOT на Android. Как подключить устройство Android как накопитель.

Как установить рингтон на андройде 4.0.4 что бы он не слетал после подключения SD-карты к компьютеру?

Перенеси рингтон на внутренюю память через рут эксплорер (Или что то подобное), и ставь рингтон с внутреней памяти.

Настройка - память - подключить SD карту хотя монтироваться должна автоматом В том же. ... Начиная с Android 2.2 установка приложений на карту памяти SD заложена в стандартные функции.

Внутренняя sd карта на андроиде отключена. Что делать? (как её включить) Если не показывает вкл sd карту

Потому что андроид не дружит с флешкой а так зайдите в настройки потом в память и там будет флешка внешняя на нее нажимайте и там будет написано отключить или включить и тд

Подключая андроид к компьютеру стандартным методом вы однозначно лишаетесь возможности работать с файлами на SD-карте... Ниже мы приведем лишь несколько примеров подключения android к компьютеру, используя сторонние приложения

Ибо не фиг юзать флешку туда-сюда, иначе ога начинает вот так лагать

Как удалить приложения с SD (Android) если карту подключить к компу?

Через программу acronis disk director 11

Значок карты и уведомление sd-карта можно удалить и чуть ниже серыми буквами можно безопасно удалить sd-карта либо когда нажимаешь в настройки-память-подключить SD-карту. версия Android 4.2.9 и...

Установленные приложения лучше удалять с аппарата, иначе остаются хвосты в любом случае

Можно ли как нибудь закинуть кэш игры на телефон (Android) без SD карты

Так а если просто подключить телефон к компьютеру - по идее внутренняя флэшка будет видна, туда и кидайте кэш

У меня на андроиде не подключается SD карта флешка Как е подключить? Она вставлена в телефон. ... настройки-память-подключить SD карту.

У меня на андроиде не подключается SD карта (флешка) Как её подключить? Она вставлена в телефон.

Проверь м. б. там сдвинулась зашита с боку.

Начиная с версии операционной системы Android 2.2 и выше у вас есть возможность произвести перенос приложений на SD карту памяти... 2. Подключите ваш телефон через USB кабель к компьютеру, запустите MiniTool Partition Wizard 11 Мб и...

Извлечена SD карта на android. Как вернуть обратно?

Сделать вайп даты в рекавери
P.S. Все данные будут удалены.

Если у вас полноразмерная SD-карта, например, от фотоаппарата, подключить е к планшету не получится. А в устройствах Apple слота для карт памяти нет вовсе. На планшетах с Android и Windows слот для карт microSD вынесен на одну из граней, а...

При скачивании игрытребуется SD карта... игра память телефона будетдудалять?

Как отличить китайский айфон от оригинального? М?

Китайский очень быстро сломается!

Не видит Sd карту на android. Рад приветствовать вас, дорогие пользователи сайта! ... Первой, и само распространенной причиной того, что не работает sd-карта может быть то, что она сгорела.

Цена в первую очередь, качество сборки, функциональность, типы и обновления ПО и других гаджетов

Большинство современных смартфонов оснащены слотом для карты памяти. Хiaomi не является исключением. Наличие этой функции позволяет сохранить на устройстве важную информацию (музыка, фото, документы, заметки), расширить его возможности, функциональность, а также использовать мобильное устройство в качестве внешнего накопителя. Когда Хiaomi не видит карту памяти, владельцы сталкиваются с некоторыми трудностями, особенно если телефон был способом хранения данных для учебы или работы.

Что нужно сделать в первую очередь

Если вы решили сразу форматировать карту или нести гаджет в ремонт, не спешите это делать. Для начала вставьте SD в другое устройство (планшет или компьютер) и проверьте её работу. Эти простые действия помогут понять, проблема в телефоне или в съемном накопителе. Только после этого можно выбрать способ решения.

Если есть возможность, протестируйте другую карту памяти с вашим смартфоном, вполне возможно, что оба устройства функционирует исправно.

Какие могут быть причины поломки

Иногда нарушение может заключаться непосредственно в смартфоне. Чтобы вернуть функциональность флешки, скопируйте информацию на компьютер или другое устройство, выполните следующие действия (в зависимости от ситуации):

  1. Сбои программного обеспечения смартфона. Выньте и вставьте флешку обратно, перезагрузите гаджет. Работа системы восстановится.
  2. Хiaomi не поддерживают работу с SD от некоторых производителей или в связи со своими ограниченными возможностями не может работать с накопителями большой емкости. Изучите технические параметры гаджета, возможно, ему не под силу карты объемом памяти свыше 8 Гб, а вы предлагаете ему 32 Гб. Стоит отметить, что иногда правильная работа невозможна из-за типа файловой системы.
  3. Поломка контактов в слоте. Когда Хiaomi не видит накопительную sd карту по этой причине, выньте карточку и вставьте ее обратно. Если проблема повторилась неоднократно, стоит отнести гаджет в ремонт. Исправление поломки занимает несколько минут и стоит сравнительно недорого.

Как восстановить функциональность

При выходе sd карты из строя можно отметить следующие причины:

  1. Память флешки переполнена. Выньте ее с телефона и откройте на компьютере, удалив лишние файлы или сохранив их на компьютере. Освободив пространство на накопителе, вы восстановите функциональность устройства;
  2. Заражение вирусами или неверный формат файловой системы. Нужно провести форматирование на телефоне или компьютере. При таком способе решения задачи, данные на устройстве будут утрачены.

Чтобы провести форматирование с помощью смартфона следуйте следующему алгоритму:

  • зайдите в Меню и выберете раздел «Память»;
  • выберете функцию «Извлечь карту памяти» или «Очистить карту памяти» и ожидайте, пока начнется процесс;
  • после завершения форматирования, появится функция «Подключить карту SD».

В зависимости от модели Хiaomi название или порядок функций может измениться.

Чтобы провести форматирование с помощью компьютера, стоит придерживаться следующего алгоритма:

  • подключаем карту к компьютеру с помощью картридера;
  • на компьютере открываем раздел «Мой компьютер» (значок находится в меню Пуск или на рабочем столе), выбираем SD, которая обычно отображается как флешка (или съемный диск);
  • нажав правой кнопкой мыши на флешку, перед вами появится меню, где нужно выбрать функцию «Форматировать»;
  • нажимаем кнопку начать и ожидаем пока форматирование завершиться;
  • готово, карта памяти должна восстановить свою функциональность.

Смартфон может не видеть SD по разным причинам, и это не всегда является серьезной проблемой. Тем не менее если никакие способы вам не помогают, возможно, лучшим решением будет обратиться к квалифицированным специалистам по ремонту. Не стоит самостоятельно разбирать гаджет и пытаться отремонтировать его.

Всем доброго дня! Сегодня мы поговорим о подключении карты памяти SD к микроконтроллеру STM32.

Казалось бы, памяти полно у контроллеров STM32F10x, зачем там еще дополнительная, но это впечатление обманчиво) Вот, например, надо нам на дисплей вывести пару-тройку разных изображений – формат 320*240 – то есть 76800 пикселей, каждому из которых соответствует целых 2 байта. Вот и получаем около 150 кБ на одну картинку. А это немало по меркам микроконтроллера, и не факт, что две разные картинки удастся запихать в его Flash память. Или надо нам хранить большие объемы информации, данные с какого-нибудь датчика, к примеру. Да еще так, чтобы эти данные были доступны и после отключения питания. Вот тут то нам и пригодится внешняя память. И отличным решением будет SD карта памяти или MMC. К слову в этой статье мы будем проводить опыты над картой micro SD .

Для начала пара слов о самой карте памяти, точнее о ее распиновке. Выглядит все это дело следующим образом:

Итак, что тут у нас? Ну сразу видно, что выводов у нее целых восемь штук. Назначение выводов следующее (слева направо):


Колонка SPI Mode нам намекает на то, что взаимодействует с микроконтроллером при помощи интерфейса SPI. НО! Мы пойдем по другому пути 😉 Все дело в том, что STM32 имеют на своем борту готовый периферийный модуль для работы именно с картами памяти, и называется он SDIO.

Вообще взаимодействие с картами памяти заключается в передаче им определенных команд. Некоторые команды требует наличия аргумента, некоторые нет. Команды можно найти в официальной документации на конкретную карту. Так вот встроенный модуль SDIO дает возможность значительно упростить процесс передачи команд, да и вообще процесс работы с внешними картами памяти. Например, вот регистр SDIO_CMD – туда мы просто напросто записываем код команды, которую хотим передать карте. Или вот статусный регистр SDIO_STA – там целых 24 флага на каждый чих, то есть для большого количества событий.

Кстати STM радует еще и добротной документацией на все это дело. Вот, к примеру, подробное описание инициализации для карты памяти SD (аналогично все описано для других типов карт):

Ну, собственно, пора перейти к практическому примерчику. Поковыряем-ка Standard Peripheral Library.

В файле stm32f10x_sdio.h по традиции находим структуры для всевозможной настройки – то есть для выбора источника тактового сигнала, частоты контроллера SDIO, настройки количества передаваемых байт. Там все так щедро откомментировано, что даже не хочется отдельно это повторять)) Просто смотрите:

typedef struct { uint32_t SDIO_ClockEdge; /* Specifies the clock transition on which the bit capture is made. This parameter can be a value of @ref SDIO_Clock_Edge */ uint32_t SDIO_ClockBypass; /* Specifies whether the SDIO Clock divider bypass is enabled or disabled. This parameter can be a value of @ref SDIO_Clock_Bypass */ uint32_t SDIO_ClockPowerSave; /* Specifies whether SDIO Clock output is enabled or disabled when the bus is idle. This parameter can be a value of @ref SDIO_Clock_Power_Save */ uint32_t SDIO_BusWide; /* Specifies the SDIO bus width. This parameter can be a value of @ref SDIO_Bus_Wide */ uint32_t SDIO_HardwareFlowControl; /* Specifies whether the SDIO hardware flow control is enabled or disabled. This parameter can be a value of @ref SDIO_Hardware_Flow_Control */ uint8_t SDIO_ClockDiv; /* Specifies the clock frequency of the SDIO controller. This parameter can be a value between 0x00 and 0xFF. */ } SDIO_InitTypeDef; typedef struct { uint32_t SDIO_Argument; /* Specifies the SDIO command argument which is sent to a card as part of a command message. If a command contains an argument, it must be loaded into this register before writing the command to the command register */ uint32_t SDIO_CmdIndex; /* Specifies the SDIO command index. It must be lower than 0x40. */ uint32_t SDIO_Response; /* Specifies the SDIO response type. This parameter can be a value of @ref SDIO_Response_Type */ uint32_t SDIO_Wait; /* Specifies whether SDIO wait-for-interrupt request is enabled or disabled. This parameter can be a value of @ref SDIO_Wait_Interrupt_State */ uint32_t SDIO_CPSM; /* Specifies whether SDIO Command path state machine (CPSM) is enabled or disabled. This parameter can be a value of @ref SDIO_CPSM_State */ } SDIO_CmdInitTypeDef; typedef struct { uint32_t SDIO_DataTimeOut; /* Specifies the data timeout period in card bus clock periods. */ uint32_t SDIO_DataLength; /* Specifies the number of data bytes to be transferred. */ uint32_t SDIO_DataBlockSize; /* Specifies the data block size for block transfer. This parameter can be a value of @ref SDIO_Data_Block_Size */ uint32_t SDIO_TransferDir; /* Specifies the data transfer direction, whether the transfer is a read or write. This parameter can be a value of @ref SDIO_Transfer_Direction */ uint32_t SDIO_TransferMode; /* Specifies whether data transfer is in stream or block mode. This parameter can be a value of @ref SDIO_Transfer_Type */ uint32_t SDIO_DPSM; /* Specifies whether SDIO Data path state machine (DPSM) is enabled or disabled. This parameter can be a value of @ref SDIO_DPSM_State */ } SDIO_DataInitTypeDef;

Отметим как в SPL реализована передача команд карте памяти. Для этих целей отведена отдельная структура SDIO_CmdInitTypeDef. В поле SDIO_CmdIndex вводим код команды, в поле SDIO_Argument – аргумент команды, также заполняем остальные поля. Осталось как то эти данные запихать в карту micro SD 😉 А для этого нам приготовили функцию:

SDIO_SendCommand (SDIO_CmdInitTypeDef *SDIO_CmdInitStruct)

В качестве аргумента передаем ей как раз таки созданную нами структуру. Для записи данных есть функция – SDIO_WriteData(uint32_t Data) . После вызова этой функции данные окажутся в специально предназначенном для этого регистре – SDIO_FIFO.

Вот так вот осуществляется работа с модулем SDIO в STM32F10x)

Теперь перейдем к практике наконец-то. Я снова буду работать с платой Mini STM32, поскольку добрые китайцы озадачились установкой на нее слота для карты памяти micro SD. Вот схема подключения разъема для карты к микроконтроллеру:

Для написания программы воспользуемся готовым примером для Keil’а – стащим оттуда два файла, в которых реализовано что-то вроде драйвера для работы с картами – это файлы sdcard.c и sdcard.h. Создаем новый проект, цепляем туда эти файлы, а кроме того, естественно, файлы CMSIS и SPL. Вот готовый проект, в который все уже добавлено – остается только написать код функции main())

В файле sdcard.c реализованы всевозможные функции для работы с картой памяти, нам теперь остается их только использовать 😉 Пишем код! Для примера запишем на micro SD 512 байт тестовых данных, а затем попробуем их считать:

// Цепляем нужные файлы #include "stm32f10x.h" #include "sdcard.h" /*******************************************************************/ // Массивы входных и выходных данных и переменная для хранения данных // о нашей карте uint8_t writeBuffer[ 512 ] ; uint8_t readBuffer[ 512 ] ; SD_CardInfo SDCardInfo; /*******************************************************************/ int main() { // Тестовые данные для записи for (uint16_t i = 0 ; i < 512 ; i++ ) { writeBuffer[ i] = i % 256 ; readBuffer[ i] = 0 ; } // Иницилизация карты SD_Init() ; // Получаем информацию о карте SD_GetCardInfo(& SDCardInfo) ; // Выбор карты и настройка режима работы SD_SelectDeselect((uint32_t ) (SDCardInfo.RCA << 16 ) ) ; SD_SetDeviceMode(SD_POLLING_MODE) ; // И вот наконец то запись и чтение SD_WriteBlock(0x00 , writeBuffer, 512 ) ; SD_ReadBlock(0x00 , readBuffer, 512 ) ; while (1 ) { } } /*******************************************************************/

Обратите внимание, что SD карта поддерживает запись блоками по 512 байт.

Если мы запустим программу под отладчиком, то увидим, что считанные данные соответствуют записанным =) Так что эксперимент можем считать удавшимся. На этом на сегодня заканчиваем, до скорых встреч!



Загрузка...