Анатомия и клонирование USB адаптера для SD-карты



… или как снабдить Ваш DIY-проект на MIPS или лёгком ARM быстрой микро-SD карточкой.
Доброго времени суток всему уважаемому сообществу. Хотел бы продолжить свой рассказ про коробочку-прибор, а именно про то, как ей удалось обзавестись микро-SD картой, подключённой к порту USB 2.
Корень всей проблемы был в том, что USB 2, и даже не один, у её процессорного модуля есть, а QSPI (QuadSPI) или карточного интерфейса – увы, нет. Как этот грустный факт связан с SD-картами? Очень просто, любая SD-карта в физической основе своего подключения имеет SPI (SerialPeripheral) интерфейс. Классический SPI для передачи и приёма последовательных данных использует по одной физической линии. Просто и экономно, как с точки зрения денег, так и миллиамперов. Однако недостатки, как известно, есть продолжение достоинств, и для SPI им в первую очередь стала относительно невысокая скорость обмена данными. Для решения этой проблемы был придуман четырёхбитовый режим обмена данными с SD-картой, являющийся близким родственником протокола QSPI. При использовании этого режима хост-контроллер и карточка сначала договариваются о параметрах обмена в однобитном режиме, а потом переходят в четырёхбитный, когда используют не по одной линии для приёма и передачи, а четыре на всё про всё (плюс ещё одну для индикации команды).

Что же делать, если аппаратура напрямую четырёхбитный протокол не поддерживает, а быстрый обмен всё же нужен? Очевидный ответ – снабдить проект мостом «быстрый интерфейс» — «четырехбитовая SD-карта».

Вот для решения этой задачи и была приобретена парочка адаптеров USB-SD и подвергнута препарированию (вивисекция не использовалась – мы же не изверги какие). Перед тем, как разогревать паяльник и фен, была проведена очень важная проверка – увидит ли Debian процессорного модуля предложенный ему свисток-адаптер. Тест прошёл на ура, добро пожаловать в операционную. Купленный свисток выглядит вот так:


И вот так:
После того, как был разобран корпус, стало можно разглядеть печатную плату (со всех её двух сторон).

Схема простенькая, основой её является ИМС GL823F — микроконтроллер с системой команд 8051 и с масочной памятью, оснащённый аппаратным блоком интерфейса USB 2, по всей видимости, не особо высокого качества (почему я так говорю – не вижу точного резистора смещения аналоговой части и кварцевого генератора, что означает восстановление частоты из принимаемого сигнала на основе внутреннего калибруемого генератора). Работать будет, но не HiFi, нет. Всё остальное – минимальный обвес: блокировочные конденсаторы, подтягивающий и токоограничивающий резисторы, LED и разъёмы, вот и вся инженерия.

Сдуваем компоненты феном и разглядываем печатную плату. По многим признакам, плата двухсторонняя с металлизацией отверстий. После недолгого разглядывания платы в микроскоп, срисовывания схемы соединений и сравнения с даташитом на родственные ИМС компании GL, восстанавливаем принципиальную схему.



И вот тут вот начинаем видеть одну небольшую закавыку. В чём же именно? Наша коробочка питается от гарантированного напряжения 3,3В, а схема на GL823 требует 5 вольт. Ну как требует – она так привыкла, потому что именно столько ей даёт USB. Сама микро-SD питается от 3,3В, потому в GL823 добавлен встроенный LDO-стабилизатор. Отсюда вопрос – а если схему питать от 3,3В, то сможет она работать? Если LDO сумеет не уронить сильно напряжение – то сможет, но ведь не все LDO одинаково полезны. Небольшую подсказку даёт даташит – вывод, питающий SD-карту, называется PMOS. Такая аббревиатура не может не радовать – можно предположить, что используется HighSide PMOS схема, в которой падение напряжения на регулирующем элементе может быть очень небольшим. Однако всё это – рассуждения, а единственный решающий аргумент – опыт, он же сын ошибок трудных.

