TOG 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба Друзья, есть на плате микроконтроллер (STM32H743) и SDRAM (IS42S16160G). Все в принципе работает, данные в SDRAM пишутся, считываются, проблем вроде нет. Однако тыкнув осциллографом в сигнал CLK на SDRAM я увидел, что частота вдвое ниже чем ожидалось, 71,5 МГц, а должно быть 143 МГц. Проект сделан в CubeMX. На вкладке Clock Configuration явно видно, что на FMC идет 143МГц. Однако параметр SDRAM_common_clock = "2 HCLK clock cycles" превращает 143 МГц в 71,5 МГц. (а меньше выбрать нельзя) Это так и должно быть ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyaha 1 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 1 hour ago, TOG said: Однако тыкнув осциллографом в сигнал CLK на SDRAM я увидел, что частота вдвое ниже чем ожидалось, 71,5 МГц, а должно быть 143 МГц. Выкладки из ПДФ: SDRAM/LPSDR SDRAM, NOR/NAND Flash clocked up to 133 MHz in synchronous mode The maximum FMC_CLK/FMC_SDCLK frequency for synchronous accesses is the FMC kernel clock divided by 2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба Еще рекомендую ознакомиться с разделом "FMC Characteristics" DS: в зависимости от ревизии и напряжения питания, максимальная частота FMC_CLK при работе с SDRAM не должна превышать 100 или 110МГц. То есть SDRAM доступна в режиме 50/55МГц всего-навсего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 25 октября, 2021 Опубликовано 25 октября, 2021 · Жалоба On 10/22/2021 at 3:55 PM, Tolyaha said: Выкладки из ПДФ: SDRAM/LPSDR SDRAM, NOR/NAND Flash clocked up to 133 MHz in synchronous mode The maximum FMC_CLK/FMC_SDCLK frequency for synchronous accesses is the FMC kernel clock divided by 2. Нашел, увидел. Спасибо, Tolyaha ! On 10/22/2021 at 5:47 PM, aaarrr said: Еще рекомендую ознакомиться с разделом "FMC Characteristics" DS: в зависимости от ревизии и напряжения питания, максимальная частота FMC_CLK при работе с SDRAM не должна превышать 100 или 110МГц. То есть SDRAM доступна в режиме 50/55МГц всего-навсего. Спасибо, aaarrr ! В общем подведя итог получается следующее: 1. Максимальная частота клока на SDRAM: FMC_CLK = 100 MHz (так пишет первая страница даташита) 2. В ревизии V максимальная частота клока на SDRAM: FMC_CLK = 110 MHz (стр. 272 даташита) 3. Частота fmc_ker_ck должна быть вдвое выше. Поскольку в даташите нигде не указаны ограничения на fmc_ker_ck, посмотрел в CubeMX, там они пишут что fmc_ker_ck не должна превышать 300 МГц. Получается, что задав фундаментальную частоту fmc_ker_ck = 220 MHz, по идее на SDRAM мы должны получить FMC_CLK = 110 MHz и выжать таким образом максимум из FMC. Вот только в реальности, я могу выставить fmc_ker_ck = 160 MHz и память работает без ошибок. Но если выставить fmc_ker_ck = 160,5 MHz, то сразу появляются ошибки чтения. Их не много (~ 20 штук на 16 Мегабайт), но это уже не приемлемо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 26 октября, 2021 Опубликовано 26 октября, 2021 · Жалоба On 10/25/2021 at 6:31 AM, TOG said: Вот только в реальности, я могу выставить fmc_ker_ck = 160 MHz и память работает без ошибок. Но если выставить fmc_ker_ck = 160,5 MHz, то сразу появляются ошибки чтения. Их не много (~ 20 штук на 16 Мегабайт), но это уже не приемлемо. Может сама плата уже не тянет? звоны, фронты затянуты, уровни не те, питания не хватает, еще чего-нибудь. Кстати, убедитесь что чаcтота действительно была 160, и стала действительно 160.5 МГц - может тестировали на сильно меньше чем 160, или после нее установили сильно больше чем 160.5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 октября, 2021 Опубликовано 26 октября, 2021 · Жалоба Перестарался я с делителями. Действительно, должно на 100МГц работать. OSPEED на пинах FMC правильно выставлены? Вообще, обилие тем типа "SDRAM на STM32H7 не работает как надо" наводит на мысль, что в консерватории, возможно, что-то не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 26 октября, 2021 Опубликовано 26 октября, 2021 · Жалоба 2 часа назад, aaarrr сказал: Вообще, обилие тем типа "SDRAM на STM32H7 не работает как надо" наводит на мысль, что в консерватории, возможно, что-то не так. Осталось понять: "в какой именно консерватории?" Кубо-кальной или в самой периферии МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 октября, 2021 Опубликовано 26 октября, 2021 · Жалоба 4 minutes ago, jcxz said: Осталось понять: "в какой именно консерватории?" Кубо-кальной или в самой периферии МК? Поначалу я думал, что люди, ранее не имевшие дела с более-менее скоростными сигналами, массово принялись делать свое железо, и отсюда многочисленные проблемы. Теперь сомневаюсь. На куб я бы особо не грешил - десять раз исправили бы уже, будь там такого уровня косяк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 26 октября, 2021 Опубликовано 26 октября, 2021 · Жалоба 4 часа назад, aaarrr сказал: На куб я бы особо не грешил - десять раз исправили бы уже, будь там такого уровня косяк. Это легко проверить, посмотрев в отладчике значения битовых полей в регистрах после инициализации кубом и сравнив их с требуемыми по логике работы блока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 27 октября, 2021 Опубликовано 27 октября, 2021 · Жалоба On 10/25/2021 at 9:31 AM, TOG said: Вот только в реальности, я могу выставить fmc_ker_ck = 160 MHz и память работает без ошибок. Но если выставить fmc_ker_ck = 160,5 MHz, то сразу появляются ошибки чтения. Их не много (~ 20 штук на 16 Мегабайт), но это уже не приемлемо. Косяк у меня был в том, что сигнал FMC_SDNE0 (SDRAM_CS) был подключен к порту PC2_C, а это низкоскоростной аналоговый порт (так пишет даташит, стр. 67). Фронты FMC_SDNE0 (SDRAM_CS) были очень сильно завалены. Когда я переназначил этот сигнал через альтернативную функцию на порт PC4 (обычный высокоскоростной GPIO), все заработало как надо. Теперь FMC работает на своей максимальной частоте 220 МГц (FMC_ker_ck = 220 MHz), соответственно SDRAM работает на частоте 110 MHz , ошибок чтения нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться