Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Внешние устройства на at91rm9200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sergeeff
Коллеги!

Столкнулся с такой проблемой. Определяю для внешних устройств CS2 и CS3. Обращаюсь к этим устройствам по соответствующим адресам. При этом осциллографом вижу, что эпизодически во время этих CS'ов проскакивает CS1 (видимо при регенерации SDRAM). Стробирование буферов шины данных (для устранения конфликтов) внешних устройств сделано как -(CS0 & CS1). Соответственно эти короткие импульсы на CS1 сбивают всю работу внешних устройств.

Я никак не могу понять, как вообще возможно существование в один и тотже момент времени двух CS'ов. Может не правильно программирую SDRAM контроллер?

Второе. В файле at91rm9200.h приведена структура:
// *****************************************************************************
// SOFTWARE API DEFINITION FOR Memory Controller Interface
// *****************************************************************************
typedef volatile struct _AT91S_MC {
AT91_REG MC_RCR; // MC Remap Control Register
AT91_REG MC_ASR; // MC Abort Status Register
AT91_REG MC_AASR; // MC Abort Address Status Register
AT91_REG Reserved0[1]; //
AT91_REG MC_PUIA[16]; // MC Protection Unit Area
AT91_REG MC_PUP; // MC Protection Unit Peripherals
AT91_REG MC_PUER; // MC Protection Unit Enable Register
} AT91S_MC, *AT91PS_MC;

В документации на процессор ни слова про регистры :
AT91_REG MC_PUIA[16]; // MC Protection Unit Area
AT91_REG MC_PUP; // MC Protection Unit Peripherals
AT91_REG MC_PUER; // MC Protection Unit Enable Register
Что за мистика? Не в курсе ли кто?
aaarrr
Цитата(sergeeff @ Jan 10 2007, 19:42) *
...осциллографом вижу, что эпизодически во время этих CS'ов проскакивает CS1 (видимо при регенерации SDRAM). Стробирование буферов шины данных (для устранения конфликтов) внешних устройств сделано как -(CS0 & CS1). Соответственно эти короткие импульсы на CS1 сбивают всю работу внешних устройств.

Я никак не могу понять, как вообще возможно существование в один и тотже момент времени двух CS'ов. Может не правильно программирую SDRAM контроллер?

Refresh SDRAM идет независимо от остальных обменов Memory Controller'а. Стробировать буферы шины устройства можно только сигналами NOE/NWE, а никак не CS.
sergeeff
Спасибо за ответ. Насчет регенерации SDRAM - понятно. Насчет стробирования буферов внешней шины. Тут, думается, ты не вполне прав. Если двунаправленный буфер внешней шины данных не будет переводится в третье состояние на время, когда активны CS'ы внутренней шины данных - будем иметь конфликт. И тут только сигналов NOE NWE недостаточно.
aaarrr
Цитата(sergeeff @ Jan 11 2007, 09:55) *
И тут только сигналов NOE NWE недостаточно.

Я и не говорил, что достаточно. Очевидно, что буфер надо разрешать по NOE и CS.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.