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

 
 
> Кто работал с FRAM памятью по SPI интерфейсу, Поделитесь исходниками для IAR
Serega Doc
сообщение Dec 12 2005, 14:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



Нужна библиотека по работе с FM25CL64
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serega Doc
сообщение Dec 17 2005, 10:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



Подскажите как правильно инициализировать.
А то что то вроде как сделал как в DataSheet
Записываю 0xAA а читаю 0x00
Вот исходники процедур под AVR 64

void INIT_FRAM (void)
{
SETBIT(PORTB,WPM);
CLEARBIT(PORTB,CSM0);
SPI_W(CMD_WREN_FRAM);
SETBIT(PORTB,CSM0);
DELAY100(); // задержка 100 ns
CLEARBIT(PORTB,CSM0);
SPI_W(CMD_INIT_FRAM);
SPI_W(RG_STAT);
SETBIT(PORTB,CSM0);
CLEARBIT(PORTB,WPM);
}

void WRITE_FRAM (unsigned int ADR, unsigned char DATA)
{
char h_byte, l_byte;
l_byte=ADR;
h_byte=ADR>>8;
CLEARBIT(PORTB,CSM0);
SPI_W(CMD_WR_FRAM);
SPI_W(h_byte);
SPI_W(l_byte);
SPI_W(DATA);
SETBIT(PORTB,CSM0);

}

char READ_FRAM (unsigned int ADR)
{
char h_byte, l_byte, DATA;
l_byte=ADR;
h_byte=ADR>>8;
CLEARBIT(PORTB,CSM0);
SPI_W(CMD_RD_FRAM);
SPI_W(h_byte);
SPI_W(l_byte);
DATA=SPI_R();
SETBIT(PORTB,CSM0);
return DATA;
}
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 17 2005, 12:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Serega Doc @ Dec 17 2005, 17:48) *
Подскажите как правильно инициализировать.
А то что то вроде как сделал как в DataSheet
Записываю 0xAA а читаю 0x00


SPI_W(...) - это что за процедура? Если это просто запись в регистр данных SPI SPDR - то после записи должно пройти минимум 16 тактов CPU на максимальной скорости SP2X, равной половине частоты CPU, для передачи всех восьми бит данных. Можно просто проверять бит SPIF, как только он установится в 1, все, передача окончена . Во всех даташитах на AVR со встроенным SPI-портом дан простой исходник, которым рекомендую пользоваться:

C Code Example(1)

void SPI_MasterInit(void)

{

/* Set MOSI and SCK output, all others input */

DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);

/* Enable SPI, Master, set clock rate fck/16 */

SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);

}

void SPI_MasterTransmit(char cData)

{

/* Start transmission */

SPDR = cData;

/* Wait for transmission complete */

while(!(SPSR & (1<<SPIF)))

;

}

Код довольно компактный что на Си, что на Асме, а в туманном SPI_W(...) еще не известно что сидит...


--------------------
Go to the top of the page
 
+Quote Post



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

 


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


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