Manfred 0 14 июня, 2019 Опубликовано 14 июня, 2019 (изменено) · Жалоба К микроконтроллеру STM32H7 подключено ПЛИС по мультиплекированной асинхронное шине Address / Data на 16 бит (без частоты и сигнала ожидания, FIFO по записи отключено, кеш процессора отключен, оптимизация компилятора тоже). Все сконфигирировано через последний CubeMx. Проблема в том, что не удается корректно читать ПЛИС. Уже думаю сымитировать шину ножками. Чтения по адресу 0x6000'0000 инициализируют обмен, как просто по volatile указателю так и через HAL функции. Пишу логическим анализатором ПЛИС всю шину. Управляющие сигналы похожи на ожидаемые (address valid, nwe, noe, ne1, byte enable), странности в поведение адреса и количестве обменов. Первый вопрос: как отключить кеширование внешней шины. Чтение шины происходит даже раньше, чем я его запрашиваю и сразу пакетом (много чтений). Второй вопрос: странный протокол адреса. При чтение 32х разрядного числа по адресу 0x6000'0000 получаю в первом цикле адрес 0x0000, во втором 0x0201. Такое впечатление что 2 какой-то управляющий сигнал в 9 бите (слипнуться ноги не могут) Изменено 15 июня, 2019 пользователем Manfred Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 14 июня, 2019 Опубликовано 14 июня, 2019 · Жалоба 57 minutes ago, Manfred said: Все сконфигирировано через последний CubeMx. Похоже, проблема именно в этом Прошу прощения не мог удержаться :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 15 июня, 2019 Опубликовано 15 июня, 2019 (изменено) · Жалоба Аналогично с STM32F7: Перенесите работу с памятью в адресное пространство 0xC000'0000 и сделайте так: SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0; // Remapping memory (FMC->SRAM from 0x60000000 to 0xC0000000). Я даже нашёл причину на другом форуме. Довольно занимательный поиск причины. Изменено 15 июня, 2019 пользователем AlanDrakes Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Manfred 0 17 июня, 2019 Опубликовано 17 июня, 2019 (изменено) · Жалоба On 6/15/2019 at 7:34 PM, AlanDrakes said: Аналогично с STM32F7: Перенесите работу с памятью в адресное пространство 0xC000'0000 и сделайте так: SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0; // Remapping memory (FMC->SRAM from 0x60000000 to 0xC0000000). Я даже нашёл причину на другом форуме. Довольно занимательный поиск причины. Спасибо, перенос в 0xC000_0000 определенно помог, адреса на внешней шине теперь правильные выставляются Изменено 17 июня, 2019 пользователем Manfred Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться