Как подключить SD карту к микроконтроллеру? (примитивный способ). Подключение карты памяти к компьютеру или ноутбуку

25.08.2019

MicroSD-карты представляют собой карты памяти большой емкости, которые часто используются в телефонах и планшетах. SD-карта считается «установленной» (подключенной), когда мобильное устройство распознало карту и открыло к ней доступ. В большинстве устройств SD-карта монтируется автоматически после ее вставки в слот для microSD-карт. Если вы используете смартфон линейки Galaxy или Android-устройство, вы можете подключить SD-карту вручную посредством меню «Настройки». Если устройство не распознает SD-карту, то, возможно, карта повреждена или имеют место неполадки с самим устройством.

Шаги

Подключение microSD-карты в Android-устройствах

    Вставьте microSD-карту в соответствующий слот для карт памяти вашего Android-устройства. Перед этим зарядите батарею устройства и выключите его. Медленно вставляйте карту до тех пор, пока не услышите щелчок. Если вы не можете найти слот для карт памяти, почитайте руководство по эксплуатации устройства или свяжитесь с его производителем.

    Включите Android-устройство.

    На главном экране нажмите «Настройки». Значок этого приложения имеет вид шестеренки. Нажав «Настройки», откроется экран с настройками устройства; затем нажмите «SD и память устройства».

    Нажмите «Переформатировать». Процесс переформатирования подготовит устройство к установке новой карты памяти и займет всего несколько секунд. Если этот процесс затянулся, перезагрузите смартфон и повторите описанные действия еще раз.

    По завершении процесса переформатирования нажмите «Подключить SD-карту». Устройство подключит карту памяти и сделает ее доступной для использования. Если кнопка «Подключить SD-карту» не активна, нажмите «Извлечь SD-карту», дождитесь окончания процесса извлечения карты, а затем нажмите «Подключить SD-карту». Этот шаг также поможет вам избавиться от сбоя системы Android, который препятствовал подключению карты памяти.

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

    На главном экране нажмите «Приложения». Включив смартфон, откроется главный экран. В правом нижнем углу этого экрана найдите значок в виде белой решетки; под значком вы увидите слово «Приложения» (Apps). Щелкните по этому значку.

    Нажмите «Настройки». Значок этого приложения имеет вид шестеренки. Нажав «Настройки», откроется новый экран. В верхнем правом углу найдите значок в виде трех белых точек. В устаревших моделях смартфонов Galaxy (4 и более старые) под точками вы увидите слово «Общие» (General). В современных моделях смартофнов Galaxy (5 и новее) под точками вы увидите слово «Дополнительно» (More). Независимо от модели вашего смартфона щелкните по значку в виде трех белых точек.

    Нажмите «Память». Нажав на эту кнопку, откроется новый экран. Прокрутите экран вниз и найдите опцию «Подключить SD-карту». Щелкните по этой опции и дождитесь окончания процесса подключения карты. Если опция «Подключить SD-карту» не активна, нажмите «Извлечь SD-карту», дождитесь окончания процесса извлечения карты, а затем нажмите «Подключить SD-карту».

Устранение неполадок с устройством

    Извлеките SD-карту из слота для карт памяти вашего устройства. В разделе «Память» нажмите «Извлечь SD-карту». Дождитесь отображения на экране сообщения о том, что карту памяти можно извлечь. Медленно вытащите карту памяти из слота, чтобы не повредить ее.

В некоторых устройствах Android есть слоты для карт памяти (как правило, формата microSD). Если устройство поддерживает SD-карты, вы можете:

  • увеличить объем памяти;
  • использовать карту для работы некоторых функций и приложений.

Чтобы узнать, есть ли у вашего устройства слот для SD-карты, посетите сайт производителя .

Примечание. Некоторые из этих действий можно выполнить только на устройствах с Android 6.0 и более поздними версиями.

Как установить SD-карту

Шаг 1. Вставьте SD-карту.
  1. Уточните, где находится слот для SD-карты.
  2. Выключите телефон.
  3. Извлеките лоток SD-карты или снимите заднюю крышку устройства (в зависимости от модели). При необходимости поднимите язычок, удерживающий карту.
  4. Поместите SD-карту в слот. Если вы подняли удерживающий язычок, опустите его.
  5. Установите обратно лоток SD-карты или заднюю крышку устройства.
Шаг 2. Включите SD-карту.
  1. Дождитесь появления уведомления об SD-карте.
  2. Нажмите Настроить .
  3. Выберите нужный тип хранилища.
    • Съемный накопитель:
      Карту можно переносить на другое устройство вместе со всеми файлами (например, фотографиями и музыкой). Приложения на съемный накопитель перемещать нельзя.
    • Внутренняя память:
      На карте можно хранить приложения и данные только для этого устройства. Если вы переместите ее на другое устройство, все данные с нее будут удалены.
  4. Чтобы настроить SD-карту, следуйте инструкциям на экране.
  5. По завершении нажмите Готово .

Как использовать SD-карту

Как переместить приложения на SD-карту

Если вы подключили карту в качестве внутренней памяти, можно перенести приложения на нее.

Примечание. Не все приложения можно перенести SD-карту.

Как переместить файлы на SD-карту

Если вы установили SD-карту в качестве съемного накопителя, то можете перенести на нее различные файлы, например музыку и фотографии. После этого их можно удалить из внутренней памяти устройства.

Шаг 1. Скопируйте файлы на SD-карту.

Шаг 2. Удалите файлы с внутреннего накопителя.

Вы можете посмотреть содержимое SD-карты и узнать, сколько места осталось.

Если SD-карта используется в качестве внутреннего накопителя

Если SD-карта используется в качестве съемного накопителя

  1. Проведите по экрану сверху вниз, чтобы открыть панель уведомлений.
  2. Под уведомлением об SD-карте нажмите Открыть .

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

SD или может microSD?

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

Для того чтобы, не выпаивать каждый раз SD карту для проверки её на компьютере, я рекомендую использовать её младшего брата — microSD с переходником » microSD на SD» .

MicroSD ничем не отличается от обычной SD , различия только в размере. От нас требуется правильно соединить выходы микроконтроллера с переходником «microSD на SD». Данный пост применим как и для SD, так и для microSD.

Какой микроконтроллер?

В качестве микроконтроллер я буду использовать ATmega328P (или Arduino UNO ), но данный подход можно использовать для любого микроконтроллера поддерживающий протокол SPI .

Важно заметить, что данный контроллер (да и многие другие) построен на технологии CMOS. Это означает, что нулевой уровень (логический 0-ль) соответствует 0.1 В , а высокий логический уровень (логическая 1-ца) соответствует напряжению питания . Т.е. каким напряжением будет запитан микроконтроллер, то вы и получите на выходе при логической 1-цы. Если вы используете Arduino, то у вас нет возможности изменять напряжения питания контролера, это означает, что на выходе, в качестве логической единицы, у вас будет ~5 В . Что не соответствует уровню логической 1-цы SD карты, т.е. 2.7-3.6 В. Поэтому напрямую подключить SD (microSD) к разъемам микроконтроллера не получиться, придется делать небольшую развязку, в виде делителей напряжений .

Делители напряжения

Делитель напряжений будем собирать из резисторов , нам необходимо их подобрать таким образом, что бы мы могли, снять с делителя от 2.7 до 3.6 В . Это можно сделать, с помощью резисторов номиналом 1.8 кОм и 3.3 кОм . Можно использовать и другие комбинации, главное попасть в промежуток от 2.7 до 3.6 В на выходе.

В реальности делитель я сделал следующим образом, в разрез провода впаял резистор 1,8 КОм , к концу этого резистора припаял резистор для земли — 3.3 КОм . Надвинул на резисторы и оголенные участки — термоусадочную трубку.

Картинка вверху «без термоусадки «, внизу «с термоусадкой на резисторах и оголенных участках »


Что в итоге? Как подключать?

В итоге, SD карта к микроконтроллеру нужно подключить следующим образом:

