Картридер для sd карты своими руками

LPCXpresso Урок 11. USB+SPI. Делаем картридер.

Курс для новичков продолжается ознакомлением с SPI на примере работы с SD/MMC карточками. А поскольку USB-MSC мы уже проходили, то соорудим пародию на картридер. Пользоваться им я категорически запрещаю, т.к. размер карты зашит в коде и при установки другой карты вы можете потерять ваши данные.

Нам понадобится MMC либо SD карточка объемом до 2Гб. SDHC карточка нам не подойдет! С ней пример работать не будет.
Наиболее правильно было бы взять код FatFS от ChaN (У меня нашолся такой архив ffsample.zip, не помню какой свежести) в котором присутствует и определение размера, и работа с SDHC картами. Но код тяжел для начинающих. Желающие могут попробовать самостоятельно подключить правильную реализацию. Я же ограничусь более простой версией.
Так же отмечу, что это довольно сложный урок, и по-хорошему вы уже должны быть не начинающим.

Схема

Используем схему из прошлого урока с подключением USB разъема и добавляем подключение карточки. Для этого нам надо собрать следующую схему:

Можете подпаять проводки либо непосредственно к карточке, которую не жалко, либо как я воспользоваться слотом для карты. Приведённая схема одинакова как для SD так и для MMC карты. Все лишние (не показанные) выводы MMC карты остаются неподключенными.

Дорабатываем код

Задачи универсальности перед собой ставить не станем. Будем делать код под конкретную карту памяти (объем карты). В качестве основы для данного проекта возьмем пример из прошлого урока и доработаем его. Доработка пройдет следующим образом:

  1. Настройка SPI
  2. Код для работы с картой памяти
  3. Доработка функций чтения/записи USB-диска

Для первых двух пунктов обратимся за помощью к библиотеке LPC1343 Code Base.
Кроме этого надо удалить то, что нам не нужно. В директории src проекта удаляем файл diskimg.c и в директории inc файл diskimg.h, т.к. они нам больше не нужны. Для этого у файла вызываем контекстное меню и выбираем пункт Delete. На вопрос удалить ли файл из файловой системы отвечаем положительно.

Настройка SPI

В проекте (не библиотеке, т.к. здесь мы её не подключали) создаем файл ssp.h со следующим содержимым:

Поскольку карта памяти должна инициализироваться на скорости 400кГц, а работать может и на 20МГц, то функцию инициализации напишем с одним параметром, задающим медленный/высокоскоростной режим работы SPI.
Создаём файл ssp.c с реализацией функций. После подключения заголовочных файлов добавляем функции для выбора устройства.
Source File пишем ssp.c и жмем Finish.

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

Теперь приступим к функции инициализации:

Кроме уже известных нам разрешения работы, подаче тактов и выбора для выводов функции для работы с периферией у нас имеется так же:

  • установка в регистр SSPCLKDIV делителя тактовой частоты для контроллера SPI (задание частоты работы контроллера SPI) в 10 или 1, в зависимости от требуемого режима;
  • установка в регистр CR0 формата пакета (подробно в документации к контроллеру) и дополнительного делителя (задание частоты тактовой линии SPI) в 8 либо 1, в зависимости от требуемого режима;;
  • установка в регистр CPSR делителя частоты для опорной частоты тактовой линии SPI в минимальное значение 2;
  • удаление «мусора» из приемного буфера SPI;
  • установка в регистр CR1 работы контроллера в режиме «мастер» и разрешение тем самым работы контроллера SPI;
Читайте также:  Масло прополиса своими руками

На первый взгляд может показаться сложной система задания частоты шины SPI. По этому попробую описать последовательно. Системная частота делиться на делитель в регистре SSPCLKDIV и эта частота задаётся основной для работы контроллера SPI. Затем она делиться на делитель в регистре CPSR для формирования опорной частоты шины SPI (это ещё не есть частота шины). И, наконец, опорная частота делиться на коэффициент, заданные в поле регистра CR0 (+1) для получения частоты тактового сигнала шины.
Прерывания нам здесь не нужны, мы владелец шины и сами определяем, когда осуществлять передачу. Поэтому здесь всё.

Работа с картой

Подробно рассматриваться не будет (Очень кстати, пока готовился курс, появилась статья от lleeloo). Функции расположены в файле sdcard.c и описаны в файле sdcard.h, которые требуется добавить к проекту.
Отмечу, что в файле sdcard.h содержится определение размера нашей карты памяти:

Всё имена те же, что были в примере. Укажите здесь количество блоков вашей карты памяти в MSC_BlockCount. Ещё раз напомню, что SDHC не поддерживаются и более 2Гб не может быть.
Так же добавился вызов инициализация карты памяти в функции main в файле usbmemrom_main.c:

Функция SetLed предназначена для целей диагностики. Так если при инициализации карты возникла ошибка, то будет зажжен светодиод на плате, индицируя ошибку.

Функции чтения/записи

