Память M25PE40 помогите разобратся

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

Добрый день. Нарисовалась проблемка начал использовать внешнюю память M25PE40 в принципе с инструкциями разобрался пишется читается но не коректно мож кто сней разбирался и чего подскажет :shock:
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Память M25PE40 помогите разобратся

Сообщение Satyr »

Ты вокруг да около не ходи, пиши сразу в чем проблема.
Реклама
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Re: Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

не могу точно сказать толи с адресацией проблема толи с чем другим но байты заисываются через один
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Re: Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

Вот код

void WP(unsigned long int adres) {
char add[3];
WREN(); // инструкция разрешения записи
add[0]=adres;
add[1]=adres>>8;
add[2]=adres>>16;
CS=0; // s вниз
spi(0x0A);
spi(add[2]);
spi(add[1]);
spi(add[0]);
for (i=0;i<b.m;i++) {
if (cc|=0)
{
spi(getchar());
cc--;
}

else
{
spi(0);
};
};
CS=1;// s вверх
}
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Память M25PE40 помогите разобратся

Сообщение Satyr »

с какой то похоже spi флешкой, вроде sst25fv32, пол дня тупил с такой проблемой - там сигнал CE не должен сниматься не только при передачи одного байта, а на всю операцию целиком, или все сбрасывается. такую тему проверь.
Реклама
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Re: Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

в смысле пока не запишу все сообщение а не страницу?
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Память M25PE40 помогите разобратся

Сообщение Satyr »

Denis-d20 писал(а):в смысле пока не запишу все сообщение а не страницу?
Смотря как пишешь - по байту или кусками.

у меня запись примерно так происходит

void Write_Cont(unsigned long Dst, unsigned char *buf, unsigned long no_bytes)
{
unsigned long bytes_to_write;
unsigned char *ptr;

bytes_to_write = (no_bytes & 0xFFFFFFFE) - 2;
ptr = buf + 2;

WREN();

Auto_Add_IncA(Dst, buf[0], buf[1]);

while(bytes_to_write)
{
Wait_Busy_AAI();
Auto_Add_IncB(ptr[0], ptr[1]);

ptr += 2;
bytes_to_write -= 2;
}

Wait_Busy_AAI();

WRDI();
}

void Auto_Add_IncA(unsigned long Dst, unsigned char byte1, unsigned char byte2)
{
CE_Low(); /* enable device */
Send_Byte(0xAD); /* send AAI command */
SendAddress(Dst);

Send_Byte(byte1); /* send 1st byte to be programmed */
Send_Byte(byte2); /* send 2nd byte to be programmed */
CE_High(); /* disable device */
}

void Auto_Add_IncB(unsigned char byte1, unsigned char byte2)
{
CE_Low(); /* enable device */
Send_Byte(0xAD); /* send AAI command */
Send_Byte(byte1); /* send 1st byte to be programmed */
Send_Byte(byte2); /* send 2nd byte to be programmed */
CE_High(); /* disable device */
}

void Wait_Busy_AAI()
{
while ((SST25VF32_Read_Status_Register() & 0x43) == 0x43); /* waste time until not busy */
}


unsigned char SST25VF32_Read_Status_Register()
{
unsigned char byte = 0;
CE_Low(); /* enable device */
Send_Byte(0x05); /* send RDSR command */
byte = Get_Byte(); /* receive byte */
CE_High(); /* disable device */
return byte;
}

inline void WREN()
{
CE_Low(); /* enable device */
Send_Byte(0x06); /* send WREN command */
CE_High(); /* disable device */
}


void WRDI()
{
CE_Low(); /* enable device */
Send_Byte(0x04); /* send WRDI command */
CE_High(); /* disable device */
}
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Re: Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

ну в sst25vf немного по другому запись идет на сколько я понял пишется или один бит или команда auto address increment а в моей пишется сразу страничка в 256 байт
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Re: Память M25PE40 помогите разобратся

Сообщение Denis-d20 »

спасибо разобрался принимал неправильно с spi проблема была
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»