Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подключение SRAM 1MБx8бит к MSP430F169
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Ingenegr
Применено: SRAM типа CY62158EV30 (CYPRESS) с организацией памяти 8-Mbit (1024K x 8). Эта микросхема имеет 8-битную шину данных и 20-битную шину адреса. В качестве регистра-защелки использована микросхема 74ABT16373 (FAIRCHILD) - 16 битный регистр.

Нажмите для просмотра прикрепленного файла

Принцип работы: в первом такте происходит запись младшего и старшего байтов адреса в регистр 74ABT16373 стробирующим импульсом с порта P6.5 на
входы регистра LE1, LE2. Во втором такте при записи данных в память SRAM на порт P4 микроконтроллера выставляется байт данных, на порт P5 выставляются старшие биты адреса (16, 17, 18, 19). Сигнал низкого уровня на порте P6.7 выводит из регистра на шину адреса памяти младший и старший адресные байты. Происходит запись сигнала импульсом низкого уровня с порта P6.0 на вход WE памяти.

В режиме чтения режим работы схожий, в этом случае P4 работает как порт входа.


CODE
#define PORTINIT P6DIR |= 0xA7

#define LE16_ON P6OUT |= BIT5
#define LE16_OFF P6OUT &= ~BIT5

#define OE16_ON P6OUT |= BIT7
#define OE16_OFF P6OUT &= ~BIT7

#define WE_ON P6OUT |= BIT0
#define WE_OFF P6OUT &= ~BIT0

#define OE_ON P6OUT |= BIT1
#define OE_OFF P6OUT &= ~BIT1

#define CE_ON P6OUT |= BIT2
#define CE_OFF P6OUT &= ~BIT2

#define LBUSout P4OUT
#define MBUSout P5OUT

#define LBUSin P4IN
#define MBUSin P5IN

#define LBUSdir P4DIR
#define MBUSdir P5DIR

#define INPUT 0x00
#define OUTPUT 0xff



void SRAM_Init(void);
void SRAM_Write(unsigned char byte, unsigned long Address);
unsigned char SRAM_Read(unsigned long Address);

void SRAM_Init(void)
{
PORTINIT;

LE16_OFF;
OE16_ON;

CE_ON;
WE_ON;
OE_ON;
}

void SRAM_Write(unsigned char byte, unsigned long Address)
{
LBUSdir = OUTPUT;
MBUSdir = OUTPUT;

LBUSout = Address & 0x00FF;
MBUSout = (Address & 0xFF00)>>8;

LE16_ON;
LE16_OFF;

LBUSout = byte;
MBUSout = (Address & 0xFF0000)>>16;

OE16_OFF;
WE_OFF;
WE_ON;
OE16_ON;

LBUSdir = INPUT;
MBUSdir = INPUT;

}

unsigned char SRAM_Read(unsigned long Address)
{
LBUSdir = OUTPUT;
MBUSdir = OUTPUT;

LBUSout = Address & 0x00FF;
MBUSout = (Address & 0xFF00)>>8;

LE16_ON;
LE16_OFF;

LBUSdir = INPUT;
MBUSout = (Address & 0xFF0000)>>16;

OE16_OFF;
OE_OFF;
OE_ON;
OE16_ON;

MBUSdir = INPUT;

return LBUSin;
}
rezident
Ingenegr, поясните смысл размещения здесь этого вашего сообщения. Что спросить или сказать хотели-то?
baken
Цитата(rezident @ Aug 25 2009, 19:59) *
Ingenegr, поясните смысл размещения здесь этого вашего сообщения. Что спросить или сказать хотели-то?

Он же написал, делится опытом, и что плохого. Молодец, я тоже давно думал подключить внешнюю память к MSP430, все не решался. Спасибо.
ataradov
Цитата(rezident @ Aug 25 2009, 19:59) *
Ingenegr, поясните смысл размещения здесь этого вашего сообщения. Что спросить или сказать хотели-то?

Подзаголовок "Делюсь опытом", наверное этого и хотелось. Правда решение из классических.
Сергей Борщ
Цитата(Ingenegr @ Aug 25 2009, 16:24) *
Принцип работы: в первом такте происходит запись младшего и старшего байтов адреса в регистр 74ABT16373 стробирующим импульсом с порта P6.5 на входы регистра LE1, LE2. Во втором такте при записи данных в память SRAM на порт P4 микроконтроллера выставляется байт данных, на порт P5 выставляются старшие биты адреса (16, 17, 18, 19).
Какими соображениями вы руководствовались, выводя напрямую порты на старшие адреса? Для чтения, скажем, четырехбайтового значения вам придется 4 раза переписывать защелку адреса. Мне кажется более гармоничным напрямую подключить младшие адреса, а через регистр - старшие, и переписывать регистр придется только при переходе через 256-байтную границу, что ускорит работу.
rezident
Цитата(baken @ Aug 25 2009, 22:13) *
Молодец, я тоже давно думал подключить внешнюю память к MSP430, все не решался.
Недоумение вызывает подключение (пускай оно и классическое) параллельной SRAM к MCU, совершенно не предназначенного для такого интерфейса. Поэтому и возник некоторый вопрос: а по тому ли адресу (в соответствующем ли разделе) размещена эта тема?
AHTOXA
Цитата(rezident @ Aug 25 2009, 21:59) *
Ingenegr, поясните смысл размещения здесь этого вашего сообщения. Что спросить или сказать хотели-то?


Цитата(rezident @ Aug 25 2009, 23:09) *
Недоумение вызывает подключение (пускай оно и классическое) параллельной SRAM к MCU, совершенно не предназначенного для такого интерфейса. Поэтому и возник некоторый вопрос: а по тому ли адресу (в соответствующем ли разделе) размещена эта тема?


Это что, модераторство так меняет людей? sad.gif Неужели нельзя было просто написать "пардон, не разглядел подзаголовок"?
Dog Pawlowa
Цитата(rezident @ Aug 25 2009, 20:09) *
... а по тому ли адресу (в соответствующем ли разделе) размещена эта тема?

Ув. rezident, а подходящего раздела на форуме то и нет!
Я смотрел недавно известный фрагмент фильма про Гитлера, и ничего, кроме известного немецкого слова "ebleitung", в голову не приходит.
Вы там замолвите на счет раздела smile.gif
MALLOY2
Вот это регистр smile.gif, я думал такие микрухи вымерли smile.gif. Я бы поставил EPM3032 или EMP3064 и к SPI
rezident
Цитата(AHTOXA @ Aug 25 2009, 23:53) *
Неужели нельзя было просто написать "пардон, не разглядел подзаголовок"?
Я внимательно просмотрел и заголовок и все сообщение. Не приписывайте мне свои домыслы!
Цитата(Dog Pawlowa @ Aug 25 2009, 23:57) *
Ув. rezident, а подходящего раздела на форуме то и нет!
Есть. В помощь начинающим-> Интерфейсы (или там же Схемотехника). Там такая тема смотрелась бы более уместно.
Цитата(MALLOY2 @ Aug 26 2009, 00:03) *
Я бы поставил EPM3032 или EMP3064 и к SPI
Я бы при необходимости тоже на CPLD остановился. Но задачи такой нету. CPLD потребляет на порядок больше тока, чем сам MCU. Кстати, примененный регистр в неактивном состоянии потребляет примерно столько же, сколько и MSP430 в активном режиме на частоте 8МГц.
Кстати, навскидку при использовании CPLD и SPI c тактированием его частотой MCLK/2 время обращения к SRAM было бы как минимум вдвое меньше, чем при реализации параллельного интерфейса на MSP430 "ногодрыганием".
AHTOXA
Цитата(rezident @ Aug 26 2009, 00:23) *
Я внимательно просмотрел и заголовок и все сообщение. Не приписывайте мне свои домыслы!


Я специально отквотил вашу первоначальную реакцию и последующие "уточнения". Я уверен в своих "домыслах". Кстати, не я один.

