Проект на LPC1788 + SDRAM. Необходимо в ходе работы изменить тактовую частоту CPU. Так как SDRAM тактируется от клока CPU (с делителем /1 или /2), то и частота SDRAM поменяется. А значит - необходимо заново проинитить контроллер SDRAM (EMC). Но нужно это сделать не потеряв содержимого SDRAM. А в даташите указано, что значения регистров управления EMC можно изменять только если EMC disabled или находится в idle. Правильно ли я понимаю, что для этого достаточно обеспечить чтобы: 1) дождаться статуса "EMC is idle" в регистре EMC.STATUS; 2) установить бит "Low-power mode" в регистре EMC.CONTROL; 3) перестроить частоту CPU (PLL и т.п.) обспечив, чтобы в течение этого времени не было выборок кода или данных из SDRAM или прочих обращений к ней; 4) переинитить EMC для нового значения клока; 5) сбросить бит "Low-power mode" в регистре EMC.CONTROL. Будет-ли производиться refresh памяти в течение пунктов 1...5? Или может у кого-то есть правильная процедура переиницализации EMC для LPC17xx без потери данных в SDRAM?
|