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

 
 
> замена AT45DB161B-RI на AT45DB161D-SU, проблема с отсутствием ноги RDY/~BUSY
plombir
сообщение Nov 17 2006, 12:33
Сообщение #1


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

Группа: Участник
Сообщений: 99
Регистрация: 14-12-05
Пользователь №: 12 191



Доброго дня, Господа!

Так как м/с flash AT45DB161B-RI (28 ног) снята с производства, решено заменить её на 8-и ножечную. Так, вот, проблема возникла при написании кода определения занятости м/с. Если раньше сигнал проверялся на ноге RDY/~BUSY и проблем не было, то здесь она отсутствует и приходится проверять через "Регистр Статуса" 7-ой бит. Что то не получается... Перепробовал по разному и по всякому. Начинает работать если ставится задержка из цикла NOP-ов вместо ожидания.

Если кто сталкивался с программным опросом м/с flash AT45 через регистр, подскажите пожалуйста последовательность действий при ожидании занятости.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ykidia
сообщение Mar 28 2007, 14:38
Сообщение #2


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

Группа: Свой
Сообщений: 80
Регистрация: 3-08-06
Пользователь №: 19 287



Да, фиктивную передачу делаю, иначе просто бит окончания приема/передачи никогда не установится (потому что передача не будет запущена, клоки не пойдут и т.д. smile.gif ) и проблема в работе SPI тут же обнаружится. Причем какие данные загружаю при фиктивной передаче, такие и получаю на входе в качестве значения регистра статуса. Либо 0x00.
Проблема в том, что у нас несколько вариантов плат. Так получилось, что где-то RDY/BUSY заведен на одну ногу LPC2214/2138, а где-то - на другую. А у меня бутлоадер раньше был под все платы, с определением конкретного микроконтроллера, размера его секторов, доступной памяти и т.д. - всех необходимых данных, чтобы корректно перепрошить контроллер данными из этой DataFlash, если нужно. Теперь же получается, что я должен 1) делать программное сравнение вместо внутреннего аппаратного и 2) делать разные варианты бутлоадера для разных плат. Бред. Неужели это тупик? Так и свихнуться можно...

У меня чтение регистра состояния было реализовано по-разному. Сначала так:
Код
#define DF_CMD_STATUS_READ_SPI03            0xD7
unsigned char bLastStatus;

// *
// * additionally deactivates Chip Select signal before actual waiting,
// * places last status register value in bLastStatus
// *
void DF_Wait_Busy( void )
{
    DF_ChipSelect_Stop();
    bLastStatus = 0;
    DF_ChipSelect_Start();
    SPI_WriteByte( DF_CMD_STATUS_READ_SPI03 );
    do {
        bLastStatus = SPI_ReadByte();
    } while( (bLastStatus & 0x80) == 0 );
    DF_ChipSelect_Stop();
}

Потом, кстати, были ситуации, когда вышеописанная проблема возникала, но устранялась дополнительным "передергиванием" линии _CS. Поэтому я сделал так:
Код
void DF_Wait_Busy( void )
{
    DF_ChipSelect_Stop();
    bLastStatus = 0;
    do {
        DF_ChipSelect_Start();
        SPI_WriteByte( DF_CMD_STATUS_READ_SPI03 );
        bLastStatus = SPI_ReadByte();
        DF_ChipSelect_Stop();
    } while( (bLastStatus & 0x80) == 0 );
}

