|
Работа с внешней памятью |
|
|
|
Feb 28 2011, 14:38
|
Участник

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

|
Привет всем ГУРУ программирования МК.
Возникла такая проблемка. Есть внешняя память FM25L256. Почитал pdf на эту микросхему, вроде бы все понятно. Решил поработать. Написал алгоритм инициализации микросхемы, функции чтения и записи. Но, при выполнении этих функций, они работают, но результата никакого. Т.е. вроде бы пишет, вроде бы читает, но в массиве одни нули. Подскажите где что не так делаю? Просто уже несколько дней с этим мучаюсь, а результата ноль. Микруха подцеплина через SPI, он настроен корректно, вроде. Вот и чешу в затылке. К тому же я человек в этом деле новый, много не знаю. Прошу, пожалуйста, помогите.
Заранее всем спасибо. С уважением, Александр.
|
|
|
|
|
 |
Ответов
|
Mar 1 2011, 13:48
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Если с пинами (W и HOLD) все в порядке, то замечание только одно: CODE void WriteFM25L256(unsigned int adress, char *mass, int nbyte) { unsigned int a;
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 // ------- необходим таймаут хотя-бы на один такт SPI ------------ 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]; //передать младший байт элемента массива while(!(U0TCTL & TXEPT)); }; OFF_CS_FRAM(); //сброс чипселекта FRAM }
|
|
|
|
Сообщений в этой теме
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 SidAlex Ребята ничего не понимаю, вроде написано все как г... Mar 1 2011, 11:44 Axel К сожалению сейчас некогда рассматривать Ваш код. ... Mar 1 2011, 12:14 SidAlex Вот переделал, вставил, чтобы читать было удобнее
... Mar 1 2011, 13:01 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|