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

Лайфхак — портативный картридер

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

Так случилось, что у меня возникла необходимость периодически читать на ноутбук данные резервного копирования с CF-карт (по работе). А CF-карты, к сожалению, имеют достаточно большой физический размер, так что соответствующими картоводами комплектуются только стационарные компы и портативные картоводы, но не ноутбуки. Поскольку я работаю на заводе, то вариант заказа портативного картовода был отметён практически сразу, — нужно будет заполнить кучу бумаг, потом его включат в план закупок на следующий год, а потом ещё пару лет будут «забывать» купить, потому что цена копеечная и никому это неинтересно. За свои деньги покупать портативный картовод тоже по понятным причинам совсем не хотелось. В итоге осталось только одно решение, — вытащить штатный картовод из стационарного компьютера и переделать его в портативный.

При разборе оказалось, что штатный картовод моего рабочего компьютера (Ginzzu GR-139UR) подключен к двум портам USB на материнской плате через двухрядный шштырьковый разъём. При этом один порт выводится на внешний разъём USB на лицевой стороне картовода, а второй используется для подключения контроллера карт памяти картовода (как раз он отвечает в картоводе за чтение всяких SD/CF/MicroSD и прочих карт).

То есть, всё, что нам нужно, чтобы обеспечить портативность нашего картовода, — это переделать разъём для подключения к USB-портам таким образом, чтобы контроллер карт памяти можно было подключить напрямую к стандартному USB-порту (второй USB-порт можно не подключать). Стандартная распиновка USB-разъёма показана на рисунке слева.

Далее я взял обломок нужной длины от разъёма IDE, стандартный USB-разъём (вилка A) от сломанной флешки и с помощью паяльной станции и термоклея соорудил вот такую конструкцию:

Теперь, соединив эту конструкцию с разъёмом картовода я могу подключать картовод к стандартному USB-порту ноутбука, а отключив её от разъёма, — могу снова подключить картовод напрямую к материнке стационарного компа:

На этом на сегодня всё, надеюсь эта конструкция поможет сэкономить время, нервы и деньги ещё кому-нибудь кроме меня.

Источник

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

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

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

Схема

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

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

Читайте также:  Компьютерный стол для ноутбука и принтера своими руками

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

Настройка SPI

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

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

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

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

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

Подробно рассматриваться не будет (Очень кстати, пока готовился курс, появилась статья от 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) пара жалких абзацев. Даже исключение принципов работы с картой памяти хоть и сократило статью, но недостаточно.
Однако, буду надеяться, что изучение прошлых примеров научило вас разбираться в коде.

Читайте также:  Маска человек паук своими руками шьем

Источник

USB Micro SD Card Reader или универсальная флешка своими руками

Продолжаю цикл обзоров, где для достижения конечной цели нужно немного поработать руками. Героем сегодняшнего обзора стал microSD картридер.
О том, что с ним в итоге произошло, как таким образом можно бороться с маркетингом, а главное — повышать юзабилити — Вы можете прочитать под катом. МНОГО фото!

Более года назад я начал пользоваться телефонами одной только марки — Google. И всё в моём первом нексусе (nexus S) было хорошо, а ещё лучше во втором (galaxy nexus), да вот только отсутствие возможности установки карты памяти немного раздражала. Дальше — больше. «Октябрь месяц на дворе — давайте новый нексус мне!» Так в моём доме появился планшет — Google Nexus 7. На тот момент о версии с 3g или объёмом памяти 32гб ходили только слухи, так что выбирать особо не приходилось.

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

Также не нужно забывать о необходимости аппаратной поддержки OTG режима. Для этого спаиваем вместе 4 и 5 пин microusb коннектора.

Примеряем прищепку и коннектор на устройстве

Обрезаем корпус картридера так, чтобы он поместился в прищепку

И припаиваем его к USB выходу

Осталось закрепить коннектор холодной сваркой и произвести косметические улучшения (шлифовка, покраска)

После всех описанных действий получаем вот такой эксклюзивный девайс


Результат превзошёл все ожидания. Девайс крепко сидит на устройстве и реально работает. 2 часа времени были потрачены не впустую =)

