Поиск
Показаны результаты для тегов 'fmc'.
-
Nuvoton NUC472 bootloader LD и APROM
Sergey K опубликовал тема в ARM, 32bit
Перешел с Microchip на ARM32 в лице Nuvoton NUC472, в целом программа уже работает, но столкнулся с непониманием работы FMC, а именно логики работы загрузчика. Микроконтроллер предлагает две области памяти: LDROM для загрузчика и APROM для самого приложения, но в настройках есть варианты отзеркаливания части загрузчика в первом секторе основной программы и честно говоря я не совсем понимаю, как это работает и зачем это нужно. 00 LDROM with IAP function Chip booting from LDROM, program executing range including LDROM and most of APROM (all except first 2048 bytes as the first 2048 bytes is mapped from LDROM). LDROM address is mapping to 0x0010_0000 ~ 0x0010_3FFF, and also the first 2048 bytes of LDROM is mapping to the address 0x0000_0000 ~ 0x0000_07FF. The address 0x0000_0000 ~ 0x0000_07FF can be re-mapped to any other page within executing range through ISP command. Both APROM and LDROM are programmable in this mode no matter the code is currently running on LDROM or APROM. Data Flash is meaningless in this mode, because any area of APROM and LDROM can just be used as the Data Flash. DFBADR is not functioned in this mode. 01 LDROM without IAP function Chip booting from LDROM, program executing range only including LDROM; APROM cannot be access by program directly, except by through ISP. LDROM is write-protected in this mode. 10 APROM with IAP function Chip booting from APROM, program executing range including LDROM and APROM LDROM address is mapping to 0x0010_0000~0x0010_3FFF The address 0x0000_0000 ~ 0x0000_07FF can be re-mapped to any other page within executing range though ISP command. Both APROM and LDROM are programmable in this mode no matter the code is currently running on LDROM or APROM. Data Flash is meaningless in this mode, because any area of APROM and LDROM can just be used as the Data Flash. DFBADR is not functioned in this mode. 11 APROM without IAP function Chip booting from APROM and program executing range only including APROM. LDROM cannot be access by program directly, except by through ISP. APROM is write-protected in this mode. Собственно мне нужно, чтобы МК стартовал с загрузчика, проверял состояние ножки и если нет нужды - передавал управление основной программе. Насколько я понял, логика предполагает, что я должен в основной программе изменить биты (CBS[1:0]), отвечающие за старт и после перезагрузки запустится загрузчик, он выполнит обновление прошивки и изменит биты на запуск основной прошивки, но основная прошивка может оказаться неработоспособной и снова изменить биты на запуск загрузчика уже не сможет. Смотрел примеры, которые входят в комплект CMSIS, но это не внесло ясности, что-то я упускаю. -
Прошу помочь разобраться с работой FMC модуля МК STM32F407VE. Необходимо подключить внешнюю память ОЗУ; так как в данном МК шина адреса и данных объединена, для обращения к внешней памяти адрес необходимо демультипликсировать, для чего используется сигнал nADV (nL). Сигнал должен поступать на внешние защелки. Предполагается использовать ОЗУ типа IS61LV25616AL или аналогичную по структуре. Даташит на нее: https://datasheet.lcsc.com/lcsc/1809192221_ISSI-Integrated-Silicon-Solution-IS61LV25616AL-10TL_C16001.pdf Собственно, вопросы такие: 1) В Reference Manual (RM0090) для данного режима временные диаграммы приведены вроде как только для обращения к NOR FLASH. Можно предполагать, что в целом они будут такие же и для PSRAM (RM0090, см. стр. 1547). Однако, не очень понятно, по какому фронту следует защелкивать линию адреса. Предполагаю, что все же по нарастающему – именно за время между спадающим и нарастающим фронтом nADV (nL) сигнала – ADDSET – должны завершиться переходные процессы, а затем FMC модуль считает данные (для режима чтения). Верно ли это, и, соответственно, подойдет ли в качестве защелки микросхема 74HC574 (2 шт.). https://assets.nexperia.com/documents/data-sheet/74HC_HCT574.pdf Смущает, что она довольно медленная: время задержки между входом и выходом может составлять более 200 нсек при напряжении питания 2 В, и 45 нсек при питании 4,5 В. Хотя моя схема будет работать от питания 3,3 В, задержка все равно останется достаточно большой. Может, следует посмотреть что получше? 2) Поскольку шина данных 16-битная, обращение к данным размерностью в 32 бита будет разбито на две этапа (RM0090, см. стр. 1533). Интересует, какие это имеет последствия, кроме увеличения времени доступа к данным по сравнению с временем доступа к данным во внутренней памяти. Также, верно ли, что желательно не делать обращений к внешней памяти из прерываний, а в крайнем случае – использовать инструкцию __DSB()? 3) В мультиплексированном режиме, а также при побайтном обращении линия данных или ее часть находится небольшое время в высокоомном состоянии. Следует ли на всякий случай применять подтяжки к земле/питанию?
-
Проблема подключения sdram к stm32
Nowsan опубликовал тема в Разрабатываем ПП в САПР - PCB development
Имеется плата с микроконтроллером STM32F769II и микросхемой sdram MT48LC4M16A2. Прошил мк тестовой программой. В ней на sdram записывается информация из одного буфера, а затем читается в другой. Проблема в том, что этого не происходит, второй буфер остаётся пустой. Сигналов WE и CS с помощью логического анализатора (макс. 24 МГц) не увидел. Простым "ногодрыгом" удостоверился, что ножки МК в принципе живые. Вопрос такой, может ли в данном случае неграмотная разводка платы (а в том, что она неграмотная сомневаться не приходиться) сделать устройство полностью неработоспособным. Устройство разведено на 4-х слойной печатной плате. В основном вся разводка выполнена на внутренних слоях, а значит почти у всех дорожек есть два переходных отверстия. Верхние два слоя залиты, насколько возможно, GND полигонами, два нижних слоя залиты VCC полигонами. Ещё есть такой момент, уже не касательно разводки ПП. Я заметил что всех отладочных платах от STM для тактирования МК используется кварц на 25 МГц, я же использую 10 МГц, при этом скорректировав все делители и умножители так, чтобы тактирование ядра и FMC совпадало с примерами, но вдруг всё же мистическим образом это не правильно и нужно использовать именно 25 МГц?