Так какой же именно опыт мы поставим? Давайте попробуем питать ИМС двумя переключаемыми напряжениями – от 5 В USB либо от 3,3В, получаемых отдельным стабилизатором. Вот теперь у нас достаточно знаний, чтобы нарисовать принципиальную схему.


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

Что мы видим на схеме? Понятно, ядром является GL823F. К ней очевидным образом подключается разъём микро-SD. Единственное, что надо отметить – пин 9 у разъёма – это скользящий контакт наличия карты в гнезде, когда карта на месте, он замкнут на землю. С7-С10 – блокировочные конденсаторы на цепях питания. Если хотите немножко повысить помехоустойчивость, то выводы 2 и 16 DD1 можно соединить через ферритовый дроссель. R4 ограничивает ток через HL1, R5 подтягивает линию GPIOк единице в отсутствие карты в гнезде. DA2, C11 и C12 формируют линейный стабилизатор напряжения 3,3В.

Поскольку в тот момент, когда рисовалась схема, с одной стороны, не было понятно, сколько она будет потреблять, а с другой был неприятный опыт использования некоторых USB-флешек (не будет показывать пальцем), потребляющих при записи по 400mA, было принято решение добавить R6. Вообще это стандартный приём – при заметном потреблении в схеме линейного LDO (ключевые слова тут – LowDropout) поставить на входе низкоомный резистор повышенной мощности и часть тепла рассеивать на нём, а не на стабилизаторе. Опыт, однако, показал, что нужды в R6 нет, и ниже на фото платы вы его ещё увидите.

XS4 как раз и предназначен для проведения опыта – переключения питания DD1 между 5 и 3,3 Вольтами. XS2 – стандартный USBB разъём, чтобы можно было перед собой положить, а не лазать к свободным USB-портам под стол к ПК.

Вот что получилось после трассировки, изготовления ПП и монтажа:



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

Не собираюсь оттягивать развязку сюжета, сразу скажу, что опыт показал – питать GL823F от источника 3,3 В можно без проблем, переключение XS4 ни на что, кроме потребляемой мощности (не тока) не влияет.

Чтобы убедиться, что сделанная плата работает нормально, было проведено измерение скорости записи и потребляемого при этом тока для трёх различных микро-SD карточек. Фото конкурсантов – в студию!


Оценка потребляемого тока (измерением то, что делалось, мой язык назвать не поворачивается) производилась при помощи такого вот комбинированного измерителя тока-напряжения-количества заряда аккумуляторов. Некоторой неожиданностью для меня, скажу откровенно, оказалось то, что он ещё и USB-данные передаёт.
Использовалось только показание потребляемого тока, цена деления у этого, с позволения сказать, прибора – 0,01А, плюс к тому как минимум ошибка дискретизации 1 единица младшего разряда – ещё 0,01А. Поэтому в таблице приведены только диапазоны показаний, между которыми скакала цифра потребляемого тока. Надеюсь, однако, что тем, кому будет интересно применить GL823 в своих решениях, верхнюю планку потребления оценить всё же будет можно.

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


Этот образец не препарировался, его я позаимствовал на 5 минут у дочки, и если бы я его распотрошил, то тут же распотрошили бы меня. Одно можно сказать с уверенностью – чип в нём не принадлежит к семейству GL823, члены которого умеют работать столько со стандартом SD, мультистандарт им не по зубам.

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


Если Вам захочется применить описываемую схему в своём проекте, то при оценке потребления сделайте поправку на то, что ток питания поступал от напряжения USB 5 Вольт, но GL823 питалась от напряжения 3,3 В, и разница 5-3.3=1.7 (а это 50% от 3.3) просто терялась на DA2. При питании от централизованного (и, я надеюсь, импульсного) источника 3,3 Вольт получится порядочная экономия.

Оставить комментарий