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

 
 
 
Reply to this topicStart new topic
> LPS 2478 errors, Проблема с контроллером внешнейй памяти EMC
argentum
сообщение Aug 25 2009, 06:01
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



Добрый день!
Пытаюсь завести внешнюю 16-ти разрядную SRAM память (CY7C10410V33-10ZX1) на LPS2478 с ревизией "C" при помощи контроллера внешней памяти (EMC).
Контроллер категорически выдаёт неверные сигналы WE, BLE,BLH. Естественно ничего не пишется и не читается.
Скажите, кто-нибудь работал с EMC на этом контроллере? Это мой косяк или его?

Ну и вообще, может быть, кто-то ещё хочет поделиться наблюдениями за странным поведением этого девайса?
Приглашаю к обсуждению, так сказать.
С уважением, Ag
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Aug 25 2009, 07:03
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



У вас что-то. Если бы было в чипе, то давно бы всплыло в Errata.
SDRAM работает без нареканий в 16 и 32 битном режимах.
Выкладывайте код инициализации, озвучивайте, что вы видите в сигналах неверного.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 07:16
Сообщение #3


Гуру
******

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



Цитата(argentum @ Aug 25 2009, 08:01) *
Скажите, кто-нибудь работал с EMC на этом контроллере?

Нет, Вы первый человек в мире, который решился на этот поступок. Хотя,.... если поищите по этому форуму найдете и многочисленных
предшественников, и примеры инициализации, например http://electronix.ru/forum/index.php?showt...&pid=391050
Цитата
Приглашаю к обсуждению, так сказать.

Обсуждать собственно нечего - берете свежий User Manual с сайта и внимательно инициализируете контроллер.
P.S.
Не худо было-бы для начала правильно называать микроконтроллер - он LPC, а не LPS


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
argentum
сообщение Aug 25 2009, 08:58
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



2 Andy

Буду очень благодарен, если поможете

Вот код инициализации:
CODE

void EMC_init (void)
{

EMC_CTRL |= 1;
PCONP |= (1 << 11);

// Инициализация ног


PINSEL6 = 0x55555555;
PINSEL7 = 0x55555555;
PINSEL8 = 0x55555555;
PINSEL9 = 0x55555555;

//Ноги инициализированы


EMC_CONFIG = 0; // Litle indian

EMC_STA_CFG0 |=1; // 16ти разрядная память

EMC_STA_CFG0 |= (1<<6); // Выбор девайса низким уровнем

EMC_STA_CFG0 |= (1 << 7); // Управление сигналами BLS0 и BLS1 для 16ти разрядной памяти

EMC_STA_CFG0 |= (1 << 8); // Разрешение задержек

EMC_STA_CFG0 &= ~(1 << 20); // Сбросить защиту от записи

// Выставить макс. задержки
EMC_STA_WAITWEN0 = (0x0F && 0x0f);
EMC_STA_WAITOEN0 = (0x0F && 0x0f);
EMC_STA_WAITRD0 = (0x0F && 0x0f);
EMC_STA_WAITPAGE0 = (0x1F && 0x1f);
EMC_STA_WAITWR0 = (0x1F && 0x1f);
EMC_STA_WAITTURN0 = (0x0F && 0x0f);
EMC_STA_EXT_WAIT = (0x1FF && 0x01ff);
}


А вот нехитрые опыты с записью и чтением:

CODE
while
{
ex_mem = (DWORD *) 0x80000000;
*(ex_mem) = 0xAA;
can_msg_out[0].data[0] = (char)(*ex_mem) ;
CAN1_SendStdMessage( &can_msg_out[0] );
}

Результаты считывания выдаются в проверенный CAN.

Считывается из этого адреса всегда 0xFF.
Байт статуса EMC_STAT всегда 0x05;

Сигналы:
0E - импульсы с частотой 125кГц и скважностью примерно 10%
WE - 3,3В постоянно
BLS0 и BLS1 - 3,3В постоянно
СE - постоянно 0В

Косяков получается что-то очень много:
WE должен менять уровент в зависимости от того, запись производится или чтение
BLS0 и BLS1 должны быть внизу хоть иногда.

На всякий случай прикладываю док на SRAM/
Прикрепленные файлы
Прикрепленный файл  CY7C1041DV33.pdf ( 403.45 килобайт ) Кол-во скачиваний: 31
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 09:15
Сообщение #5


Гуру
******

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



