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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32 + параллельная FRAM.
Goodvin
сообщение Dec 14 2011, 12:47
Сообщение #1





Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 14 2011, 13:13
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



NOR память подключал, но не работал. Болтается на шине без дела (пока?). Хватило внутренней.
Мультиплексную шину подключал к собственноручно разработанному интерфейсу на FPGA Cyclone II. Использовал соответствующие настройки FSMC. Работает.
Еще на шине висит SRAM и контроллер LCD. Работают. В-общем, все 4 выбора заняты.
Для каждого из устройств высчитывал количество тактов по всем состояниям на шине. И задавал их при программировании FSMC.
Использовал и сигнал /WAIT. Тогда можно запрограммировать чуть меньшее количество тактов ожидания, но они отработаются аппаратно.
С DMA экспериментировал, но отложил. Все перекидываю программно. Чтобы работал DMA, нужно, чтобы FSMC работал.
На мой взгляд, картинки в документах страшные, а железо заработало, на удивление, практически, с первого запуска.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 14 2011, 19:20
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



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


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Goodvin
сообщение Dec 15 2011, 09:12
Сообщение #4





Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817



Цитата(Dron_Gus @ Dec 14 2011, 22:20) *
3) SRAM к 100-ногому цепляли. И еще три NAND'ины. Немного прокололись с регитром на младшую часть адреса - для нашей SRAM был нужен "прозрачный" при низком Addres Valid (или как он называется у STM). Мы же вначале поставили тот, что защелкивает (и выставляет данные на выход) по положительному фронту. И словили кучу чудес. При замене на правильный регистр все взлетело.
2) ИМХО, должно работать.
На остальные вопросы, вроде, уже ответили.


А как это у Вас получилось на одну шину 4 устройства, там же всего 1 или 2 /CS?
А что за SRAM была? Я бы посмотрел на нее документацию.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 15 2011, 09:38
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Снаружи на А20 и А21 навесили 74HC139, ему на вход CS (PD7). С него получили 4 CS'а. Но с тех пор я стараюсь избегать таких извращений. Ибо что PQFP 100 + soic16 + 2 x SOIC20, что PQFP144 знанимают одинаково места на плате.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
maksimp
сообщение Dec 15 2011, 10:29
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Dron_Gus @ Dec 15 2011, 12:38) *
Снаружи на А20 и А21 навесили 74HC139, ему на вход CS (PD7). С него получили 4 CS'а. Ибо что PQFP 100 + soic16 + 2 x SOIC20, что PQFP144 знанимают одинаково места на плате.

Как вы всё это разводите по печатной плате?
У STM32 по непонятной причине выводы FSMC расположены по всему периметру корпуса. Нет бы сделать их всех с одного бока...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 15 2011, 17:31
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



У многих процессоров так сделано. Разводится на 4 слойке нормально (2 слоя сигнальных, 2 питания, в крайних случаях сигналы по слоям питания)


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Goodvin
сообщение Dec 17 2011, 18:33
Сообщение #8





Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817



Dron_Gus и все же, какая память у Вас стояла? Хочу посмотреть ее временные диаграммы. И еще, правильно ли мы друг друга поняли, что у Вас мультиплексировались именно линии адреса и данных (не только ИС)?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 18 2011, 12:24
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Стояли R1LV1616HSA, K9WAG08U1A х 3. Мультиплексировались DA[15:0]. Защелки управлялись сигналом NADV.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Dec 18 2011, 15:57
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Goodvin @ Dec 14 2011, 14:47) *
1) Можно ли писать во внешнюю память посредством DMA? Т.е. у DMA использовать решим MEM2MEM, а в качестве адреса назначения указать адрес внешней памяти так чтобы данные подхватил FSMC и записал во внешнюю память.

Можно, только нужно помнить про возможные проблемы при "multimaster FSMC access" (по крайней мере на STM32F101/103) - следите чтобы два мастера не пытались получить доступ к FSMC одновременно (например, не следует писать/читать во внешнюю память при активном DMA работающем с внешней памятью).
Go to the top of the page
 
+Quote Post
Goodvin
сообщение Dec 18 2011, 19:19
Сообщение #11





Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817



Спасибо, Шаманъ. Я об этом как раз и размышлял. Думаю, что придется организовывать что-то типа контроллера доступа к внешней памяти, т.к. у меня есть данные, которые должны автоматом лететь в нее и будет простое обращение к памяти. Первые данные - периодично появляются и довольно часто остальные реже. Вот планирую освобождать FSMC к моменту появления первых данных, а со вторыми работать в промежутках. Скажите, а в других сериях STM можно работать в режиме "multimaster FSMC access"? К стати, откуда эту фразу взяли, в DataSheet'е ее не заметил?
Сейчас мучаюсь с тем, что не могу выбрать какой МК использовать. В МК с 144 пинами полноценный FSMC, а в 100 пиновом нет. Уважаемые люди говорят, что дружили 100 пиновый МК с SRAM памятью (у меня FM28V100), но я сомневаюсь. Вроде по временным диаграммам должно работать, но я все равно сомневаюсь. Ставить МК с 144 пинами расточительно - много места занимает, дороже, куча ног просто висеть будет. Эхх.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 18 2011, 20:12
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Если вы будете ставить демультиплексор на регистрах, то по площади то на то и выходит. Ставьте 144 ногий. От лишних ног никому плохо не было.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Goodvin
сообщение Dec 18 2011, 20:47
Сообщение #13





Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817



А зачем мне ставить демультиплексор? У меня на FSMC будет висеть только одна SRAM'оподобная FRAM память. Вопрос в том, насколько реально прикрутить ее к 100-пиновому МК. Там FSMC можно включить в режиме NOR multiplexed, тогда, как Вы и писали, будут мультиплексироваться DA[15:0]. Вот я переживаю о том, как FSMC отработает и понравиться ли это памяти. По хорошему, для этого нужно провести эксперимент, но времени маловато. Конечно, больше склоняюсь к более надежному варианту, но красиво тоже хочется сделать.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Dec 19 2011, 08:15
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Goodvin @ Dec 18 2011, 21:19) *
К стати, откуда эту фразу взяли, в DataSheet'е ее не заметил?

Из erratы laughing.gif

Вот:

2.12 Multimaster access on the FSMC memory map
Description
When multimaster accesses are performed on the FSMC memory map (address space from
0x6000 0000 to 0xA000 0FFF), an error could be generated, leading to either a bus fault or
a DMA transfer error.
A multimaster can be:
● DMA1 and DMA2
● DMA1 and CPU
● DMA2 and CPU
Workaround
If multimaster accesses are required on the FSMC address space, the software must
ensure that accesses are performed one at a time, and not at the same time.


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

Сообщение отредактировал Шаманъ - Dec 19 2011, 08:17
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 19 2011, 08:41
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(Goodvin @ Dec 18 2011, 23:47) *
А зачем мне ставить демультиплексор? У меня на FSMC будет висеть только одна SRAM'оподобная FRAM память. Вопрос в том, насколько реально прикрутить ее к 100-пиновому МК. Там FSMC можно включить в режиме NOR multiplexed, тогда, как Вы и писали, будут мультиплексироваться DA[15:0]. Вот я переживаю о том, как FSMC отработает и понравиться ли это памяти. По хорошему, для этого нужно провести эксперимент, но времени маловато. Конечно, больше склоняюсь к более надежному варианту, но красиво тоже хочется сделать.

Под демультиплексором я подразумевал защелку адреса на DA[15:0]. Как без этого подключить SRAM память я не вижу.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

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

 


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


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