P.S. выход DO подключать к делителю нет необходимости , т.к. на него мы ничего не подаем , а только получаем данные с SD карты.
P.S. в данной схеме, я не рекомендую извлекать и вставлять microSD в разъем во время работы микроконтроллера, делайте это только в обесточенном состояние.

Если на вашем устройстве недостаточный объем внутренней памяти, можно использовать SD-карту как внутреннее хранилище для вашего телефона Android. Данная функция, называемая Adoptable Storage, позволяет ОС Андроид форматировать внешний носитель данных как постоянное внутреннее хранилище. Информация на установленной SD-card зашифрована и не может быть в дальнейшем использована на другом устройстве.

SD Card – это очень удобный вариант для хранения фотографий, песен и видео. Даже если у вас есть большой объем внутренней памяти на Андроид-смартфоне, всегда может понадобиться большой кусок памяти для хранения длинных видеороликов, снятых камерой высокого разрешения вашего телефона.

Важно знать

Есть один недостаток, СД-чип может отставать при записи видео высокого разрешения.

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

Что такое накопительное хранилище?

Накопительное хранилище – это основной объем памяти вашего смартфона, но при необходимости его можно расширить, использовав для этого СД-карточку. Данная на Андроид называется Adoptable Storage. Это позволит использовать съемную карту microSD, установленную на телефоне Android, в качестве основного хранилища. Таким образом, вы сможете легко решить проблему, как сделать SD-карту основной памятью на Андроиде и преодолеть нехватку в пространстве, если телефон имеет небольшой внутренний объем.

Особенности использования карты как основного хранилища

Есть ряд некоторых важных особенностей, которые следует учитывать при данной процедуре.

Будет полезным

При использовании накопителя, будь то SD-флешка или USB-накопитель, важно помнить, в каком формате находится данный девайс и поддерживает ли его операционная система Android, а основных файловых форматов существует четыре типа: FAT32 или exFAT, ext4 или f2fs.

Как поменять память телефона на карту памяти андроида? Вопрос не совсем корректный, полностью выполнить замену невозможно, можно лишь как бы «нарастить» дополнительный объем.

Использование вашей SD-card в качестве основного накопителя может быть отличным решением для меломанов и любителей посмотреть сериалы по пути на работу или в длительном путешествии. Но, как зачастую это бывает, расширение памяти всегда упирается в стоимость требуемого девайса, ведь они отличаются как по скорости, так и по объему, а также по адаптируемой функции хранения информации. Вот некоторые нюансы, рассматривать которые можно с разных сторон – как в отрицательную сторону, так и в положительную:

Как использовать SD-карту в качестве внутренней памяти на Android?

Достаточно ли Вам внутреннего накопителя для хранения всех своих данных?

Как заменить внутреннюю память телефона на внешнюю sd карту на android? Конфигурирование вашей SD-карты для работы в качестве внутреннего хранилища на Android – это, по сути, довольно простой процесс. Ничего сложного в этом нет и вы далее сами в этом убедитесь.

Возможно, что функция Adoptable Storage не поддерживается вашим устройством, даже если смартфон работает под управлением Android 6.0 и выше (бывает и такое, все зависит от модели и марки смартфона). Возможно, производитель устройств отключил данную функцию. Однако существуют методы использования командной строки, которые позволяют принудительно использовать флеш-накопитель для хранения данных.

Ниже перечислены основные шаги по форматированию.


На следующем экране у вас есть последний шанс решить для себя, не хотите ли вы передумать

Важно знать

Не забудьте сделать резервную копию данных, после форматирования информация исчезнет бесследно!


После завершения процесса форматирования вы можете использовать съемную СД-шку как «временное» или «съемное» постоянное место. Но имейте в виду, что теперь будут недоступны горячая замена и извлечение, как, возможно, вы делали ранее. Поэтому не извлекайте флешку, не используя параметр Eject. Кроме того, вы можете практически удалить принятое операционкой место, что, соответственно, не рекомендуется, так как это может вызвать определенные ошибки в работе устройства. Теперь вы знаете, как сделать карту памяти основной памятью на Андроиде.

Всем доброго дня! Сегодня мы поговорим о подключении карты памяти 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 байт.

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