|
|
  |
Кто работал с FRAM памятью по SPI интерфейсу, Поделитесь исходниками для IAR |
|
|
|
Dec 14 2005, 06:59
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
Цитата(prottoss @ Dec 13 2005, 21:52)  Цитата(Igor26 @ Dec 13 2005, 16:46)  При использовании FRAM столкнулись с одной бякой. При программировании МК, иногда портилось содержимое FRAM. Лечилось подключением ее входа HOLD к входу RESET МК. Библиотеки, к сожалению, дать не могу. ПисАл другой программист и на АСМе. А я все программировал с помощью ПОНИПРОГа и обычного АТМЕЛОВСКОГО программатора. Правда на плату пришлось воткнуть джампер для переключения входа КС ФЛЭШа и РЕСЕТа АВРа. Флэшка шилась прям при работающем девайсе, (чтения флэш АВРом происходило только по нажатию кнопок :-)) Вот рисунок в MS Word и PCAD2001
SPI_FLASH_AVR_PROG.rar ( 43.95 килобайт )
Кол-во скачиваний: 288У нас во FRAM постоянно обновлялся архив событий - десятки раз в секунду. FRAM выбрали из-за её неограченного количества циклов записи и из-за того, что время записи равно циклу чтения. Применить ОЗУ с батарейной подпиткой не было возможности из-за особеностей схемотехники контроллера. PS Уважаемый prottoss, а как Вы "затолкали" PCADовскую схему в WORD?
Сообщение отредактировал Igor26 - Dec 14 2005, 07:01
|
|
|
|
|
Dec 14 2005, 10:20
|

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

|
Цитата(Igor26 @ Dec 14 2005, 13:59)  PS Уважаемый prottoss, а как Вы "затолкали" PCADовскую схему в WORD? Элементарно, Ватсон! :-) В ПИКАДЕ - Меню Edit->Select All, дальше щелчек правой кнопкой мыши, во всплывающей портянке Copy Далее запускаем МСВОРД. Те же манипуляции с мышью только в портянке Paste. ВСЕ. Единственно, в ПИКАДЕ предварительно (если хотите получить черно-белый рисунок), зайти в Options->Display->Colors и все переправить на черный цвет кроме Background, ну и, для удобства, гриды и выделение. Кстати таким макаром обычно я делаю печатные платы из того же ПИКАДА. В ВОРДЕ, мне, удобнее. Цитата(АДИКМ @ Dec 14 2005, 15:53)  А вы хоть укажите под какой процессор это вам надо. Хотя для любого проца с аппаратным SPI там 20 строк программы... Вообще эта часть форума относится к ATMEL AVR... :-)
--------------------
|
|
|
|
|
Dec 14 2005, 10:24
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
[quote name='prottoss' date='Dec 14 2005, 13:20' post='71382'] [quote name='Igor26' post='71308' date='Dec 14 2005, 13:59'] PS Уважаемый prottoss, а как Вы "затолкали" PCADовскую схему в WORD? [/quote]
Элементарно, Ватсон! :-)
В ПИКАДЕ - Меню Edit->Select All, дальше щелчек правой кнопкой мыши, во всплывающей портянке Copy
Далее запускаем МСВОРД. Те же манипуляции с мышью только в портянке Paste. ВСЕ.
Единственно, в ПИКАДЕ предварительно (если хотите получить черно-белый рисунок), зайти в Options->Display->Colors и все переправить на черный цвет кроме Background, ну и, для удобства, гриды и выделение. Кстати таким макаром обычно я делаю печатные платы из того же ПИКАДА. В ВОРДЕ, мне, удобнее.
Действительно просто! Спасибо!!!
|
|
|
|
|
Dec 17 2005, 10:48
|

Местный
  
Группа: Свой
Сообщений: 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; }
|
|
|
|
|
Dec 17 2005, 12:49
|

Гуру
     
Группа: Свой
Сообщений: 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(...) еще не известно что сидит...
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|