Подключение SD карты, как внутренней памяти на Андройде. Почему телефон не видит карту памяти SD или microSD — все решения Подключается sd карта

Флеш-карта - это самый функциональный и популярный носитель информации в современности. У компакт-дисков есть и свои положительные стороны, но объем памяти, понятность в применении и другие факторы на стороне флешки.

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

Только вот вывести из строя или потерять карту памяти намного проще

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

РАЗНОВИДНОСТИ УСТРОЙСТВ ЭТОГО ТИПА

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

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

  • MicroSD. Карта памяти микро SD благодаря своему формату и объему памяти обычно используется в смартфонах, планшетах и медиа-плеерах.

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

  • MiniSD уже чуть больше, чем микро. Применяются на плеерах и телефонах, которым уже 5-10 лет.

Сегодня уступили свое место предыдущему варианту

  • SD. Это самый крупный вид, который применяется в фото-видео аппаратуре, в частности, в автомобильных регистраторах.

Отличается этот вариант большим объемом памяти и хорошей скоростью работы

Интересно, что первый вариант при надобности можно превратить в третий с помощью переходника. В этот адаптер вставляется микро карта, а потом конструкция вставляется в устройства, которые работают с SD.

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

ВАЖНЫЕ НЮАНСЫ В ПРИМЕНЕНИИ КАРТЫ ПАМЯТИ

  1. Кроме объема памяти, на поверхности изделия указывают еще и скорость (если быть точным – класс). Так, если у флешки этот показатель равен 10, то передавать данные на устройство можно со скоростью 10 МБ в секунду. Стоит учитывать, какой класс необходим для нормальной работы гаджета.
  2. Карта памяти для телефона при помощи адаптера может применяться как SD. Но, как уже говорилось, это не советуют делать из-за несоответствия класса деталей.
  3. Картридер USB для флешек надо выбирать с учетом совместимости. Когда применяется гаджет, открывающий SDHC, то он сможет работать с SD 1 или 1.1, а вот прочитать SDXC не получится.

Перед покупкой устройств для чтения надо учитывать эту характеристику

Ноутбуки, которым 7 и больше лет могут оснащаться стандартнымикардридерами, но они не могут открывать SDHC. Решить проблему поможет кардридер, который подключается через USB. Стоит он пару сотен рублей. Еще можно использовать otg кабель (он поможет подключить кардридердля микро sdили обычнуюUSB-флешку даже к смартфону).

ОДИНАКОВОЕ НАЗВАНИЕ РАЗДЕЛОВ

Вернемся к проблеме нечитаемости устройства.Флешка не будет появляться в меню «Мой компьютер», если ей дано название D, и с аналогичным названием работает раздел операционки.

рис.1. Разблокировать флешку в такой ситуации несложно, для этого открывается меню «Управление дисками» (комбинация клавиш Win и R и пропись команды diskmgmt.msc)

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

  • В имя поставить уникальную букву, под которой еще нет разделов.

рис.2. Это делается при помощи нажатия ПКМ и дальнейшего выбора операции по изменению буквы

  • Отформатировать карту SD штатными средствами Windows или с помощью специальных утилит. Но стоит учесть, что все файлы с носителя информации исчезнут.

ПРОБЛЕМА С ДРАЙВЕРАМИ

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

Бывает, что сотрудники магазинов техники забывают или не имеют желания устанавливать необходимые компоненты и продают компьютеры так. В комплекте к технике должны быть диски с драйверами, установка которых не отнимет много времени. Если компьютер не новый, или диск с «дровами» затерялся, то поможет всемогущий интернет. В такой ситуации восстановление флешки микро sd ограничиться только поиском и установкой компонентов.

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

ПОДКЛЮЧЕНИЕ ПРИ ПОМОЩИ ДРУГИХ ГАДЖЕТОВ

Если флешка подключается к телефону без проблем, а на ПК ее не видно, то почему бы не использовать этот смартфон в качестве проводника и напрямую его подключить к компьютеру (можно применять usb-кабель otg)

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

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