В файле msccallback.c правим функции чтения и записи блока диска. Но так как размер блока на диске у нас 512 байт, а размер блока USB всего 64 байта, то для чтения одного блока диска функция чтения будет вызвана 8 раз подряд с разным смещением для одного и того же блока. И точно так же для записи. Что бы ни делать несколько чтений одного блока с диска (а тем более записей), добавим кэширование:

После этого функция чтения выглядит крайне просто:

И функция записи так же проста, только добавлен код записи буфера по достижение конца блока:

В коде присутствует вызов той же SetLed, на этот раз с целью индикации обращения к карте.

Запуск

Как обычно компилируем и исправляем ошибки.
После подключения добавленного разъема к компьютеру светодиод начнет мигать, а в системе появиться новый съемный диск.
Если светодиод постоянно ярко светится, что бывает, когда в начале был другой код, который «сбил» инициализацию карте, то обесточьте плату и снова подайте питание.
Если система предлагает вам диск отформатировать, то вероятно у вас в коде не верно указан размер. Хотя возможно просто карточка не была отформатирована.
Я повторно рекомендую не использовать карточки с важными для вас данными. Сам я при экспериментах указывал и меньшие и большие размеры, но кто знает как поведёт себя нестабильная система.

Статистика

Кода в Debug версии у меня получилось 4216 байт кода. Скорость чтения составила 194 кБайт/с, скорость записи 84 кБайт/с.


После переключения в Release версию код уменьшился до 2772 байта. Скорость чтения при этом выросла до 239 кБайт/с, а записи до 95кБайт/с.

Вместо заключения

С сожалением должен признать, что урок получился объемным и непонятным. При этом при всём непосредственно по теме (SPI) пара жалких абзацев. Даже исключение принципов работы с картой памяти хоть и сократило статью, но недостаточно.
Однако, буду надеяться, что изучение прошлых примеров научило вас разбираться в коде.

Источник

Картридер для MiniSD карт.

Коллеги, приветствую всех!

Некоторое время назад искал MiniSD карту, именно MiniSD — ну нет нигде. Спасибо конференции, посоветовали найти МикроэСДэ с адаптером — так и сделал, купил карту с двумя переходниками — SD и MiniSD.

Остался открытым вопрос с картридером. Прихожу в один известный сетевой магаз, покупаю картридер, на коробке которого крупно написано «MiniSD», дома вскрываю, вставляю карту в слот MiniSD — и нифига. 🙁 При этом слоты SD и MicroSD с этой же картой работают нормально.
Несу обратно к гарантийщикам, они проверяют, что слот не работает, оформляют возврат. Тут же заказываю такой же картридер, сразу же при получении иду к ним, вместе вскрываем, проверяем — слот MiniSD не работает. Не отходя от кассы, опять оформляю возврат.

Читайте также:  Подставки для игровых рулей своими руками

Решил найти подобный картридер напрямую в Поднебесной. Нашёл, заказал.
На картинке виден слот.


Намедни приходит заказ. Вскрываю — и что же я вижу? Слота нет! «Вот уроды!» (с)

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

В связи с этим вопрос/просьба — нет ли у кого-нибудь MiniSD картридера в аренду? Может, где-нибудь валяется в «закромах Родины»?

Источник

Полезность картридера и кому он нужен?

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

Картридер

Он необходим для считывания данных с флеш накопителей. Его существование обусловлено тем, что даже сейчас есть множество видов microSD карт , с которых не получится считать информацию с помощью только кабеля USB и компьютера. Картридер USB имеет разъемы сразу для двух-трёх видов карт памяти secure digital и выход USB для подключения к ПК. Картридер — это недостающий элемент, связующее звено между microSD и ПК. Стоит отметить, что есть два вида ридеров — внешний и внутренний. Второй — домашний, встроенный в стационарный ПК, первый — переносной, подойдёт для тех, кто постоянно передает или получает информацию на/с разных ПК. В целом ридер необходим тем, у кого нет доступа к WiFi и Bluetooth, а данные нужно срочно передать. Например, работники сферы IT, фотографы и, конечно, обычные пользователи.

Адаптер

Его функция идентична картридеру — помочь прочесть карту microSD на компьютере, однако, есть одно весомое отличие. Оно заключается в том, что адаптер увеличивает размер microSD карты, чтобы подогнать под размер разъёма для карты SD , чаще всего, в ноутбуке. Именно для активно использующих ноутбуки людей будет очень полезно иметь в своём арсенале гаджетов такую практичную мелочь.

Холдер

Из названия можно понять предназначение данного устройства. Это сумочка или папка, в которой предусмотрены специальные карманы для хранения и переноски карт памяти, флешек, карт CompactFlash и прочей мелочи.

Каждый из USB-гаджетов по-своему хорош, однако, рассмотрим достоинства наиболее выгодного во всех аспектах предложения от рынка USB-товаров.

