Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM7E и внешняя SRAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AndyBig
День добрый!
Не могу понять в чем дело: есть связка AT91SAM7SE и внешняя SRAM 512кБ х 16 бит 100 МГц.
Линкеру указано размещать код в младшую половину внешней SRAM, данные в старшую половину, стеки и коды прерываний - во внутреннюю SRAM, отмаппированную на нулевой адрес.
Программа выполняется нормально, и чтение и запись в SRAM проходит... Пока не понадобилось прочесть из нее побайтно (ассемблерная команда LDRB). Тут и начались фокусы - читается абсолютная фигня, даже близко не похожая на оригинальные значения.
Среда - IAR 5.11, память подключена к SMC и сконфигурирована как 16-битная:
Wait States (NWS) = 0
Wait State Enable (WSEN) = 1
Data Float Time (TDF) = 0
Byte Access Type (BAT) = 1
Data Bus Width (DBW) = 1
ACSS = 0
RWSETUP = 0
RWHOLD = 0

Что я не так делаю?
zltigo
Цитата(AndyBig @ Oct 4 2008, 13:11) *
Что я не так делаю?

Физически подключено точно правильно? Глупо, но тот-же самый A0 или что еще ни с чем не перепутан "для удобства". А как себя ведет в чисто восьмибитовом режиме?
AndyBig
Проверял несколько раз: А0 контроллера (NBS0) подключен к NLB памяти, NWR1/NBS1 контроллера - к NUB памяти, A1-A18 контроллера - к A0-A17 памяти, NCS0 контроллера - к NCS памяти, NWR0/NWE - к NWE, NRD/CFOE - к NOE.
Для включения памяти в восьмибитный режим, как я понимаю, надо менять схематику?
zltigo
Цитата(AndyBig @ Oct 4 2008, 15:16) *
Для включения памяти в восьмибитный режим, как я понимаю, надо менять схематику?

Посмотрел. Да уж sad.gif с подключением от Atmel c использованием A0 в качестве nLB и сдвигающим адреса......
облом.
AndyBig
Для удобства разводки у меня раскиданы невпопад линии адресов и линии данных, но это ведь никак не должно отражаться на логике работы...
Пробовал менять Waystates и RWSETUP,RWHOLD. Эффект проявляется только при значительном изменении Waystates начинает читаться другая фигня, но так же и близко не похожая на то, что в действительности лежит по этому адресу памяти...

Хм... Вру, перепутывание линий данных как раз и может отразиться, в принципе именно так оно отразиться и может... Кажется... :-/
zltigo
Цитата(AndyBig @ Oct 4 2008, 16:39) *
Кажется... :-/

Без "кажется". При препутывании между байтами - облом.
AndyBig
Цитата
При препутывании между байтами

Так и получилось... Благо, что октеты остались в кучах - младший октет контроллера попал на старший октет памяти и наоборот... По идее, достаточно будет поменять местами UB и LB. Сейчас попробую.

Точно, все заработало как надо.
Просто до этого статику использовал только с 8-разрядными контроллерами, в которых просто не бывает UB/LB, вот по инерции и тут соединил "как разведется" smile.gif
Спасибо за помощь! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.