реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Выбор памяти на 2Gbit, реализация FIFO
Electronics Engi...
сообщение Feb 2 2013, 15:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 28-04-11
Пользователь №: 64 664



Добрый день!

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

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

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

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

Дмитрий
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 2 2013, 16:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

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

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

Да, и учитывайте, что при работе с SD-картой Вам в любом случае потребуется буфер по меньшей мере на 500мс лога,
так как карта не всегда бодро и радостно воспринимает команду записи.
Go to the top of the page
 
+Quote Post
Electronics Engi...
сообщение Feb 2 2013, 16:57
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 28-04-11
Пользователь №: 64 664



Цитата(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

Не сходятся первые три вывода.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 2 2013, 17:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Первый вариант правилен. Только "NC" не бросайте в воздухе, они должны быть подтянуты к питанию.
Go to the top of the page
 
+Quote Post
Electronics Engi...
сообщение Feb 2 2013, 17:58
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 28-04-11
Пользователь №: 64 664



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

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

Для инициализации карты нужно точно 400kHz?
Могу установить такие самые близкие частоты для SPI clock: 460.8kHz и 230.4kHz.
Если инициализировать карту с частотой 230.4kHz, то будет нормально?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 2 2013, 18:11
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Electronics Engineer @ Feb 2 2013, 21:58) *
Если инициализировать карту с частотой 230.4kHz, то будет нормально?

Нормально: в спецификации 100-400кГц.
Go to the top of the page
 
+Quote Post
Electronics Engi...
сообщение Feb 6 2013, 08:07
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 28-04-11
Пользователь №: 64 664



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

512 байтов данных для записи следующего сектора SD карты будут появляться каждые 64 секунды.
Следовательно адрес для следующего сектора тоже нужно обновлять каждые 64 секунды.
Такими темпами можно записывать 64 секунды * 100 000 = 6 400 000 секунд = 75 суток,
что не достаточно.
Как быть в этом случае? Проще всего использовать резервное питание и хранить все
переменные в RAM микроконтроллера. И записывать переменные в энергонезависимую память
(SD карта или EEPROM микроконтроллера) только при уменьшении напряжения батареи до
минимального допустимого значения.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016