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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> External SRAM + ATmega***, Использование External SRAM
pitter_3
сообщение Feb 18 2010, 15:32
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 18-02-10
Пользователь №: 55 554



Всем здрасте!!!

К ATmega128 надо подключить SRAM, раньше такого не делал, хочу избежать подводных камней, подскажите.


Использую ATmega128 на 16MHz
Буду использовать 64K-bit SRAM: 6264 (К537РУ17) в магазине сказали так, но на микрухе написано чё попало – белибирда.
Скорее всего: fast access time 85/100ns (max) возможно 70ns, но не уверен, т.к производителя не знаю.

(64K-bit хотя целиком столько мне не надо)
Использовать буду Normal Mode, т.е. 4096Internal SRAM, никаких заморочек с ATmega103 Compatibility mode мне не надо.



В силу того, что ATmega128 работает на 16MHz, а SRAM 85/100ns (70ns?) возникает вопрос, получится ли адекватная работа SRAM, даже если использовать wait-state.

Подскажите, какой wait-state использовать?


На какую защелку лучше обратить внимание? Какую серию смотреть?


НА ЧТО ЕЩЁ ОБРАТИТЬ ВНИМАНИЕ????

Заранее СПС.



Table 4. Wait States(1)

SRWn1 SRWn0 Wait States

0 0 No wait-states
0 1 Wait one cycle during read/write strobe
1 0 Wait two cycles during read/write strobe
1 1 Wait two cycles during read/write and wait one cycle before driving out new address
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Feb 19 2010, 15:08
Сообщение #2


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(pitter_3 @ Feb 19 2010, 07:36) *

НА ЧТО ЕЩЁ ОБРАТИТЬ ВНИМАНИЕ????


Если используется WinAVR, обратить внимание на makefile и разрешить работу внешней память в какой-то ранней секции, например, init1.


--------------------
ASB
Go to the top of the page
 
+Quote Post
pitter_3
сообщение Feb 20 2010, 05:29
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 18-02-10
Пользователь №: 55 554



А кто-нибудь подскажет по поводу wait-state?

В целом я вообще могу перефразировать вопрос:
Кто-нибудь работал с внешним SRAM + Atmega?
Go to the top of the page
 
+Quote Post
SysRq
сообщение Feb 20 2010, 19:41
Сообщение #4


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(pitter_3 @ Feb 20 2010, 08:29) *
Кто-нибудь работал с внешним SRAM + Atmega?
Что вас смущает? Микросхему памяти сейчас не назову (дома схем нет). Память используется под хранение определенных данных, а не как основная, инициализирую поэтому из main(). У нас на интрефейсе внешней памяти еще ПЛИС сидит - разнесены по адресам. Ессно, все адреса выше внутренней SRAM МК для удобства.

CODE
// External SRAM page configuration:
// 1100h - 7FFFh / 8000h - FFFFh (FPGA / External SRAM)
// Lower page wait state(s): None
// Upper page wait state(s): 1r/w
void XMEM_initialize(void)
{
XMCRA = _BV(SRL2);

MCUCR |= (_BV(SRE) | _BV(SRW10));
}

#define XMEM_write(address, value) (*((uint8_t * const) (address))) = ((uint8_t) (value))
#define XMEM_read(address) (*((uint8_t * const) (address)))

Работает, ATMega128, 16MHz.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 20 2010, 23:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Вот так делал я. См приложенные файлы. Правда там у меня 62256 но это не суть важно.
Регистр-защелку младших адресов ставить нужно с записью по высокому уровню. Серия может быть любая типа AC/ACT/HC/HCT.
В МК настроить работу внешней памяти с одним циклом ожидания. См. приложенные файлы.

Имейте ввиду, что из 8КБАЙТ памяти Вашей МК будет использоваться только старшие 4. Это связанно с тем, что младшие 4 КБ находятся в адресном пространстве внутренней SRAM МК. Вообще есть пути решения этой проблемы.

