|
External SRAM + ATmega***, Использование External SRAM |
|
|
|
Feb 18 2010, 15:32
|
Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 19 2010, 15:08
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(pitter_3 @ Feb 19 2010, 07:36)  НА ЧТО ЕЩЁ ОБРАТИТЬ ВНИМАНИЕ????
Если используется WinAVR, обратить внимание на makefile и разрешить работу внешней память в какой-то ранней секции, например, init1.
--------------------
ASB
|
|
|
|
|
Feb 20 2010, 05:29
|
Группа: Участник
Сообщений: 10
Регистрация: 18-02-10
Пользователь №: 55 554

|
А кто-нибудь подскажет по поводу wait-state?
В целом я вообще могу перефразировать вопрос: Кто-нибудь работал с внешним SRAM + Atmega?
|
|
|
|
|
Feb 20 2010, 19:41
|

Чайник, 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.
|
|
|
|
|
Feb 20 2010, 23:12
|

Гуру
     
Группа: Свой
Сообщений: 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
--------------------
|
|
|
|
|
Feb 21 2010, 14:47
|
Группа: Участник
Сообщений: 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?
|
|
|
|
|
Feb 21 2010, 17:15
|

Чайник, 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.
|
|
|
|
|
Feb 23 2010, 02:26
|
Участник
  
Группа: Свой
Сообщений: 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".
|
|
|
|
|
Feb 24 2010, 04:17
|
Местный
  
Группа: Свой
Сообщений: 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кБайта.
|
|
|
|
|
Dec 27 2012, 10:04
|
Группа: Участник
Сообщений: 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 как то непонятно, куда попало. Вы используете весь обьем памяти? (не пинайте. только начал разбираться с внешней памятью, и вообще с памятью...)
|
|
|
|
|
Jan 22 2013, 04:51
|

Участник

Группа: Участник
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|