Я поясню, зачем влез. У меня сложилось впечатление, что из-за вашей оплошности (вполне понятной, все мы люди), вы затем чересчур сурово отнеслись к топикстартеру и его идее. Между тем, и идея вполне себе пригодная (мало ли кому может это понадобиться), и раздел вполне соответствует. Вы уж, пожалуйста, удержитесь от подобного.
rezident
Цитата(AHTOXA @ Aug 26 2009, 00:33) *
Я специально отквотил вашу первоначальную реакцию и последующие "уточнения". Я уверен в своих "домыслах". Кстати, не я один.
Еще раз предлагаю Вам оставить свои домысли при себе. И говорить только за себя, а не за всех.
Цитата(AHTOXA @ Aug 26 2009, 00:33) *
Между тем, и идея вполне себе пригодная (мало ли кому может это понадобиться), и раздел вполне соответствует.
Вот потому, что я когда-то обдумывал подобную идею (реальной задачи, повторяюсь, не было), я и написал то, что написал.
Цитата(AHTOXA @ Aug 26 2009, 00:33) *
Вы уж, пожалуйста, удержитесь от подобного.
Извиняюсь, но с вашей настойчивостью Вы сами напрашиваетесь: не советуйте мне что делать и .... (продолжение все знают).
MrYuran
Цитата(AHTOXA @ Aug 25 2009, 22:33) *

Цитата(rezident @ Aug 26 2009, 12:06) *

Ну вы ещё подеритесь, горячие финские парни! (С)
twak.gif maniac.gif
Предлагаю не ссориться по пустякам.
beer.gif

Кстати, F169.. а может, там как-нибудь DMA можно прикрутить?
При обмене блоками (сегментами) может даже выигрыш будет.
Если немного с адресной частью покумекать...

И использовать внешнее озу под своп
AHTOXA
Цитата(rezident @ Aug 26 2009, 14:06) *
Извиняюсь, но с вашей настойчивостью Вы сами напрашиваетесь: не советуйте мне что делать и .... (продолжение все знают).


Настоящие фидошники никогда не признают, что были неправы?
Чтож, буду знать. Очень жаль.
Ingenegr
Цитата(Сергей Борщ @ Aug 25 2009, 20:53) *
Какими соображениями вы руководствовались, выводя напрямую порты на старшие адреса? Для чтения, скажем, четырехбайтового значения вам придется 4 раза переписывать защелку адреса. Мне кажется более гармоничным напрямую подключить младшие адреса, а через регистр - старшие, и переписывать регистр придется только при переходе через 256-байтную границу, что ускорит работу.


Спасибо. Очень правильное замечание.


Цитата(rezident @ Aug 25 2009, 21:09) *
Недоумение вызывает подключение (пускай оно и классическое) параллельной SRAM к MCU, совершенно не предназначенного для такого интерфейса. Поэтому и возник некоторый вопрос: а по тому ли адресу (в соответствующем ли разделе) размещена эта тема?


Была поставлена задача модернизировать систему, добавив оперативную память к MSP430F169, не меняя архитектуры. SPI и большинство портов заняты под другие нужды.
Rst7
Цитата
Кстати, F169.. а может, там как-нибудь DMA можно прикрутить?
При обмене блоками (сегментами) может даже выигрыш будет.
Если немного с адресной частью покумекать...


Че кумекать - SDRAM с burst-режимом wink.gif Я тут в соседнем разделе (если память не изменяет) одному уже почти все разжевал biggrin.gif
rezident
Цитата(Ingenegr @ Aug 26 2009, 15:46) *
Была поставлена задача модернизировать систему, добавив оперативную память к MSP430F169, не меняя архитектуры.
Вот это и нужно было написать в самом начале корневого сообщения. Сразу становится понятна мотивация решения.
Цитата(Ingenegr @ Aug 26 2009, 15:46) *
SPI и большинство портов заняты под другие нужды.
При необходимости расширения количества SPI я бы на вашем месте предложил выбрать pin-to-pin совместимый МК из серии MSP430F24x/26x. Количество последовательных портов сразу вдвое увеличивается. Кроме того, при такой замене увеличивается объем внутренней SRAM. Ну и как альтернативное решение поставить (несколько) Serial SRAM.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.