Перейти к содержанию
    

STM32 + параллельная FRAM.

Немного прокололись с регистром на младшую часть адреса - для нашей SRAM был нужен "прозрачный" при низком Addres Valid (или как он называется у STM). Мы же вначале поставили тот, что защелкивает (и выставляет данные на выход) по положительному фронту. И словили кучу чудес. При замене на правильный регистр все взлетело.

Скажите, пожалуйста, что за такая защелка? С прозрачностью на низком уровне никак не найду. Уже все перечитал:

74хх373 и 573 - прозрачность же на высоком?

74хх374 и 574 - защелкивают по положительному фронту.

 

Остальные регистры-защелки , что нашел, - вариации первых на 16 бит и др.

 

 

PS. Интерес не праздный, хочу к Discovery на STM32F407V подключить память и опасаюсь граблей с выбором правильных регистров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему всё-таки не SPI? Там вроде до 40МГц обещается. Или такие большие требования к скорости потока?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3) SRAM к 100-ногому цепляли. И еще три NAND'ины. Немного прокололись с регитром на младшую часть адреса - для нашей SRAM был нужен "прозрачный" при низком Addres Valid (или как он называется у STM). Мы же вначале поставили тот, что защелкивает (и выставляет данные на выход) по положительному фронту. И словили кучу чудес. При замене на правильный регистр все взлетело.

2) ИМХО, должно работать.

На остальные вопросы, вроде, уже ответили.

А как называется этот регистр защелка с прозрачный при низком значении защелкивающий адрес . Все 573 и 373 по высокому защелкиваются .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот планирую освобождать FSMC к моменту появления первых данных, а со вторыми работать в промежутках. Скажите, а в других сериях STM можно работать в режиме "multimaster FSMC access"? К стати, откуда эту фразу взяли, в DataSheet'е ее не заметил?

Жесть какая. Костыли.

 

Сейчас мучаюсь с тем, что не могу выбрать какой МК использовать.

Используйте что-нить из LPC. Зачем мазохизмом с этим FSMC заниматься если он такой кривой?

В LPC таких проблем нет - хоть сколько мастеров с внешней памятью работают и DMA ещё параллельно - нет проблем.

Есть проект на LPC1788 с кучей параллельных задач и тяжёлыми вычислениями на больших массивах во внешней SDRAM (одна задача читает/пишет через DMA во внешнюю SDRAM, другая читает через DMA из неё же, третья (декодер MP3) читает/пишет туда-же и ещё несколько задач у которых есть данные там же; и значительная часть кода в это же время выполняется из этой же SDRAM) - даже и не заморачивался никогда ни с какими проблемами доступа.

 

Да и вообще - нужна-ли Вам реально параллельная FRAM? Может достаточно SPI-ной?

Если надо быстро - можно повесить на quad-SPI. Если надо чтобы была в адресном пространстве CPU - можно повесить на SPIFI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используйте что-нить из LPC. Зачем мазохизмом с этим FSMC заниматься если он такой кривой?

 

Я конечно понимаю, что у Вас с STM какие-то особо личные отношения, с технической частью вопроса никак не связанные.

Но справедливости ради, "мазохизм с этим FSMC" был только на самой первой линейке этих процессоров. Уже лет 8 прошло с тех пор, можно смело использовать любую другую линейку STM. Там и другие ошибки поправили, кстати (errata на ту серию - аж на 40 с лишним страниц).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже лет 8 прошло с тех пор, можно смело использовать любую другую линейку STM.

Сорри, не распознал некропостера. Посмотрел только на дату последнего :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В stm32f407 есть BackUp память. Там 4 килобайта от батарейки часовой. +1 мкА при отключенном питании. Вполне приемлемо.

Я для сохранения контекста использую FLASH память. Работал двумя способами.

1. Свал питания.

а) Завожу сигнал входного питания, (отделяю диодом от входного накопительного кондёра) на АЦП. Благо в АЦП есть режим типа компаратора, с прерыванием

б) В одном устройстве делал даже динамическое определение начала свала (если входное напряжение может меняться в значительных пределах. Например +12/ +24)

в) По прерыванию о свале питания, останавливаю работу, отключаю потребляющие цепи (например подсветку дисплея), завершаю незаконченные текущие транзакции по флэш памяти.

г) Сохраняю текущее состояние важных переменных (областей памяти) С контрольной суммой.

д) Повисаю до выключения / либо рестарта.

2. Текущая работа.

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

б) по свалу (PVD) сохраняю время выключения.

в) при подаче питания, ищу последнюю актуальную запись, и восстанавливаюсь по ней.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В stm32f407 есть BackUp память. Там 4 килобайта от батарейки часовой. +1 мкА при отключенном питании. Вполне приемлемо.

Я для сохранения контекста использую FLASH память. Работал двумя способами.

1. Свал питания.

а) Завожу сигнал входного питания, (отделяю диодом от входного накопительного кондёра) на АЦП. Благо в АЦП есть режим типа компаратора, с прерыванием

...

Пытались как-то делать мы подобным образом (думали отказаться от FRAM).

В реальной эксплуатации выявились проблемы: иногда стали происходить потери данных (т.е. вроде была перезагрузка, но сохранения данных не было, так как не было сигнала срабатывания монитора питания).

То ли это были перезагрузки из-за каких-то багов в ПО, то ли срабатывания сторожевика, то-ли возникали сигналы сброса из-за аппаратных помех (срабатывания супервизора питания по низкой части (сигнал монитора формировался высокой частью - +12 или +24В, после которого стоял вторичный понижающий DC-DC до 3.3В с супервизором)) то ли ещё чего. Так и не разобрались, так как происходило это очень редко и на столе не проявлялось, а только на реальном объекте.

В общем - если будут причины формирования сброса после высоковольтной части, то будут потери данных.

В результате отказались от такого решения и вернулись к надёжному решению на FRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В текущей версии у меня и вариант 1 и вариант 2. Данные восстановятся даже если произойдёт рестарт процессора. Более того, будет осуществлён "догон" на время выключенного состояния, по последним значениям.

Диагностируется причина (выключение питания/ рестарт) и выводится сообщение об этом.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...