реклама на сайте
подробности

 
 
> Внешние устройства на at91rm9200
sergeeff
сообщение Jan 10 2007, 19:42
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги!

Столкнулся с такой проблемой. Определяю для внешних устройств 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
Что за мистика? Не в курсе ли кто?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
aaarrr
сообщение Jan 10 2007, 20:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 10 2007, 19:42) *
...осциллографом вижу, что эпизодически во время этих CS'ов проскакивает CS1 (видимо при регенерации SDRAM). Стробирование буферов шины данных (для устранения конфликтов) внешних устройств сделано как -(CS0 & CS1). Соответственно эти короткие импульсы на CS1 сбивают всю работу внешних устройств.

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

Refresh SDRAM идет независимо от остальных обменов Memory Controller'а. Стробировать буферы шины устройства можно только сигналами NOE/NWE, а никак не CS.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 11 2007, 09:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Спасибо за ответ. Насчет регенерации SDRAM - понятно. Насчет стробирования буферов внешней шины. Тут, думается, ты не вполне прав. Если двунаправленный буфер внешней шины данных не будет переводится в третье состояние на время, когда активны CS'ы внутренней шины данных - будем иметь конфликт. И тут только сигналов NOE NWE недостаточно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 11 2007, 11:38
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 11 2007, 09:55) *
И тут только сигналов NOE NWE недостаточно.

Я и не говорил, что достаточно. Очевидно, что буфер надо разрешать по NOE и CS.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016