Добрый день, уважаемые коллеги. Назрел такой вопрос: можно ли подключить к одному модулю FSMC STM32 разные типы памяти? Мне нужно подключить SRAM + NAND Flash + LCD ILI9325. Имея 144-выводной корпус, где 4 ChipSelect-а, думаю, можно. Но, когда захожу в MicroXplorer от ST, там предлагается один из 4 режимов работы FSMC: 1) FSMC_CF 2) FSMC_CF_IDE 3) FSMC_NOR_RAM 4) FSMC_NOR_MUX 5) FSMC_NAND16, при этом, выбирая один из режимов, остальные режимы становятся недоступными. А зачем тогда нам 4 ChipSelect-а?
Планируется подключить NAND Flash K9F2G08U0B (2GB), какую-нибудь FRAM (еще не определился) и LCD на ILI9325. Благодарю за внимание!
_________________ Не умеешь - не берись, но не взявшись не научишься...
Заголовок сообщения: Re: Разные устройства на одном FSMC STM32
Добавлено: Пт янв 10, 2014 09:53:52
Опытный кот
Карма: 3
Рейтинг сообщений: 43
Зарегистрирован: Вт апр 12, 2011 18:38:19 Сообщений: 838 Откуда: с Земли
Рейтинг сообщения:0
У STM32 один FSMC, и работать он может только в одном режиме. 4 чипселекта нужны для того, чтоб подключить 4 устройства одного типа, например 4 микросхемы FLASH. Теоретически, можно подключить и разные устройства, а потом переключать режимы FSMC программно. Надо пробовать, тк неизвестно - как себя поведут подключенные устройства в момент переключения режима работы?
_________________ Все будет только лучше, в крайнем случае - хуже.
У STM32 один FSMC, и работать он может только в одном режиме. 4 чипселекта нужны для того, чтоб подключить 4 устройства одного типа, например 4 микросхемы FLASH.
Не вводите человека в заблуждение. FSMC у STM действительно один, но имеет 4 банка, каждый из которых конфигурируется отдельно. Это дает возможность использовать все 4 типа устройств одновременно без никаких программных переопределений назначения FSMC. Вот, пример того, как конфигурируется FSMC с помощью StdPeriphDriver-а. Это получится, что банк 1 будет асоциироваться с четвертым cs-ом, на котором будет висеть NOR SRAM. Соответственно, чтобы сконфигурировать другой банк FSMC, нужно повторить процедуру с другим значением FSMC_NORSRAMInitStructure.FSMC_Bank. В конце надо не забыть включить выбранный банк. Спойлер
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4; //Вот тут мы выбираем конфигурируемый банк и сразу же тип устройства, который к нему присоединен и номер cs. Предопределенные константы можно посмотреть в файле stm32fxxx_fsmc.h, там же можно найти и другие полезные функции. FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_High; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* BANK 4 (of NOR/SRAM Bank 1~4) is enabled */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
РадиоЛоматель, благодарю за помощь! Не совсем понятен следующий момент. Всего банка 4. Каждый банк - свой тип памяти и доступ к каждому банку осуществляется соответствующим CS. А что за надпись тогда 4x64MB? Я так понимаю 4 банка по 64 Мбайт. Но ими тоже отдельно каждым надо управлять?
И еще: в даташите указано, что TFT к FSMC подключается в режиме NOR/SRAM. Но для SRAM выведен один банк памяти (первый) а туда уже будет подключена SRAM (т.е. ее CS будет уже занят)... Я хотел подключить следующим образом: банк 1 - TFT, SRAM; банк 2 - NAND Flash.
_________________ Не умеешь - не берись, но не взявшись не научишься...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
И еще: в даташите указано, что TFT к FSMC подключается в режиме NOR/SRAM. Но для SRAM выведен один банк памяти (первый) а туда уже будет подключена SRAM (т.е. ее CS будет уже занят)...
Да, это так. Но если прочитать внимательно документ AN2784 Using the high-density STM32F10xxx FSMC peripheral to drive external memories, можно найти там следующее:
Цитата:
From the FSMC point of view, the external memory is divided into four fixed-size banks of 256 Mbytes each, as shown in Figure 2: ● Bank 1 used by the NOR Flash/SRAM controller to address up to 4 memory devices. This bank is split into 4 regions with 4 dedicated Chip Select signals. ● Banks 2 and 3 used by the NAND Flash/PC Card controller to address NAND Flash devices. ● Bank 4 used by the NAND Flash/PC Card controller to address a PC Card device. For each bank, the type of memory to be used is user-defined in the Configuration register. AHB bus
И в первом пункте мы видим, что первый банк разделен на 4 региона, каждому из которых соответствует свой сигнал CS. К сожалению, я не могу вам уверенно подсказать, как конфигурировать банк в этом случае. У меня дальше одного устройства на FSMC не заходило. Похоже, что я соврал в предыдущем посте про выбор cs-a, ассоциируемого с банком. Это не номер, а количество задействованных cs в этом банке. В общем, смело можете подключать свои устройства к первому банку, пользуясь картинкой Figure 1. FSMC block diagram из упомянутого документа.
Прописано правильно, но volatile - это указание компилятору не выбрасывать "лишние" обращения к памяти, а у F7 еще есть кеш, причем атрибуты памяти по этим адресам такие же как у SRAM, т.е. нужно при помощи MPU этот регион памяти сделать некешируемым или отключить кеш вообще.
Цитата:
Возможно сделать программную реализацию быстрее,если штатный fmc не запустится?
Конечно, некоторые С++ либы это делают автоматически, но можно и вручную взять сразу 9 бит, сдвинуть и записать за раз в GPIOE->BSRR, вместо того чтобы делать 9 проверок...
Спасибо большое.Сам являюсь любителем самоучкой в этой области.Все примеры взяты из интернета. Поможете в этом деле с FMC? Настраивал через программу STM32 cube Заранее большое спасибо.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения