Снова карты памяти. И думаю не в последний раз они становятся героями очередной статьи.
Суть проблемы. Есть девайс, который должен жить от батарейки. И как всегда, если от батарейки, то это космический корабль с кучей фич и нулевым потреблением 🙂 Вот тут и была загвоздка. Причина выявилась сразу — SD карта, жрала она куда больше расчетно-задуманного.
Дабы уточнить некоторые детали — все ресурсы под завязку, поэтому копить большой буфер не было возможности. Записывать нужно было через большие рандомные интервалы, но отклик карты должен был быть максимально быстрым. Поэтому вариант тупо рубить питание полевиком не подходил.
Ток измеряется специальной микросхемой ina216 схема включения из даташита.
Резистор 0.5 Ом, коэффициент усиления микросхемы 50. Итого если ток потребления будет 10мА, то на измерительном выходе будет I*R*Ku = 0.01*0.5*50 = 0.25В
Пояснения приведу на примере первого поциента:
Суть измерения была в том, чтобы выкинуть все лишние элементы, которые бы могли как то повлиять, поэтому все мерилось осциллографом, на измерительном выходе ina216. В предыдущей статье я уже рассказывал как измерить время записи карты памяти — запускаем таймер до операции, останавливаем после, тики переводим в миллисекунды. Данные записывались одним сектором 512байт, на частоте 4МГц через SDIO. На данной скорости сектор улетает на карту в среднем за 1-2мс. А вот что происходит с потреблением карты?
Мне всегда думалось что карта жрет только в моменты, когда пишет. Судя по simplified layer, после записи данных идет Programming State, про потребление которого ничего явно не сказано.
Итак не буду томить. Исходная карта, потребление которой отличалось от ожидаемого.
Желтый канал это обычный GPIO он включался до начала записи блока и выключался через 200мс. Синий канал это по сути ток потребления карты. Видно что в начале записи небольшой выброс, это как раз то, что жрет карта в момент записи в течение 1мс, а вот дальнейшее потребление и было то, что «не входило в планы». Сколько бы раз не тестировалось, на разных скоростях, стабильно карта прекращала жрать ток не сразу после выполнения операции записи, а через ~140мс. Средний ток = 500мВ/0.5/50 ~ 20мА
Средний ток такой же, поведение абсолютно идентичное. После этих двух экспериментов, было решено затестить более модные фирмовые карты памяти. Каково же было удивление…
Первой на очереди была Toshiba
И совсем другой результат! Запись + то что «не входило в планы» ~ 10мс.
И снова результат в корне отличается в лучшую сторону
На всякий случай затестил старые карты формата SD. Хотя результат не впечатлил.
Выводы делайте сами, или не делайте. Мне данный эксперимент помог влезть в планируемое потребление. Возможно ваш девайс сможет прожить несколько дольше от батареи, поэтому стоит задуматься о приобретении нормальной карты.
Хороший тест, хотелось бы ещё, для сравнения увидеть тесты карт MMC 🙂 Хотя их уже не найдёшь на рынке, sd-шки их давно вытеснили. Но у меня осталось штучки 2.
И из за твоих 2 штучек человеку нужно будет заморачиваться? Не расстроишься, если он найдет карточки других фирм?
ZIFRO microSDHC Class 10 32GB — ОЧЕНЬ ПЛОХИЕ
https://www.youtube.com/watch?v=K6eIjL66geA
Да, как оказалось одинаковые внешне карты показывают разные результаты. У меня отлично работали 8Гб сандисковские карты, убивали их просто по жосткому. Купили такие же карты и работают просто отвратительно, по токопотреблению не проходят, да еще и сектора убиваются за пару дней. Т.е. «левые» партии это не миф, я не вижу другого способа как прям перед тем как взять несколько карточек, взять одну и потестить. В случае покупки одной карты это лотерея.
Очень интересный тест. Я даже не предполагал что карта карте рознь. Тоже занимаюсь разработкой устройства работающего от батареек. Хочу прикрутить туда карту памяти, но удивился, что карточка жрет не мало. Пробовал рубить питание транзистором, но столкнулся с тем, что после повторного включения питания карточки она не отвечает. Скорее всего нужно проделать повторно процедуру инициализации, но как не могу понять.
Очень полезная работа, спасибо человеческое!