Как видим, восстановление карты памяти microsd – дело несложное, иногда надо установить драйвера, сменить букву раздела или использовать сторонние устройства.

Хотя современные устройства обладают достаточным количеством памяти, чтобы хранить действительно большое количество данных и файлов, этого объема не всегда бывает достаточно. Расширить дисковое пространство планшетов можно при помощи обычных карт памяти. Давайте разберемся, все ли устройства поддерживают данную возможность и куда вставляются «расширители».

Поддержка карт памяти

К сожалению, производители не всегда задумываются об удобстве пользователей, поэтому некоторые устройства, особенно из более высокой ценовой категории, не снабжаются разъемами для карт памяти, оставляя пользователя со встроенными 16, 32, 64 или 128 ГБ памяти. Такой подход оправдывается наличием встроенных облачных сервисов (iCloud, Google Drive, Dropbox), но полностью заменить флеш-накопитель они не смогут.

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

Но, прежде чем покупать такое устройство, желательно уточнить у продавца возможность подключения внешних накопителей по технологии OTG или же о наличии USB-разъема типа С. Они позволят подключать обычную флешку, что позволит сохранить свои файлы и данные вне пределов планшета и интернета.

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

Если же вы остановили свой выбор на планшете с разъемом для карт памяти (как правило – это Micro SD), тогда достаточно подобрать накопитель, подходящего по объемам под ваши требования, и вставить его в разъем, который находится где-то на корпусе. Как правило, он располагается на боковых гранях, под защитным колпаком.

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

Мы выводили картинку на дисплей с sd карточки, но в ней были упущены некоторые моменты, первый - подключение самой карточки, второй - была рассмотрена лишь часть функций библиотеки Petit FatFs , давайте остановимся на этих моментах подробнее.

Общение с карточкой возможно по одному из двух интерфейсов, SPI или SD .



Надо сказать, что SD интерфейс может работать в однобитном и четырёхбитном режимах.

Схема подключения карточки по SPI стандартная и выглядит следующим образом, не используемые выводы карточки нужно с помощью резистора 10К подтянуть к питанию.


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

Надо отметить, что при подключении по SPI карточка очень требовательна к напряжению питания и небольшая просадка питающего напряжения приводит к неработоспособности карточки, это проверено на личном опыте, по поводу SD интерфейса сказать нечего, ещё не пробовал. Это всё писал к тому, что по питанию обязательно ставить конденсаторы . Что касается дросселя, он должен быть рассчитан на ток до 100мА, но ставить его необязательно.

На схемах, изображённых выше видно, что для работы карточке необходимо 3.3 вольта, соответственно, в линиях передачи данных напряжение не должно выходить за диапазон 0 – 3.3 вольт и тут возникает вопрос, что делать если МК питается от 5 вольт?
Ответ прост, надо согласовать линии передачи данных, а сделать это можно с помощью обычного резистивного делителя.


На схеме видно, что линию MISO согласовывать не надо так, как по этой линии данные передаются от карточки к МК .
На самом деле, мало кто подключает карточку напрямую к МК, гораздо удобнее подключить к МК разъём для карточки или купить шилд с разъемом и всей необходимой обвязкой.

С подключением разобрались, давайте теперь рассмотрим как пользоваться библиотекой Petit FatFs , которая предназначена для 8-битных микроконтроллеров с малым размером памяти.

Библиотека состоит из 5 файлов:
integer.h - заголовочный файл в котором описаны основные типы данных.

diskio.h - заголовочный файл в котором объявлены прототипы низкоуровневых функций для работы с диском и статусные коды, которые они возвращают.

diskio.c - в этом файле должны быть реализованы низкоуровневые функции, изначально там "заглушки".

pffсonf.h - конфигурационный файл.

pff.h - заголовочный файл в котором объявлены прототипы функций взаимодействия с файловой системой диска.

pff.c - файл содержит реализации функций для взаимодействия с файловой системой диска.

Видно, что для того чтобы библиотека заработала необходимо реализовать низкоуровневые функции. Но если речь идет о AVR или PIC, для них сайте можно скачать пример работы с библиотекой, в котором есть файл mmc , в нем уже реализованы низкоуровневые функции. Также необходимо задать конфигурацию библиотеки в файле pff.h и написать функции необходимые для работы SPI.

Функции Petit FatFs.

FRESULT pf_mount (FATFS*) - функция монтирует/демонтирует диск. Эту функцию необходимо вызывать до начала работы с диском, если вызвать функцию с нулевым указателем диск демонтируется. Функция может быть вызвана в любой момент времени.

Параметры
FATFS* fs - указатель на объект типа FATFS, описание этой структуры можно посмотреть в файле pff.h. Нам надо всего лишь объявить переменную такого типа.

Возвращаемые значения:
FR_OK (0)
FR_NOT_READY - устройство не может быть инициализировано
FR_DISK_ERR - возникла ошибка во время чтения с диска
FR_NO_FILESYSTEM - на диске нет правильного раздела FAT

FATFS fs;//объявляем объект типа FATFS //монтируем диск if (pf_mount(&fs) == FR_OK) { //диск смонтирован, работаем с ним //демонтируем диск pf_mount(NULL); } else { //не удалось смонтировать диск }

FRESULT pf_open (const char* path) - функция открывает существующий файл. После того как файл открыт с ним можно работать, то есть читать из него и записывать в него. С открытым файлом можно работать до тех пор, пока не будет открыт другой файл. Функция может быть вызвана в любой момент времени.

Параметры
const char* path - указатель на строку, указывающую путь к файлу. Путь надо указывать полностью относительно корневой директории, разделяя директории слэшем.

Возвращаемые значения:
FR_OK (0) - возвращается в случае успешного выполнения функции
FR_NO_FILE - файл не найден
FR_DISK_ERR - ошибка диска
FR_NOT_ENABLED - диск не был смонтирован

FATFS fs;//объявляем объект типа FATFS //монтируем диск if (pf_mount(&fs) == FR_OK) { //открываем файл лежащий в корневой директории if(pf_open("hello.txt") == FR_OK) { //делаем что-то } //открываем файл лежащий в папке new if(pf_open("new/hello.txt") == FR_OK) { //делаем что-то } //демонтируем диск pf_mount(NULL); } else { //не удалось смонтировать диск }

FRESULT pf_read(void* buff, WORD btr, WORD* br) - функция читает указанное количество байт из файла и сохраняет их в буфер. Если количество прочитанных байт меньше чем указано, значит был достигнут конец файла.
#define _USE_READ 1

Параметры:
void* buff - указатель на буфер, в котором сохраняются прочитанные данные
WORD btr - количество байт, которые нужно прочитать
WORD* br - указатель на переменную, в которой хранится количество прочитанных байт.

Возвращаемые значения:
FR_OK (0) - возвращается в случае успешного выполнения функции
FR_DISK_ERR - ошибка диска
FR_NOT_OPENED - файл не был открыт
FR_NOT_ENABLED - диск не был смонтирован

FATFS fs;//объявляем объект типа FATFS BYTE buff;//буфер для чтения файла WORD br; //счетчик прочитанных байт //монтируем диск if (pf_mount(&fs) == FR_OK) { //открываем файл лежащий в корневой директории if(pf_open("hello.txt") == FR_OK) { //читаем из него 10 байт pf_read(buff, 10, &br); if(br != 10) { //если br не равно 10 //значит мы достигли конца файла } } }

FRESULT pf_write(const void* buff, WORD btw, WORD* bw) - функция позволяет записывать данные в открытый файл. Для того чтобы функция работала в файле pffconf.h надо записать
#define _USE_WRITE 1

Параметры:
void* buff - указатель на буфер, который хотим записать, нулевое значение финализирует запись
WORD btw - количество байт, которые хотим записать
WORD* bw - указатель на переменную, хранящий количество байт, которые удалось записать. Анализируя, эту переменную можно узнать был ли достигнут конец файла.

Возвращаемые значения:
FR_OK (0) - возвращается в случае успешного выполнения функции
FR_DISK_ERR - ошибка диска
FR_NOT_OPENED - файл не был открыт
FR_NOT_ENABLED - диск не был смонтирован

Из-за того, что библиотека рассчитана на микроконтроллеры с малым объемом памяти, эта функция имеет ряд ограничений:

  • нельзя создавать новые файлы, а записывать можно только в существующие
  • нельзя увеличивать размер файла
  • нельзя обновить временную метку
  • операцию записи можно начать/остановить только на границе сектора
  • файловый атрибут "только для чтения" не может запретить запись

Для того чтобы понять предпоследний пункт, надо знать, что память карточки разбита на блоки(сектора) по 512 байт и запись можно начать только с начала сектора . Таким образом если мы хотим записать 1000 байт, то первый сектор запишется полностью, а во второй запишется только 488 байт, а оставшиеся 24 байта заполнятся нулями.

Для записи в открытый файл надо выполнить следующие действия:

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

Для того, чтобы привести пример работы функции записи необходимо рассмотреть ещё одну функцию.

FRESULT pf_lseek(DWORD offset) - устанавливает указатель чтения/записи в открытом файле. Устанавливать указатель можно абсолютным или относительным смещением, для абсолютного смещения необходимо передать в функцию число
pf_lseek(5000);
для относительного, передать значение указателя на текущую позицию fs.fptr и величину смещения
pf_lseek(fs.fptr + 3000);
Для того чтобы функция работала в файле pffconf.h надо записать
#define _USE_LSEEK 1

Параметры:
DWORD offset - количество байт, на которые нужно сместить указатель.

Возвращаемые значения:
FR_OK (0) - возвращается в случае успешного выполнения функции
FR_DISK_ERR - ошибка диска
FR_NOT_OPENED - файл не был открыт

Записать данные в файл можно следующим образом.
FATFS fs;//объявляем объект типа FATFS BYTE buff;//буфер для чтения файла WORD br; //счетчик прочитанных байт //монтируем диск if (pf_mount(&fs) == FR_OK) { //открываем файл лежащий в корневой директории if(pf_open("hello.txt") == FR_OK) { //устанавливаем указатель на первый сектор pf_lseek(0); //записываем pf_write(buff, 10, &br); //финализируем запись pf_write(0, 0, &br); } }

Также оставляю тут кусок реально работающего кода, в котором используются все выше описанные функции.
#define F_CPU 8000000UL #define buff_size 10 #include #include #include "diskio.h" #include "pff.h" #include "spi.h" FATFS fs;//объявляем объект типа FATFS BYTE read_buff;//буфер для чтения файла BYTE write_buff = "hello word";////буфер для записи в файл UINT br; //счетчик прочитанных байт int main(void) { //монтируем диск if (pf_mount(&fs) == FR_OK) { //открываем файл лежащий в папке new if(pf_open("new/hello.txt") == FR_OK) { //устанавливаем указатель записи pf_lseek(0); //записываем pf_write(write_buff, buff_size, &br); //финализируем запись pf_write(0, 0, &br); //устанавливаем указатель чтения pf_lseek(0); //читаем то, что записали pf_read(read_buff, buff_size, &br); if(br != buff_size) { //если br не равно buff_size //значит мы достигли конца файла } } //демонтируем диск pf_mount(NULL); } while(1) { } }

FRESULT pf_opendir(DIR* dp, const char * path) - функция открывает существующую директорию и создает указатель на объект типа DIR, который будет использоваться для получения списка файлов открытой директории.
Для того чтобы функция работала в файле pffconf.h надо записать
#define _USE_DIR 1

Параметры:
DIR *dp - указатель на переменную типа DIR.

const char * path - указатель на строку, которая содержит путь к директории, директории разделяются слэшем

Возвращаемые значения:
FR_OK (0) - возвращается в случае успешного выполнения функции
FR_NO_PATH - не удалось найти путь
FR_NOT_READY - не удалось инициализировать диск
FR_DISK_ERR - ошибка диска
FR_NOT_ENABLED - диск не был смонтирован

//объявляем переменные FATFS fs; DIR dir; //монтируем диск pf_mount(&fs); //открываем директорию pf_opendir(&dir, "MY_FOLDER");

FRESULT pf_readdir(DIR* dp, FILINFO* fno) - функцию позволяет прочитать содержимое директории. Для этого нужно открыть директорию с помощью функции pf_opendir() и вызывать pf_readdir(). Каждый раз при вызове функция будет возвращать название объекта(папки/файла) лежащего в указанной директории. Когда она пройдется по всем объектам, вернет нулевую строку в элементе массива fno.fname.
Для того чтобы функция работала в файле pffconf.h надо записать
#define _USE_DIR 1

Параметры:
DIR *dp - указатель на переменную типа DIR, которая должна быть предварительно объявлена

FILINFO *fno - указатель на переменную типа FILINFO, которая должна быть предварительно объявлена.

Возвращаемые значения:
FR_OK - успешное завершение функции
FR_DISK_ERR - ошибка диска
FR_NOT_OPENED - не открыта директория

FATFS fs; FRESULT res; FILINFO fno; DIR dir; //монтируем диск pf_mount(&fs); //открываем директорию res = pf_opendir(&dir, MY_FOLDER); //читаем содержимое директории for(;;){ res = pf_readdir(&dir, &fno); //проверяем не возникло ли ошибок при чтении // и есть ли еще файлы в указанной директории if ((res != FR_OK) || (fno.fname == 0)){ break; } //выводим удобным способом fno.fname usart_sendStr(fno.name); usart_sendStr(/r); }

Ну и напоследок оставлю тут рабочий проект

Установка программ на внутреннюю память планшета осуществляется по умолчанию. Чтобы поместить приложение на встроенную карту памяти, достаточно выполнить стандартную установку. Чтобы отправить его на внешний носитель, понадобится немного больше времени. Один несложный сеанс настроек наведет порядок в файловой системе устройства, устанавливая каждое новое приложение на SD-карту.

Вариант 1: указание адреса установки

Некоторые программы в ходе установки интересуются у пользователя, где им разместиться. Указать адрес установки не составляет труда. Выбираете съемную карту памяти, и дело с концом. Но это касается лишь некоторых приложений, таких меньшинство.

Вариант 2: задание пути установки заранее

Приложение должно поддерживать патч app2sd, если версия ОС Android на планшете более ранняя, чем 2.2. Там не будет таких пунктов в настройках. Для всех новых версий подойдет такой алгоритм решения проблемы.

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

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

Вариант 3: Использование сторонних программ

Скорей всего именно этот способ вам поможет. Но он требует . Узнать есть или нет рут права на планшете можно по . Качаем специальные приложения, вроде FolderMount или GL to SD, которые помогут перенести данные игр и программ на SD карту памяти. Видео инструкции смотрите ниже:

Вариант 3

Установите на планшетный ПК программу, которая предоставит возможность выбора установочного адреса. Перед непосредственной установкой приложения появится диалоговое окно, в котором вы зададите адрес установки.

Это самый удобный вариант из предложенных. Потому что принудительная установка «по умолчанию» желательна не во всех случаях. Утилиты типа InstallManager, MagicUneracer помогут организовать экономное и рациональное заполнение памяти планшета. Кстати, эти же программы выполняют и удаление программ со всеми вспомогательными файлами.

Если приложение установлено не на карту SD

Откройте пункт «Приложения» в «Настройках». В списке приложений выберите то, которое хотели бы перенести на съемную карту. Нажмите на значок приложения, и откроется меню. Посмотрите, есть ли в нем опция «Перенести». Если есть, нажмите на кнопку опции и выберите карту памяти. Эта процедура не требует установки дополнительного программного обеспечения, вы можете сделать это сами.