Цитата(scifi @ Jun 22 2016, 02:22)

Даташит на SDRAM читать не пробовали? Он говорит, что это Auto Refresh. Исполнить 8192 раз - и все ряды будут свежие.
Какой именно? Я их уже несколько скачал - нигде нет алгоритма и нет объяснения что такое "auto refresh" или "self refresh" и каким порядком их применять.
Как подать команду, какие нужны задержки и где и т.п.? Остаётся только гадать.
К тому же, как я понял, контроллер EMC в LPC17xx не умеет принудительно подавать команду "auto refresh" если судить по юзермануалу на LPC1788.
Есть только какой-то бит отвечающий за вход в "self refresh", но как им пользоваться, как туда входить и выходить??? В юзермануале ничего не нахожу. Поэтому и спрашиваю.
Цитата(AVI-crak @ Jun 22 2016, 01:08)

У sdram есть собственная команда глубокого сна. После такой команды не требуется внешний клок, можно вообще всё остановить. Но есно мк должен быть настроен на реген sdram силами самого sdram. Сейчас уже трудно найти чипы без таких функций.
Как его включить? Биты какие-то немного описаны, но не описан порядок использования.
Может быть так?:
1. Дождаться SDRAM idle (EMC.STATUS.BUSY == 0).
2. Выставить запрос входа в "self refresh" (EMC.DYNAMICCONTROL = 1 << 2). Но не понятно - остальные биты в 0 или как? Как быть с частотой EMCCLK на SDRAM - отключить или нет?
3. Дождаться "Self-refresh acknowledge" (EMC.STATUS.SA == 1).
4. Перевести EMC в режим "low power" (EMC.CONTROL.L = 1).
5. Здесь как я понимаю можно отключить EMCCLK и перепрограммировать частоту CPU. А SDRAM в это время будет сама от собственного внутреннего генератора обновляться?
6. Здесь можно перепрограммировать все конфигурационные регистры SDRAM?
7. Перевести EMC в режим "normal" (EMC.CONTROL.L = 0).
8. Выставить запрос выхода из "self refresh" (EMC.DYNAMICCONTROL = 0 << 2 | 1 << 1).
9. Дождаться "Self-refresh acknowledge" (EMC.STATUS.SA == 0).
Не уверен что всё так, что порядок верный. К тому же в конце процедуры инициализации SDRAM, ей надо подать несколько команд (с задержками между ними). Будут ли они работать когда чип SDRAM находится в "self-refresh"? Или вначале вывести из него?