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

 
 
> Работа с внешней памятью
SidAlex
сообщение Feb 28 2011, 14:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 7-04-10
Пользователь №: 56 467



Привет всем ГУРУ программирования МК.

Возникла такая проблемка. Есть внешняя память FM25L256. Почитал pdf на эту микросхему, вроде бы все понятно. Решил поработать. Написал алгоритм инициализации микросхемы, функции чтения и записи. Но, при выполнении этих функций, они работают, но результата никакого. Т.е. вроде бы пишет, вроде бы читает, но в массиве одни нули. Подскажите где что не так делаю? Просто уже несколько дней с этим мучаюсь, а результата ноль. Микруха подцеплина через SPI, он настроен корректно, вроде. Вот и чешу в затылке. К тому же я человек в этом деле новый, много не знаю. Прошу, пожалуйста, помогите.

Заранее всем спасибо.
С уважением, Александр.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SidAlex
сообщение Mar 1 2011, 11:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 7-04-10
Пользователь №: 56 467



Ребята ничего не понимаю, вроде написано все как говорите, но ничего не происходит. Точнее запись вроде есть, а вот прочитать не могу. Где что не так?
Функции записи чтения прилагаю:

void WriteFM25L256(unsigned int adress, char *mass, int nbyte)
{
unsigned int a;

// OFF_HOLD_FRAM(); //продолжить передачу данных из FRAM
// OFF_WP_FRAM(); //отключить защиту записи
CS_FRAM(); //чип-селект для FRAM

while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера
U0TXBUF = WREN_FM25L; //разрешение записи в FM25L256
while(!(U0TCTL & TXEPT));
// __no_operation();
// __no_operation();
// __no_operation();
// __no_operation();
OFF_CS_FRAM(); //сброс чипселекта FRAM
CS_FRAM(); //чип-селект для FRAM
while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера
U0TXBUF = WRITE_FM25L; //разрешение записи в FM25L256
while(!(U0TCTL & TXEPT));
while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера
U0TXBUF = adress >> 8; //запись старшего байта адреса
while(!(U0TCTL & TXEPT));
while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера
U0TXBUF = adress; //запись младшего байта адреса
while(!(U0TCTL & TXEPT));
for(a = 0; a < nbyte; a++)
{
// while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера
// U0TXBUF = mass[a] >> 8; //передать старший байт элемента массива
while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера
U0TXBUF = mass[a]; //передать младший байт элемента массива
while(!(U0TCTL & TXEPT));
};
// while(!(U0TCTL & TXEPT)); //пусты ли регистры TX
// WP_FRAM(); //включить защиту записи
OFF_CS_FRAM(); //сброс чипселекта FRAM
}

void ReadFM25L256(unsigned int adress, char *mass, int nbyte)
{
unsigned int a;
CS_FRAM(); //чип-селект для FRAM

while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера
U0TXBUF = READ_FM25L; //команда //разрешение чтения из FM25L256
while(!(U0TCTL & TXEPT));
while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера
U0TXBUF = adress >> 8; //запись старшего байта адреса
while(!(U0TCTL & TXEPT));
while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера
U0TXBUF = adress; //запись младшего байта адреса
while(!(U0TCTL & TXEPT));
for(a = 0; a < nbyte; a++)
{
while (!(IFG1 & UTXIFG0)); //ожидание готовности TX-буфера
U0TXBUF = 0x40; //тактирование FRAM
while(!(U0TCTL & TXEPT));
while (!(IFG1 & URXIFG0)); //ожидание готовности RХ-буфера
mass[a] = U0RXBUF; //считывание из RX-буфера в массив страшего байта
while(!(U0TCTL & TXEPT));
}
//while(!(U0TCTL & TXEPT)); //пусты ли регистры TX
OFF_CS_FRAM(); //сброс чипселекта FRAM
}/* конец определения ------------------------------------------------------------------*/
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SidAlex   Работа с внешней памятью   Feb 28 2011, 14:38
- - Axel   Первое, что приходит в голову: проверьте настройку...   Feb 28 2011, 16:25
- - SidAlex   У меня тут вот какой вопрос родился. Какие действи...   Mar 1 2011, 10:17
|- - Axel   Цитата(SidAlex @ Mar 1 2011, 14:17) ...4....   Mar 1 2011, 10:36
|- - rx3apf   Цитата(SidAlex @ Mar 1 2011, 13:17) У мен...   Mar 1 2011, 10:45
|- - Axel   [quote name='rx3apf' date='Mar 1 2011,...   Mar 1 2011, 10:55
|- - rx3apf   Цитата(Axel @ Mar 1 2011, 13:55) Таймаут ...   Mar 1 2011, 11:18
|- - Axel   Цитата(rx3apf @ Mar 1 2011, 15:18) Для ра...   Mar 1 2011, 11:29
- - SidAlex   Извините пожалуйста, а что значит "...обязате...   Mar 1 2011, 10:44
- - SidAlex   А тогда подскажите пожалуйста, нужен ли между этим...   Mar 1 2011, 10:48
- - SidAlex   И еще тогда вопрос, а как читать? Порядок действий...   Mar 1 2011, 11:05
|- - Axel   Цитата(SidAlex @ Mar 1 2011, 15:05) И еще...   Mar 1 2011, 11:09
- - SidAlex   т.е. 1. Chip Select 2. Передача команды на разреше...   Mar 1 2011, 11:13
|- - Axel   Цитата(SidAlex @ Mar 1 2011, 15:13) Прави...   Mar 1 2011, 11:15
- - Axel   К сожалению сейчас некогда рассматривать Ваш код. ...   Mar 1 2011, 12:14
- - SidAlex   Вот переделал, вставил, чтобы читать было удобнее ...   Mar 1 2011, 13:01
- - Axel   Если с пинами (W и HOLD) все в порядке, то замечан...   Mar 1 2011, 13:48
- - SidAlex   Еще раз прошу прощения, но что значит WP и HOLD в ...   Mar 1 2011, 14:03
|- - Axel   Цитата(SidAlex @ Mar 1 2011, 18:03) Еще р...   Mar 1 2011, 14:16
- - SidAlex   В общем не работает. Слать в микруху я данные шлю ...   Mar 2 2011, 07:10
|- - defunct   Цитата(SidAlex @ Mar 2 2011, 09:10) что W...   Mar 7 2011, 13:12
- - Axel   Проверить трудно, поскольку Вы не указали тип конт...   Mar 2 2011, 09:50
- - SidAlex   микроконтроллер MSP430F1611IPM   Mar 2 2011, 10:18
- - Axel   Цитата(SidAlex @ Mar 2 2011, 14:18) микро...   Mar 2 2011, 11:05


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

 


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


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