Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор памяти на 2Gbit
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Цифровые схемы, высокоскоростные ЦС
Electronics Engineer
Добрый день!

В данный момент разрабатываю Data Logger (далее устройство) для периодической записи данных.
Память устройства должна быть энергонезависимой, т.е. записанные в память данные
не должны пропадать при выключении питания. На текущий момент в качестве
памяти использую FRAM на 2Mbit с SPI интерфейсом. Программа микроконтроллера
написана таким образом, что эта память представлена в виде FIFO.
Данные периодически записываются в память, пакет данных состоит из 8 байтов.
Проблема в том, что нужен больший объем памяти для следующей версии. Желательно до 2Gbit.

Подскажите, пожалуйста, на чем лучше остановиться?

Я рассматриваю Serial Flash и micro SDcard. Главное условие, чтобы можно было записывать в память
по несколько байтов, а не целыми блоками, например, 512 байт. Исходя из опыта использования
внутренней Flash памяти микроконтроллеров серии MSP430, для данного применения также
не допустимо стирание блока данных для того, чтобы записать новые.
Вроде для Standard Capacity SDcard (SDSC) можно записывать и считывать по 1-512 байтов.
Переписывать данные можно без стирания всего сектора? И вообще нужно ли стирать старые
данные перед записью новых.

Еще вопрос по расположению пинов у micro SDcard. В двух источниках некоторые ножки попутаны.
Как есть на самом деле?

Дмитрий
aaarrr
Цитата(Electronics Engineer @ Feb 2 2013, 19:21) *
Вроде для Standard Capacity SDcard (SDSC) можно записывать и считывать по 1-512 байтов.

Только теоретически. В обязательном порядке карта должна поддерживать только блоки размером 512 байт.
То есть на деле эта "фича" никем не поддерживается, за что и была ликвидирована в новых ревизиях стандарта.

Цитата(Electronics Engineer @ Feb 2 2013, 19:21) *
Переписывать данные можно без стирания всего сектора? И вообще нужно ли стирать старые
данные перед записью новых.

Можно. Стирать ничего не требуется.

Да, и учитывайте, что при работе с SD-картой Вам в любом случае потребуется буфер по меньшей мере на 500мс лога,
так как карта не всегда бодро и радостно воспринимает команду записи.
Electronics Engineer
Цитата(aaarrr @ Feb 2 2013, 19:22) *
Только теоретически. В обязательном порядке карта должна поддерживать только блоки размером 512 байт.
То есть на деле эта "фича" никем не поддерживается, за что и была ликвидирована в новых ревизиях стандарта.

Хорошо, значит только блоки размером 512 байт. Можно и так выкрутиться.

Цитата(aaarrr @ Feb 2 2013, 19:22) *
Да, и учитывайте, что при работе с SD-картой Вам в любом случае потребуется буфер по меньшей мере на 500мс лога,
так как карта не всегда бодро и радостно воспринимает команду записи.

В моем случае минимальный интервал записи равен 1 секунда. Буфер тоже можно предусмотреть на некоторое
количество данных.

По пинам у меня нет точной информации. Есть два варианта для microSD (SPI mode) из двух источников.

Первый вариант:
1 - NC
2 - nCS
3 - DI
4 - VDD
5 - CLK
6 - VSS
7 - DO
8 - NC/nIRQ

Второй вариант:
1 - nCS
2 - DI
3 - VSS
4 - VDD
5 - CLK
6 - VSS
7 - DO
8 - NC/nIRQ

Не сходятся первые три вывода.
aaarrr
Первый вариант правилен. Только "NC" не бросайте в воздухе, они должны быть подтянуты к питанию.
Electronics Engineer
Цитата(aaarrr @ Feb 2 2013, 20:16) *
Первый вариант правилен. Только "NC" не бросайте в воздухе, они должны быть подтянуты к питанию.

Спасибо! Про подтягивающие резисторы я знаю. Планировал использовать внутренние pull-up резисторы
микроконтроллера. Посмотрю в каталогах конкретную micro SDcard.

Для инициализации карты нужно точно 400kHz?
Могу установить такие самые близкие частоты для SPI clock: 460.8kHz и 230.4kHz.
Если инициализировать карту с частотой 230.4kHz, то будет нормально?
aaarrr
Цитата(Electronics Engineer @ Feb 2 2013, 21:58) *
Если инициализировать карту с частотой 230.4kHz, то будет нормально?

Нормально: в спецификации 100-400кГц.
Electronics Engineer
Возник такой вопрос, где хранить переменную, указывающую на следующий сектор,
в который буду записываться последующие данные? Это на случай пропадания питания.
Сейчас память сделана на FRAM и небольшая часть памяти выделена для хранения
переменных. С FRAM проблем не возникает, т.к. можно записывать данные практически
бесконечное количество раз. В SD карту можно записывать не более 100 000 раз.

512 байтов данных для записи следующего сектора SD карты будут появляться каждые 64 секунды.
Следовательно адрес для следующего сектора тоже нужно обновлять каждые 64 секунды.
Такими темпами можно записывать 64 секунды * 100 000 = 6 400 000 секунд = 75 суток,
что не достаточно.
Как быть в этом случае? Проще всего использовать резервное питание и хранить все
переменные в RAM микроконтроллера. И записывать переменные в энергонезависимую память
(SD карта или EEPROM микроконтроллера) только при уменьшении напряжения батареи до
минимального допустимого значения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.