Однако теперь никакие передергивания не спасают... Что-то не так делаю...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 29 2007, 13:46
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Ykidia @ Mar 28 2007, 13:38) *
Да, фиктивную передачу делаю, иначе просто бит окончания приема/передачи никогда не установится
А покажите настройку SPI и текст SPI_WriteByte(), SPI_ReadByte()


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- plombir   замена AT45DB161B-RI на AT45DB161D-SU   Nov 17 2006, 12:33
- - prottoss   Цитата(plombir @ Nov 17 2006, 19:33) Добр...   Nov 17 2006, 12:41
- - VDG   Цитата(plombir @ Nov 17 2006, 15:33) Если...   Nov 17 2006, 12:42
- - prottoss   Раз уж создана тема про ДатаФлэш, хотелось бы спро...   Nov 17 2006, 15:14
|- - zltigo   Цитата(prottoss @ Nov 17 2006, 17:14) Раз...   Nov 17 2006, 19:36
|- - rezident   Цитата(prottoss @ Nov 17 2006, 20:14) Раз...   Nov 17 2006, 20:23
|- - prottoss   Цитата(rezident @ Nov 18 2006, 03:23) На ...   Nov 18 2006, 16:17
- - vesago   Я из экономии ног и 28 ноговую db161 опрашивал чер...   Nov 17 2006, 19:29
- - Ykidia   ЦитатаНичего сложного там нет. Читаете даташит и с...   Mar 28 2007, 12:41
|- - Сергей Борщ   Цитата(Ykidia @ Mar 28 2007, 11:41) Так ч...   Mar 28 2007, 13:05
- - Ykidia   Спасибо за ответ. У меня примерно такой же код (со...   Mar 28 2007, 13:25
|- - Сергей Борщ   Цитата(Ykidia @ Mar 28 2007, 12:25) однак...   Mar 28 2007, 13:47
- - add   Работал с AT45DB041 в soic8 корпусе. Там нет ножк...   Mar 28 2007, 13:35
- - Itch   Насколько я понял из даташита, читать весь статусн...   Mar 28 2007, 21:42
- - Artem_Petrik   Цитатаdo { DF_ChipSelect_Start(); ...   Mar 28 2007, 22:30
- - Ykidia   Вот они: Код#define SPI_MODE 0x38 // MSTR CPOL...   Mar 30 2007, 10:17
|- - Сергей Борщ   Цитата(Ykidia @ Mar 30 2007, 09:17) Вот о...   Mar 30 2007, 12:53
- - sensor_ua   ЦитатаЕдинственное, у меня IAR строчки вида S0SPSR...   Mar 31 2007, 10:00
|- - Сергей Борщ   Цитата(sensor_ua @ Mar 31 2007, 09:00) Вс...   Mar 31 2007, 13:24
|- - zltigo   Цитата(Сергей Борщ @ Mar 31 2007, 12:24) ...   Mar 31 2007, 16:32
|- - Сергей Борщ   Цитата(zltigo @ Mar 31 2007, 15:32) Да не...   Mar 31 2007, 16:45
|- - zltigo   Цитата(Сергей Борщ @ Mar 31 2007, 15:45) ...   Mar 31 2007, 17:03
- - Ykidia   ЦитатаВы же данные не тем концом суете. Вообще-то ...   Mar 31 2007, 20:59
|- - Сергей Борщ   Цитата(Ykidia @ Mar 31 2007, 19:59) Ну а ...   Mar 31 2007, 22:57
|- - defunct   Цитата(Ykidia @ Mar 31 2007, 19:59) Вообщ...   Apr 1 2007, 04:56
|- - zltigo   Цитата(defunct @ Apr 1 2007, 03:56) Я бы ...   Apr 1 2007, 09:18
- - sensor_ua   ЦитатаЯ бы так ни в жизнь не написал А меня задолб...   Apr 1 2007, 08:27
- - Ykidia   ЦитатаЯ бы попробовал с таким максимально простым ...   Apr 1 2007, 23:48
|- - defunct   Цитата(Ykidia @ Apr 1 2007, 22:48) и оказ...   Apr 2 2007, 00:08
- - Ykidia   Доброе утро! ЦитатаV32 это естьtypedef volati...   Apr 2 2007, 00:18
- - Ykidia   Господа! Прошу простить меня за беспокойство...   Apr 3 2007, 16:37
- - Ykidia   Забыл сказать всем ответившим - большое спасибо за...   Apr 3 2007, 22:34


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

 


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


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