Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EMC & lpc24xx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
toweroff
Никак не разберусь... Настроил EMC (у меня висят 2 16-разрядных NOR flash), разрядность EMC - 32 бита. Посчитал все задержки для чтения/записи, прописал в конфигурацию. Проверил осциллографом - все ОК.

Теперь пытаюсь читать и гнать по USB в комп - какая-то ерундень получается. Каждые 64 байта начинаются FF FF FF FB, и так на всем протяжении дампа.

В режиме отладки через JTAG в Keil смотрю память с 0x8000 0000 - то же самое

Флешки записаны 100% правильно и такого "мусора" в них нет

Доступ к ним осуществляется таким образом:

unsigned int *memory;
unsigned int i;

memory = (unsigned int*) 0x80000000;

for (i=0; i<64*1024*1024; i+4)
{
// тут отсылаем по 64 байта в USB
memory += 16; // потому как int=4 байта
}


В чем может быть проблема вылезания мусора?
По USB передача корректная, т.к. осуществляется еще много других сервисных обменов с хостом - все в порядке
ar__systems
Цитата(toweroff @ Mar 20 2009, 10:41) *
Никак не разберусь... Настроил EMC (у меня висят 2 16-разрядных NOR flash), разрядность EMC - 32 бита. Посчитал все задержки для чтения/записи, прописал в конфигурацию. Проверил осциллографом - все ОК.

Я думаю вывод может быть только один -- не все ОК и вы его еще не настроили. Проверять лучше лоджик аналайзером...
toweroff
Цитата(ar__systems @ Mar 20 2009, 19:49) *
Я думаю вывод может быть только один -- не все ОК и вы его еще не настроили. Проверять лучше лоджик аналайзером...


да все ОК, перепроверял несколько раз. По крайней мере с адресацией, с данными были перепутаны старшие и младшие байты в каждом полуслове.
Меня смущает именно непонятная ситуация с FF FF FF FB (или FF FF FB FF, если с учетом ошибки) в начале каждых 64 байт
toweroff
Прошу прощения, Extended Wait Enable = 1 спасло ситуацию.. Теперь буду посмотреть что получилось с таймингами
toweroff
Вторая часть марлезонского балета smile.gif

Все пины отконфигурированы, но не работает /WE. Все остальное (/CS[3..0], /OE) работают как надо.

По идее же /WE должен работать всегда, а BLS[3..0] выбирают нужный байт на 32-разрядной шине. У меня внешняя 32-разрядная память, поэтому BLSx мне не нужны и я использую только /WR. Но паразитка не хочет работать, на осциллографе тишина... Куда еще копнуть можно?

ЗЫ.

в начальной конфигурации вот это:

EMC_PINSEL9_Val EQU 0x50055555; ; A16 .. A23, !OE, !WE, !CS0, !CS1

смотрел в отладчике Keil'а - все нормально, функция пина именно /WR
pn1212
При поиске WE стоит прочитать UM10237_3 стр 96...100 возможно в Вашей аппаратной конфигурации WE не используется (заменяется на BLS(0...3) )
toweroff
Цитата(pn1212 @ Mar 25 2009, 20:53) *
При поиске WE стоит прочитать UM10237_3 стр 96...100 возможно в Вашей аппаратной конфигурации WE не используется (заменяется на BLS(0...3) )


и что там интересного? Схема КАК подключать разные типы микросхем с разной организацией.

У меня память 32-разрядная, с ОБЩИМИ сигналами /CS, /OE, /WR. Других сигналов управления НЕТ

Тогда вопрос следующий - КАК взаимосвязаны /WR и /BLSx ? Где можно почитать и посмотреть на диаграммы?
toweroff
Чтение следующих вещей спасло ситуацию... но все равно - шаманство, пока точно неизвестно, как значения регистров влияют на формирования сигналов по тактам шины AHB.
Где бы можно это досконально почитать и разобраться?

http://electronix.ru/forum/index.php?showt...mp;#entry422230

http://electronix.ru/forum/index.php?showt...mp;#entry365677
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.