Цитата(argentum @ Aug 25 2009, 10:58) *
// Выставить макс. задержки
EMC_STA_WAITWEN0 = (0x0F && 0x0f);
EMC_STA_WAITOEN0 = (0x0F && 0x0f);
EMC_STA_WAITRD0 = (0x0F && 0x0f);
EMC_STA_WAITPAGE0 = (0x1F && 0x1f);
EMC_STA_WAITWR0 = (0x1F && 0x1f);
EMC_STA_WAITTURN0 = (0x0F && 0x0f);
EMC_STA_EXT_WAIT = (0x1FF && 0x01ff);

Выше - ниже не смотрел, но если и остальное написано столь-же "тщательно", то надо начинать с букварей по 'C' sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
argentum
сообщение Aug 25 2009, 10:07
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



Цитата(zltigo @ Aug 25 2009, 13:15) *
...надо начинать с букварей по 'C' sad.gif

Если Вы имеете в виду выражения типа "...= (0x0F && 0x0f);", то слева стоит маска, а справа присваиваемое значение.
Коряво, конечно, но я на скорую руку сделал так. Буквари по "С" читаю и свои недостатки в этом деле знаю.
По сущству можете что-нибудь ответить?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 10:11
Сообщение #7


Гуру
******

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



Цитата(argentum @ Aug 25 2009, 12:07) *
"...= (0x0F && 0x0f);", то слева стоит маска, а справа присваиваемое значение.

Разумеется все совсем не так, бо & и && две большие разницы, посему и рекомендую начать с букварей.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
argentum
сообщение Aug 25 2009, 10:28
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



Спасибо)

Изенил на
CODE
EMC_STA_WAITWEN0 = 0x0f;
EMC_STA_WAITOEN0 = 0x0f;
EMC_STA_WAITRD0 = 0x0f;
EMC_STA_WAITPAGE0 = 0x1f;
EMC_STA_WAITWR0 = 0x1f;
EMC_STA_WAITTURN0 = 0x0f;
EMC_STA_EXT_WAIT = 0x01ff;


Ошибка исправлена, но улучшений не настало
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 10:31
Сообщение #9


Гуру
******

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



Цитата(argentum @ Aug 25 2009, 12:28) *
Ошибка исправлена, но улучшений не настало

Полагаю, что там "ошибок" еще достаточно, посему просто внимательно пишите и не пишите лишего что попало и куда попало..


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
argentum
сообщение Aug 25 2009, 12:32
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



В предложенной Вами, zltiqo , ссылке у Vitaliy_ARM тоже была проблема c SRAM,но в 32битном режиме

Сообщение отредактировал argentum - Aug 25 2009, 12:35
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2009, 13:40
Сообщение #11


Гуру
******

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



Цитата(argentum @ Aug 25 2009, 14:32) *
тоже была проблема c SRAM,но в 32битном режиме

Жаль, что Вы ничего не увидели кроме слова "проблема" и соответственно не поняли sad.gif. Ваша ревизия "C" работает без проблем. "A" была официально не работоспособной.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 25 2009, 14:18
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(argentum @ Aug 25 2009, 09:01) *
Ну и вообще, может быть, кто-то ещё хочет поделиться наблюдениями за странным поведением этого девайса?
Приглашаю к обсуждению, так сказать.

Чего обсуждать? Драть надо! biggrin.gif
Скачайте ИАР, там в примерах есть драйвер инициализации SDRAM.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
argentum
сообщение Aug 27 2009, 07:37
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 26-04-09
Из: Москва
Пользователь №: 48 283



Спасибо Вам за отрезвляющие комментарии))






Тема закрыта. Ошибка найдена.

Проблема была в следующем:
Первоначально из-за каких-то косяков память не работала. Я сунулся смотреть CS - он уверенно держался на единице, хотя для выбора чипа нужен низкий. Я по глупости ввёл строку

EMC_STA_CFG0 |= (1<<6); // То есть назначил выбор чипа высоким уровнем, чего естественно делать не следовало!!!!!

Дело в том что на CS контроллером внешней памяти низкий уровень только в процессе операций записи/чтения, а не по факту инициализации контроллера. Понимаю, что глупо, но для меня это было новостью.
Спасибо zltigo и остальным, кто потратил здесь своё время)))

Сообщение отредактировал argentum - Aug 27 2009, 07:36
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Aug 27 2009, 18:06
Сообщение #14


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(argentum @ Aug 25 2009, 01:01) *
Пытаюсь завести внешнюю 16-ти разрядную SRAM память (CY7C10410V33-10ZX1) на LPS2478 с ревизией "C" при помощи контроллера внешней памяти (EMC).
Контроллер категорически выдаёт неверные сигналы WE, BLE,BLH. Естественно ничего не пишется и не читается.

Работал при этом как нистранно конкретно с этой памятью. Особых трудностей с конфигурацией регистров не припоминаю. Проверяйте все регистры пока не найдете косяк у себя.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:47
Рейтинг@Mail.ru


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