Если вы человек, который будет пользоваться картридером чаще всего не дома, отдайте предпочтение внешнему ридеру . Его можно взять с собой или подключить к домашнему ПК. Если работа с памятью MicroSD осуществляется только дома, разумеется, покупать нужно внутренний картридер и устанавливать в системный блок. Самый важный момент — число поддерживаемых флешек. Здесь нужно исходить из своих потребностей, которые напрямую повлияют на скорость передачи и считывания данных. Например, ридеры, поддерживающие много видов накопителей, сэкономят средства на покупку нескольких ридеров для каждого вида карты MicroSD, но они имеют более низкую скорость передачи информации, чем те, у кого всего 3-4 порта для разных флешек. Конечно, нужно при возможности выбирать картридер стандарта USB 3.0, чтобы ускорить перенос своих данных.

Резюмируя полезность картридера USB

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

Источник

Картридер для карт памяти: что делать, если он не работает

Содержание статьи:

Видеообзор

Что такое картридер?

Картридер – это компактное устройство для быстрого считывания карт памяти, флешек и других типов памяти (можно также встретить варианты написания «карт ридер» и «кардридер»).

Читайте также:  Настройка гбо своими руками инжектор ловато

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

  • Подключив его к ПК, можно быстро передать файлы на sd карту памяти или compact флешку
  • Если данные были удалены с карты памяти телефона, без card reader’а обойтись нельзя
  • Через картридер можно делать резервную копию важных файлов на компьютер

Как выглядит картридер

Наиболее распространен встроенный (или встраиваемый) картридер. Он встроен в ноутбук: гнездо находится на передней панели ноутбука (Windows PC) или сбоку (Macbook).

Внешний картридер – небольшая коробочка с несколькими гнездами для вставки карт памяти.

Виды картридеров

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

Есть ли специальный картридер для телефона?

Да, существуют также картридеры для телефона, например, переходник для флешек OTG Mobile Phone Connection. Мы не будем затрагивать подобные специфические устройства: они встречаются редко и не слишком удобны в эксплуатации.

Внутренний картридер

Картридер в ноутбуке – наилучший вариант, если вы активно копируете файлы на sd карту и обратно. Для чтения карт памяти и флешек не нужно подключать его через usb-порт.

В большинство Windows-ноутбуков встроен картридер, в Macbook старых моделей он также присутствует.

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

Внешний usb-картридер

Внешний картридер – модуль, подключаемый к компьютеру по usb. Он будет оптимальным решением, если:

  • производитель компьютера не укомплектовал устройство картридером
  • у вас обычный настольный ПК
  • не работает встроенный в ноутбук картридер.

Внешние карт ридеры работают как флешки: вы подключаете карту памяти и дальше по протоколу usb информация передается на компьютер.

Wi-fi картридеры

Существуют также wifi картридеры. Они беспроводные, т.е. для подключения и считывания карт не требуется проводное соединение. Такие устройства мобильны и удобны в применении.

Как выбрать картридер для карты памяти

Перед тем, как покупать кардридер, уточните тип карты памяти, которую вы используете и/или собираетесь подключать к ПК или ноутбуку.

Сделать это просто:

  1. извлеките карту памяти из телефона, фотоаппарата и т. д.,
  2. на этикетке прочтите тип и формат карты

В соответствии с этим и подбирайте считыватель карт для sd памяти.

К слову, на рынке представлено множество простых и сложных картридеров, каждый из которых поддерживает только определенные типы памяти. Среди них:

  • Compact Flash
  • Secure Digital
  • MMC
  • SDHC
  • Memory Stick

Можно взять универсальный считыватель карт с несколькими портами, например, картридер с поддержкой compact flash.

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

Как пользоваться картридером

Если в ноутбук встроен картридер:

  1. Вставьте карту памяти в гнездо — она отобразится как отдельный диск
  2. Вставьте sd карту памяти в картридер

Если используется внешний картридер:

  1. Подключите usb-кабель с картридером к гнезду компьютера.
  2. Вставьте карту памяти в гнездо картридера

Что делать, если картридер не работает

Давайте рассмотрим некоторые проблемы, на которые жалуются некоторые посетители моего сайта.

Проблема: Картридер не видит карту памяти (sd карту)

  1. Проверьте контакт между картой памяти и картридером
  2. Если картридер внешний — проверьте соединение между компьютером, usb-кабелем и картридером.

Проблема: Не работает картридер

  1. Если на картридере есть лампочка, проверьте, горит ли она. Если нет, еще раз удостоверьтесь, что есть соединение картридера с ПК или ноутбуком.

Проблема: компьютер не видит картридер

  1. Откройте диспетчер устройств и проверьте, есть ли картридер в списке устройств. Вместо диспетчера можно и лучше использовать специализированную программу типа AIDA64 (бывший Everest).
  2. Если устройство не отображается в списке, установите драйвер для картридера — скачать его проще всего на сайте производителя ноутбука или собственно карт ридера.
  3. Проверьте целостность usb-кабеля. Протестируйте его на других устройствах — например, на телефоне.

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

Источник

Оцените статью
Своими руками