|
|
  |
LPC2378 и контроллер внешней SRAM памяти, Не работает OE выход |
|
|
|
Feb 15 2008, 10:58
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 12-09-07
Пользователь №: 30 498

|
Пробую запустить 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 ?
|
|
|
|
|
Feb 15 2008, 14:36
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 12-09-07
Пользователь №: 30 498

|
На чипе написано LPС2378FBD144 SH3719.1 11 ZS00742BY
Я так подозреваю, что это и есть ревизия B ? У Вас работает LPC2378 с внешней SRAM или FLASH ? Можете привести правильный код инициализации? Спасибо
|
|
|
|
|
Feb 15 2008, 14:53
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Работаю с 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 регистры по даташиту и должно завестись.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Feb 15 2008, 15:01
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 12-09-07
Пользователь №: 30 498

|
Похоже, что Вы стартовали с кода в 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 :-( А вот с этим чипом большой вопрос.
|
|
|
|
|
Feb 15 2008, 19:15
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (MiniMax @ Feb 15 2008, 17:36)  Я так подозреваю, что это и есть ревизия B ? Как-бы да, но для полной уверенности у него еще идентификатор должен считываться: 0x1700FD25а не 0x0703FF25 или 0x0703F925 QUOTE У Вас работает LPC2378 с внешней SRAM или FLASH ? Работаю только с LPC2468 там 8bit SRAM работает. Инициализацию делал тупо по datasheet и никаой оригинальности нет: CODE 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. QUOTE (Vitaliy_ARM @ Feb 15 2008, 17:53)  Работаю с LPC2468. Инициализация вот: CODE PINSEL9 = 0x00010000; } Работаете??? А как это без CS и прочего удалось-то!!!!
Сообщение отредактировал zltigo - Jul 25 2010, 07:33
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 15 2008, 21:44
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 12-09-07
Пользователь №: 30 498

|
Проблема решена Я использовал 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 банка.
|
|
|
|
|
Feb 16 2008, 08:00
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(zltigo @ Feb 15 2008, 22:15)  Работаете??? А как это без CS и прочего удалось-то!!!! Просто у меня не память висит, а CPLD. Я его не использую совсем. У меня плисина генерирует внешнее прерывание, когда она уже подготовила данные. Пардон, этот кусок кода был взят из тестовой программы для проверки работоспособности CPLD.
Сообщение отредактировал Vitaliy_ARM - Feb 16 2008, 08:35
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
May 26 2008, 09:16
|
Группа: Новичок
Сообщений: 2
Регистрация: 22-05-08
Пользователь №: 37 734

|
@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
|
|
|
|
|
May 26 2008, 10:58
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 12-09-07
Пользователь №: 30 498

|
Цитата(Filip Filipov @ May 26 2008, 13:16)  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
|
|
|
|
|
Jun 4 2008, 09:58
|
Группа: Новичок
Сообщений: 2
Регистрация: 22-05-08
Пользователь №: 37 734

|
Цитата(zltigo @ May 27 2008, 00:09)  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?
|
|
|
|
|
Sep 10 2008, 15:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MiniMax @ Feb 15 2008, 23:44)  Короче говоря вот работающий финальный код инициализации 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;
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|