Рекомендую почитать перевод даташита на М128 на http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/2_1.htm
Прикрепленные файлы
Прикрепленный файл  xmem.rar ( 1.09 килобайт ) Кол-во скачиваний: 79
Прикрепленный файл  m128_sram62256.pdf ( 71.1 килобайт ) Кол-во скачиваний: 177
 


--------------------
Go to the top of the page
 
+Quote Post
pitter_3
сообщение Feb 21 2010, 14:47
Сообщение #6





Группа: Участник
Сообщений: 10
Регистрация: 18-02-10
Пользователь №: 55 554



Всем спасибо.
Цитата(prottoss @ Feb 21 2010, 02:12) *
Имейте ввиду, что из 8КБАЙТ памяти Вашей МК будет использоваться только старшие 4. Это связанно с тем, что младшие 4 КБ находятся в адресном пространстве внутренней SRAM МК. Вообще есть пути решения этой проблемы.


6264 - 64Kbyte - 8k word x 8bit. Но Вашу мысль я понял. Спасибо.


Кстати, если я использую только одну микруху SRAM, то ведь можно же не использовать разбиение на Lower page & Upper page?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 21 2010, 15:03
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(pitter_3 @ Feb 21 2010, 21:47) *
Кстати, если я использую только одну микруху SRAM, то ведь можно же не использовать разбиение на Lower page & Upper page?
Я не понял Вашего вопроса. Что такое Lower page & Upper page?


--------------------
Go to the top of the page
 
+Quote Post
SysRq
сообщение Feb 21 2010, 17:15
Сообщение #8


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(pitter_3 @ Feb 21 2010, 17:47) *
Кстати, если я использую только одну микруху SRAM, то ведь можно же не использовать разбиение на Lower page & Upper page?
Да.

--

Цитата(prottoss @ Feb 21 2010, 18:03) *
Что такое Lower page & Upper page?

m128_S0709.pdf, стр. 32:
Цитата
It is possible to configure different wait-states for different External Memory addresses. The
external memory address space can be divided in two sectors that have separate wait-state bits.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Feb 21 2010, 17:23
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(SysRq @ Feb 22 2010, 00:15) *
Ааа, да, точно. Забыл про это.


--------------------
Go to the top of the page
 
+Quote Post
ae_
сообщение Feb 23 2010, 02:26
Сообщение #10


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(pitter_3 @ Feb 21 2010, 22:47) *
Всем спасибо.


6264 - 64Kbyte - 8k word x 8bit. Но Вашу мысль я понял. Спасибо.


Кстати, если я использую только одну микруху SRAM, то ведь можно же не использовать разбиение на Lower page & Upper page?

Никуда не пропадут Ваши 4кбайт из 8кбайт внешней 6264 из-за маскирования внутренней RAM, достаточно выделить ещё один вывод РС5 под линию адреса А13, но никуда его не подключать. Это - единственный минус, недоступность использования одного вывода I/O для своих нужд. Взамен получаем непрерывное адресное пространство памяти:
0x0000 - 0x001F регистры R0-R31
0x0020 - 0x005F I/O
0x0060 - 0x00FF ext I/O
0x0100 - 0x10FF internal SRAM 4kbyte
0x1100 - 0x30FF external SRAM 8kbyte
Аналогично можно целиком использовать весь объём внешней памяти вплоть до 32кбайт (62256) не теряя при этом первые 4к из-за маскирования адресов. Подробнее - в datasheet, описание регистра XMCRB, "Using all Locations of External Memory Smaller than 64 KB".
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Feb 24 2010, 04:17
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



