MiniMax 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Пробую запустить EMC контроллер на LPC2378. Внешняя SRAM память CY7C1049CV33-15VXC ( 512K x 8). Про ERRATA насчет EMC знаю EMC.1: Write operation cannot be performed on the external memory bus Introduction: The External Memory Controller supports asynchronous static memory device support including RAM, ROM, and Flash, with or without asynchronous page mode. Problem: Write operation is not operational. Workarounds: Using all the EMC pins as GPIO pins, the write operation can be simulated in software. Попробовал симулировать EMC контроллер программным путем используя IO's. Все работает отлично. Память пишется и читается. Т.е. проблем с аппаратной частью нет. Но по некоторым сведениям в новых версиях LPC2378 контроллер внешней памяти должен работать. Это инициализированные регистры EMC EMC_CTRL=0x1 EMC_STA_CFG0=0x100 EMC_STA_WAITWEN0(MAX 0x0F)=0xF EMC_STA_WAITOEN0(MAX 0x0F)=0xF EMC_STA_WAITRD0(MAX 0x1F)=0x1F EMC_STA_WAITPAGE0(MAX 0x1F)=0x1F EMC_STA_WAITWR0(MAX 0x1F)=0x1F EMC_STA_WAITTURN0(MAX 0x3F)=0xF При операции записи вижу осциллографом, что СS и WR выводы работают как им и положено. При операции чтения вижу осциллографом, что СS работает. Но OE не работает. Висит там 2.2V постоянно. Шина данных и адресов похоже, что работает также. PINSEL9 иницализирован // Control Bus // OE PINSEL9 &=(~((1UL<<16)|(1UL<<17))); PINSEL9 |=(1UL<<17); // WE PINSEL9 &=(~((1UL<<18)|(1UL<<19))); PINSEL9 |=(1UL<<19); // CS0 PINSEL9 &=(~((1UL<<28)|(1UL<<29))); PINSEL9 |=(1UL<<28); Интересная вещь. Запись похоже, что работает. А чтение не работает. Т.е. все наоборот, если мы сравним с ERRATA SHEET :-) В чем могут быть проблемы с OE ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 (изменено) · Жалоба Поставьте чип с ревизией B или A. Там таких проблем нет. Ревизия В уже давно продается везде. Изменено 15 февраля, 2008 пользователем Vitaliy_ARM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба На чипе написано LPС2378FBD144 SH3719.1 11 ZS00742BY Я так подозреваю, что это и есть ревизия B ? У Вас работает LPC2378 с внешней SRAM или FLASH ? Можете привести правильный код инициализации? Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Работаю с LPC2468. Инициализация вот: //------------------------------------------------------------------------------ //* Инициализация контроллера SRAM void SramInit(void) { DWORD dummy = dummy; //************************************************************************* //* Инициализация EMC and SRAM //************************************************************************* // SCS |= 0x00000002; /* Reset EMC */ EMC_CTRL = 0x00000003; /* Enable Address mirror*/ PCONP |= 0x00000800; /* Turn On EMC PCLK */ // Конфигурация портов ввода/вывода // P3.0 - P3.7 => D0 - D7 // P4.0 - P4.15 => A0 - A15 // P4.24 = ~OE // P4.25 = ~WE // P4.30 = CS0 // P4.31 = CS1 //* шина данных подключена полностью PINSEL6 = 0x55555555; PINSEL7 = 0x55555555; //* шина адреса 12 разрадная PINSEL8 = 0x00555555; PINSEL9 = 0x00010000; EMC_CONFIG = 0; // Litle indian // Шина 32 бит // POR включен // Чип селект по высокому уровню // Extended wait disabled // Write bufer disabled // Write not protected EMC_STA_CFG0 = (1<<6)|(1<<3)|(1<<1); // Async page mode enabled (page length four). delayMs(100); EMC_STA_WAITWEN0 = 0; EMC_STA_WAITOEN0 = 0; EMC_STA_WAITRD0 = 0; EMC_STA_WAITPAGE0 = 0; EMC_STA_WAITWR0 = 0; EMC_STA_WAITTURN0 = 0xF; delayMs(100); // Шина 32 бит // POR включен // Чип селект по высокому уровню // Extended wait disabled // Write bufer disabled // Write not protected EMC_STA_CFG1 = (1<<6)|(1<<3)|(1<<1); delayMs(100); EMC_STA_WAITWEN1 = 0; EMC_STA_WAITOEN1 = 0; EMC_STA_WAITRD1 = 0; EMC_STA_WAITPAGE1 = 0; EMC_STA_WAITWR1 = 0; EMC_STA_WAITTURN1 = 0xF; delayMs(100); return; } Откорректируйте для 8 битной шины PINSEL и EMC_STA_CFG регистры по даташиту и должно завестись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Похоже, что Вы стартовали с кода в Keil примерах http://www.standardics.nxp.com/support/doc...4xx.uvision.zip Это EXTMEM example. Но по поводу этого примера они говорят в README файле: "( LPC24xx only, tested on Embedded Artists LPC24xx OEM board)" И у Вас как раз LPC2468. Не сомневаюсь , что это работает на LPC2468. Но у меня LPC2378 :-( А вот с этим чипом большой вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 15 февраля, 2008 Опубликовано 15 февраля, 2008 (изменено) · Жалоба Я так подозреваю, что это и есть ревизия B ? Как-бы да, но для полной уверенности у него еще идентификатор должен считываться: 0x1700FD25 а не 0x0703FF25 или 0x0703F925 У Вас работает LPC2378 с внешней SRAM или FLASH ? Работаю только с LPC2468 там 8bit SRAM работает. Инициализацию делал тупо по datasheet и никаой оригинальности нет: PCONP |= 0x00000800; // Turn On Power EMC PCLK EMCCONTROL = EMCCONTROL_ENABLE; // EMC Enable PINSEL6 = 0x00005555; // 8bit Bus Configuration PINSEL8 = 0x55555555; // PINSEL9 = 0x10110015; // CS0, BLS0 aka WE, OE, A18-16 EMCSTATICCNFG0 = EMCSTATICCNFG_MW8|EMCSTATICCNFG_BUFFER_ENABLE; EMCSTATICWAITWEN0 = 0; EMCSTATICWAITOEN0 = 0; EMCSTATICWAITRD0 = 1; EMCSTATICWAITPG0 = 0; EMCSTATICWAITWR0 = 0; EMCSTATICWAITTURN0 = 0; EMCSTATICEXTENDEDWAIT = 0; Кстати, в приведенном Вами Кейловском наборе имеют место быть какие-то шаманские задержи, это я чего-то в datasheet просмотрел? Или обычный бред? Естественно, что BUFFER можно и выключить, а EXTENDED_WAIT включить, эффект будет, но на факт появления OE, естественно сие не влияет. Работоспособность LPC2378/7 очень интересует - подумываю над тем, что у меня первой в жизнь должна пойти именно она а не LPC2468. Работаю с LPC2468. Инициализация вот: PINSEL9 = 0x00010000; } Работаете??? А как это без CS и прочего удалось-то!!!! Изменено 25 июля, 2010 пользователем zltigo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Проблема решена :yeah: Я использовал UM10211 LPC2364/6/8/78 User manual Rev. 01 6 October 2006 User manual 10 минут назад загрузил http://www.standardics.nxp.com/support/doc...ual.lpc23xx.pdf UM10211 LPC23xx User manual Rev. 01.08 31 January 2008 User manual И что же я вижу ? Описания не соответствуют. В новом мануал говорится, что для OE pin надо записать "01" в PINSEL9, а не "10". Короче говоря вот работающий финальный код инициализации EMC для LPC2378 EMC_CTRL = 0x00000001; PCONP |= 0x00000800; /* Turn On EMC PCLK */ // Configure EMC pins // Data Bus PINSEL6 &= ~(0xFFFF); PINSEL6 |= 0x5555; // Address Bus PINSEL8 = 0x55555555; // Control Bus // OE PINSEL9 &=(~((1UL<<16)|(1UL<<17))); PINSEL9 |=(1UL<<16); // WE PINSEL9 &=(~((1UL<<18)|(1UL<<19))); PINSEL9 |=(1UL<<18); // CS0 PINSEL9 &=(~((1UL<<28)|(1UL<<29))); PINSEL9 |=(1UL<<28); EMC_STA_CFG0 = 0x80; EMC_STA_WAITWEN0 = 0x2; EMC_STA_WAITOEN0 = 0x2; EMC_STA_WAITRD0 = 0x1f; EMC_STA_WAITPAGE0 = 0x1f; EMC_STA_WAITWR0 = 0x1f; EMC_STA_WAITTURN0 = 0x0f; Работает и чтение и запись в пределах 64K банка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 16 февраля, 2008 Опубликовано 16 февраля, 2008 (изменено) · Жалоба Работаете??? А как это без CS и прочего удалось-то!!!! Просто у меня не память висит, а CPLD. Я его не использую совсем. У меня плисина генерирует внешнее прерывание, когда она уже подготовила данные. Пардон, этот кусок кода был взят из тестовой программы для проверки работоспособности CPLD. Изменено 16 февраля, 2008 пользователем Vitaliy_ARM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpeedyX 0 26 мая, 2008 Опубликовано 26 мая, 2008 · Жалоба @MiniMax Hi, i send you private message I want to learn that how can i use the CY7C1049CV33-15VXC with LPC2468 i must write data to it very fast, i don't know My Connections : P4.24 / OE = OE P4.25 / WE = WE P4.30 / CS0= CE P4.[0-18] / A0-A18 = Address of SRAM P3.[0-7] / D0-D7 = Data of SRAM Can you help me anyone? Поздрави Filip Filipov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 26 мая, 2008 Опубликовано 26 мая, 2008 · Жалоба I want to learn that how can i use the CY7C1049CV33-15VXC with LPC2468 i must write data to it very fast, i don't know Filip Filipov Hi Philip, Unfortunately I have never used an LPC2468 on my side. On my board an LPC2378 is installed which is slightly different. It seemed a guy with nickname "zltigo" worked with that uC ( LPC2468). Please contact him Best regards, MiniMax Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 26 мая, 2008 Опубликовано 26 мая, 2008 · Жалоба Hi, i send you private message I have got your personal message. As you haven’t asked any direct questions I don’t understand clearly how I can help you. One of the examples of initialization was mentioned some posts before. You should do your work yourself. If you have any precise questions you may try to ask. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpeedyX 0 4 июня, 2008 Опубликовано 4 июня, 2008 · Жалоба I have got your personal message. As you haven’t asked any direct questions I don’t understand clearly how I can help you. One of the examples of initialization was mentioned some posts before. You should do your work yourself. If you have any precise questions you may try to ask. Hi, i don't know that how i can write into the SRAM and read? i am using Keil and LPC2468, the SRAM is CY7C1049CV33-15VXC I want to know how i can use this sram. Best regards. is this a direct question? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 7 июня, 2008 Опубликовано 7 июня, 2008 · Жалоба Вероятно интурист хочет знать как работать с памятью после того как инициализация уже выполнена, т.е. как записать и считать, по какому адресу и т.д. ... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 10 сентября, 2008 Опубликовано 10 сентября, 2008 · Жалоба Короче говоря вот работающий финальный код инициализации EMC для LPC2378 EMC_CTRL = 0x00000001; PCONP |= 0x00000800; /* Turn On EMC PCLK */ ..... Грабли :(, если PCONP EMC дейсвительно не активизирован то EMC_CTRL = 0x00000001, естественно не отработает и останется состояние по POR - с отзеркаленным CS0. Очень прикольно :( Правда, по POR EMC активирован, но вообще: PCONP |= 0x00000800; /* Turn On EMC PCLK */ EMC_CTRL = 0x00000001; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться