Собственно к LPC2214 подключен внешний чип (НЕ ПАМЯТЬ) по параллельной шине. Используется EMC BANK0 в восмиразрядном режиме.
При выполнении нескольких последовательно идущих операций записи CS0 устанавливается в активный уровень и "под ним" идут несколько импульсов BLS0. При выполнении операций чтения все нормально - на каждый импольс OE идет свой импульс CS.
Кроме того, при чередовании операций чтения и записи, независимо от порядка следования, CS захваиывает один импульс OE, при чем всегда ближайший к BLS.
Пример 1:
char C = 2;
*((char *)0x80000000) = C; *((char *)0x80000001) = C + 1; *((char *)0x80000002) = C + 2; *((char *)0x80000003) = C + 3;
Приводит к появлению одного импульса CS и четырех импульсов BLS. Длительность CS перекрывает все импульсы BLS.
Пример 2:
char C = 2; char X;
*((char *)0x80000000) = C; X = *((char *)0x80000001) ; *((char *)0x80000002) = C + 2; X = *((char *)0x80000003);
Приводит к появлению двух импульсов CS. Под первым СНАЧАЛА импульс OE для адреса 0x80000001, ПОТОМ импульс BLS для адреса 0x80000000. Под вторым то-же самое для адресов 0x80000002 0x80000003.
Собственно адрес не имеет значение.
Пример 3:
*((char *)0x80000000) = C; X = *((char *)0x80000000) ;
Или:
*((char *)0x800000E0) = C; X = *((char *)0x80000008) ;
Приводит к тому-же результату, то есть СНАЧАЛА импульс OE, ПОТОМ импульс BLS.
И еще. Обнаружил странную зависимость. Если перед и после оперции записи есть загрузка PC (ветвление, вызов подпрограмм) то все идет как по маслу, на каждый BLS выдается свой CS.
Прошерстил даташиты и ераты. Ничего по этому поводу не нашел.
Кто нибудь может хоть как-то покоментировать?
В догонку.
Проверить на другом CS не имею возможности ввиду занятых пинов другими функциями.
И вопрос: Неужели это MAM такие фортели выкидывает?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|