защелку лучше использовать из быстродействующих серий (ACT, AHC) или из "советский" серии 1533. Ставить именно защелку: 373/573 или ИР22. (Приходилось видеть платы от игровых автоматов, на которых умудрились поставить 374 микросхему). При использовании серии НС могут быть ошибки при записи и считывании из памяти. Причем довольно редкие и нерегулярные. (Проверено на своем печальном опыте). Скорее всего, это было из-за бОльшего времени удержания в серии HC, так как ошибки не зависели от тактовой и циклов ожидания (мега держит данные 5нс)
Я в дополнение еще обычно активирую функцию bus keeper.
Цитата
достаточно выделить ещё один вывод РС5 под линию адреса А13, но никуда его не подключать. Это - единственный минус, недоступность использования одного вывода I/O для своих нужд.

В меге128 этого минуса нет. Линии A13-А15 при помощи XMCRB просто не подключаются к порту изнутри (при XMM2=XMM0=1; XMM1=0), поэтому нет смысла выводить неподключенную А13. Для подтверждения моих слов посмотрите, как реализовано считывание при размере памяти 64кБайта.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 24 2010, 21:26
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(pitter_3 @ Feb 20 2010, 07:29) *
А кто-нибудь подскажет по поводу wait-state?

wait-state для 70ns памяти с кварцем на 11.0592 -- 0.
Для 14.7456Mhz и выше - ws=1.

55ns и более быстрая память - при любой тактовой на которой способна работать мега - ws=0.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Feb 26 2010, 20:47
Сообщение #13


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Посмотрел м\с памяти у нас: U62H256A. Надо будет с 0 wait-state попробовать rolleyes.gif
Go to the top of the page
 
+Quote Post
wellcom
сообщение Dec 27 2012, 10:04
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 23-01-12
Пользователь №: 69 816



Цитата(prottoss @ Feb 21 2010, 03:12) *
Вот так делал я. См приложенные файлы. Правда там у меня 62256 но это не суть важно.
Регистр-защелку младших адресов ставить нужно с записью по высокому уровню. Серия может быть любая типа AC/ACT/HC/HCT.
В МК настроить работу внешней памяти с одним циклом ожидания. См. приложенные файлы.

Имейте ввиду, что из 8КБАЙТ памяти Вашей МК будет использоваться только старшие 4. Это связанно с тем, что младшие 4 КБ находятся в адресном пространстве внутренней SRAM МК. Вообще есть пути решения этой проблемы.

Рекомендую почитать перевод даташита на М128 на http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/2_1.htm

Подскажите пожалуйста, почему у Вас адрес ADDR0-ADDR7 подключены к выводам А0-А7 чипа UT62256, а ADDR8-ADDR15 как то непонятно, куда попало. Вы используете весь обьем памяти? (не пинайте. только начал разбираться с внешней памятью, и вообще с памятью...)
Go to the top of the page
 
+Quote Post
lisstret
сообщение Jan 22 2013, 04:51
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 10-06-10
Из: Владивосток
Пользователь №: 57 835



Хороший пример в этом случае это модуль WIZ200 WEB. Там как раз ATMEGA128+HY62256 и WIZ5300) Схемы есть, есть программный код от производителя. Так что глазами пробежаться можно подглядеть.

http://www.efo.ru/doc/Wiznet/Wiznet.pl?2935

У меня больше другой вопрос. Как сделать так, чтоб во внешний СРАМ загружались данные программы. То есть, допустим есть проект, в котором память данных занимает 8 КБ. Соответственно 4 КБ во внутреннем ОЗУ и остальные 4 КБ получается помещаются только во внешний ОЗУ. Но перед запуском прошивки нужно же настроить интерфейс внешнего СРАМА, указав в каких-то регистрах 128МЕГИ, что мы используем внешний срам с такий wait-state и т.д. После этого должна начать запускаться основная программа которая и выгрузит из FLASH'a данные во внешний СРАМ. Так вот, тут над бутлоэдер писать или что-то наподобе него, чтоб он настроил доступ 128МЕГИ к внешнему СРАМУ? Надеюсь понятно сказал, а то я особо объяснять не умею)

Сообщение отредактировал lisstret - Jan 22 2013, 04:53
Go to the top of the page
 
+Quote Post

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

 


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


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