|
STM32 + параллельная FRAM. |
|
|
|
Dec 14 2011, 12:47
|
Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817

|
Здравствуйте, коллеги.
В проекте необходимо хранить данные, поступающие с датчика (SPI), в энергонезависимой памяти. Планируется использовать параллельную FRAM память и повесить ее на FSMC. С STM32 до этого не работал, поэтому возникли некоторые вопросы. Я сравнил временные диаграммы памяти и FSMC. Судя по диаграммам, их получится подружить, но данная FRAM память медленная - цикл записи 140ns. Где то на форуме встречал, что уже при 70ns люди вводили задержки. Вот возникли вопросы: 1) Можно ли писать во внешнюю память посредством DMA? Т.е. у DMA использовать решим MEM2MEM, а в качестве адреса назначения указать адрес внешней памяти так чтобы данные подхватил FSMC и записал во внешнюю память. 2) Если так можно сделать, то нужно ли будет вводить задержки или DMA и FSMC подружатся сами? (сомневаюсь, но вдруг)
Если позволите, то задам еще несколько вопросов по FSMC: 3) Указанная FRAM память имеет интерфейс SRAM памяти. Только контроллеры со 144 пинами умеют работать с внешней SRAM, хотя FSMC есть у МК со 100 пинами, но он урезанный - работает с NOR памятью в мультиплексном режиме. Я посмотрел на временные диаграммы и возникло подозрение, что SRAM память можно подружить с FSMC работающем в режиме NOR (мультиплексном). Кто нибудь так делал? Как думаете, получится? 4) Кто подключал внешнюю память на FSMC подскажите, какие подводные камни могут возникнуть? 5) Кто нибудь подключал NOR память посредством FSMC? Как получилось?
С уважением, goodvin.
|
|
|
|
|
 |
Ответов
|
Jun 10 2016, 07:31
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
В stm32f407 есть BackUp память. Там 4 килобайта от батарейки часовой. +1 мкА при отключенном питании. Вполне приемлемо. Я для сохранения контекста использую FLASH память. Работал двумя способами. 1. Свал питания. а) Завожу сигнал входного питания, (отделяю диодом от входного накопительного кондёра) на АЦП. Благо в АЦП есть режим типа компаратора, с прерыванием б) В одном устройстве делал даже динамическое определение начала свала (если входное напряжение может меняться в значительных пределах. Например +12/ +24) в) По прерыванию о свале питания, останавливаю работу, отключаю потребляющие цепи (например подсветку дисплея), завершаю незаконченные текущие транзакции по флэш памяти. г) Сохраняю текущее состояние важных переменных (областей памяти) С контрольной суммой. д) Повисаю до выключения / либо рестарта. 2. Текущая работа. а) периодически сохраняю файловым способом важные данные, указывая текущее время сохранки ... б) по свалу (PVD) сохраняю время выключения. в) при подаче питания, ищу последнюю актуальную запись, и восстанавливаюсь по ней.
|
|
|
|
|
Jun 10 2016, 08:45
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(SasaVitebsk @ Jun 10 2016, 13:31)  В stm32f407 есть BackUp память. Там 4 килобайта от батарейки часовой. +1 мкА при отключенном питании. Вполне приемлемо. Я для сохранения контекста использую FLASH память. Работал двумя способами. 1. Свал питания. а) Завожу сигнал входного питания, (отделяю диодом от входного накопительного кондёра) на АЦП. Благо в АЦП есть режим типа компаратора, с прерыванием ... Пытались как-то делать мы подобным образом (думали отказаться от FRAM). В реальной эксплуатации выявились проблемы: иногда стали происходить потери данных (т.е. вроде была перезагрузка, но сохранения данных не было, так как не было сигнала срабатывания монитора питания). То ли это были перезагрузки из-за каких-то багов в ПО, то ли срабатывания сторожевика, то-ли возникали сигналы сброса из-за аппаратных помех (срабатывания супервизора питания по низкой части (сигнал монитора формировался высокой частью - +12 или +24В, после которого стоял вторичный понижающий DC-DC до 3.3В с супервизором)) то ли ещё чего. Так и не разобрались, так как происходило это очень редко и на столе не проявлялось, а только на реальном объекте. В общем - если будут причины формирования сброса после высоковольтной части, то будут потери данных. В результате отказались от такого решения и вернулись к надёжному решению на FRAM.
|
|
|
|
Сообщений в этой теме
Goodvin STM32 + параллельная FRAM. Dec 14 2011, 12:47 ViKo NOR память подключал, но не работал. Болтается на ... Dec 14 2011, 13:13 Dron_Gus 3) SRAM к 100-ногому цепляли. И еще три NAND'и... Dec 14 2011, 19:20 Goodvin Цитата(Dron_Gus @ Dec 14 2011, 22:20) 3) ... Dec 15 2011, 09:12 Евгений_Юрьевич Цитата(Dron_Gus @ Dec 14 2011, 22:20) 3) ... Jun 8 2016, 21:26 Dron_Gus Снаружи на А20 и А21 навесили 74HC139, ему на вход... Dec 15 2011, 09:38 maksimp Цитата(Dron_Gus @ Dec 15 2011, 12:38) Сна... Dec 15 2011, 10:29 Dron_Gus У многих процессоров так сделано. Разводится на 4 ... Dec 15 2011, 17:31 Goodvin Dron_Gus и все же, какая память у Вас стояла? Хочу... Dec 17 2011, 18:33 Dron_Gus Стояли R1LV1616HSA, K9WAG08U1A х 3. Мультиплексиро... Dec 18 2011, 12:24 Шаманъ Цитата(Goodvin @ Dec 14 2011, 14:47) 1) М... Dec 18 2011, 15:57 Goodvin Спасибо, Шаманъ. Я об этом как раз и размышлял. Ду... Dec 18 2011, 19:19 Шаманъ Цитата(Goodvin @ Dec 18 2011, 21:19) К ст... Dec 19 2011, 08:15 jcxz Цитата(Goodvin @ Dec 19 2011, 01:19) Вот ... Jun 9 2016, 03:15  esaulenka Цитата(jcxz @ Jun 9 2016, 06:15) Использу... Jun 9 2016, 15:56   jcxz Цитата(esaulenka @ Jun 9 2016, 21:56) Уже... Jun 9 2016, 21:04 Dron_Gus Если вы будете ставить демультиплексор на регистра... Dec 18 2011, 20:12 Goodvin А зачем мне ставить демультиплексор? У меня на FSM... Dec 18 2011, 20:47 Dron_Gus Цитата(Goodvin @ Dec 18 2011, 23:47) А за... Dec 19 2011, 08:41 neo333 Цитата(Dron_Gus @ Dec 14 2011, 22:20) Нем... Feb 15 2012, 07:55 jcxz А почему всё-таки не SPI? Там вроде до 40МГц обеща... Feb 18 2012, 07:02 SasaVitebsk В текущей версии у меня и вариант 1 и вариант 2. Д... Jun 10 2016, 10:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|