Прошла неделька — другая, и захотелось мне довести свою инженерную мысль до нового уровня функциональности.
Сказано — сделано. Всё по полной аналогии с предыдущим девайсом, но проще. Я «приварил» коннектор к самому картридеру, сохранив при этом основную функциональность. (его можно подключать к компьютеру)




Теперь ношу этот чудо-девайс всегда с собой. Так сказать универсальная флешка для всех моих мобильных устройств. (ноутбук, планшет, телефон)

«Групповое» фото =)

UPD: чуть не забыл. на фотографиях не видно, но в «прищепке» карта памяти, разумеется, съёмная.

Ну и по традиции для моих обзоров: небольшое видео.

Усё) Есть вопросы — буду рад ответить Вам в комментариях.

Источник

USB Micro SD Card Reader или универсальная флешка своими руками

Продолжаю цикл обзоров, где для достижения конечной цели нужно немного поработать руками. Героем сегодняшнего обзора стал microSD картридер.
О том, что с ним в итоге произошло, как таким образом можно бороться с маркетингом, а главное — повышать юзабилити — Вы можете прочитать под катом. МНОГО фото!

Более года назад я начал пользоваться телефонами одной только марки — Google. И всё в моём первом нексусе (nexus S) было хорошо, а ещё лучше во втором (galaxy nexus), да вот только отсутствие возможности установки карты памяти немного раздражала. Дальше — больше. «Октябрь месяц на дворе — давайте новый нексус мне!» Так в моём доме появился планшет — Google Nexus 7. На тот момент о версии с 3g или объёмом памяти 32гб ходили только слухи, так что выбирать особо не приходилось.

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

Также не нужно забывать о необходимости аппаратной поддержки OTG режима. Для этого спаиваем вместе 4 и 5 пин microusb коннектора.

Примеряем прищепку и коннектор на устройстве

Обрезаем корпус картридера так, чтобы он поместился в прищепку

Читайте также:  Одежда для кошек своими руками без выкройки

И припаиваем его к USB выходу

Осталось закрепить коннектор холодной сваркой и произвести косметические улучшения (шлифовка, покраска)

После всех описанных действий получаем вот такой эксклюзивный девайс


Результат превзошёл все ожидания. Девайс крепко сидит на устройстве и реально работает. 2 часа времени были потрачены не впустую =)

Прошла неделька — другая, и захотелось мне довести свою инженерную мысль до нового уровня функциональности.
Сказано — сделано. Всё по полной аналогии с предыдущим девайсом, но проще. Я «приварил» коннектор к самому картридеру, сохранив при этом основную функциональность. (его можно подключать к компьютеру)




Теперь ношу этот чудо-девайс всегда с собой. Так сказать универсальная флешка для всех моих мобильных устройств. (ноутбук, планшет, телефон)

«Групповое» фото =)

UPD: чуть не забыл. на фотографиях не видно, но в «прищепке» карта памяти, разумеется, съёмная.

Ну и по традиции для моих обзоров: небольшое видео.

Усё) Есть вопросы — буду рад ответить Вам в комментариях.

Источник

Ремонт картридера своими руками

Что делать, если картридер не видит карту памяти?

Как-то раз с лёгкой руки мне задарили USB-картридер SD-карточек. Сказали, что всё равно плохо работает, возьми, мол, на детали.

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

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

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

Не особо разобравшись в причине сбоев, я решил заменить USB-разъём. Поспешил. Проблему это не решило.

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

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

Если внимательно присмотреться к слоту под карту памяти, то можно заметить, что у него есть два пружинящих контакта. Первый (1) служит для определения положения SD-карты в слоте. Он замыкается на общий провод после того, как в слот полностью вставлена карта памяти.

Второй контакт (2) определяет, включена ли защита от стирания (удаления) файлов на SD-карте.

Как видим, эти 2 контакта служат некими «глазами» для картридера. А металлическая крышка слота под карту памяти служит общим контактом, который подпаивается к общему проводу на печатной плате.

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

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

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

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

Источник

admin
Лайфхаки по дому и огороду