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

 
 
> AT91SAM9261 и SPI DataFlash
Morfko
сообщение Jul 1 2009, 05:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 9-10-08
Пользователь №: 40 814



Кто-нибудь может выложить пример инициализации SPI и проверку статуса для AT45?

Делал связь с AT45DB161 на SAM7X256 и никаких проблем не было, а здесь не получается почему-то. Может подводные камни какие-то существуют...

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Jul 1 2009, 13:05
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Код
unsigned char At45Status(void)
{
unsigned char a;
Flash_Send(0xD7,0);
a=Flash_Send(0,LAST);
if ((a&1)==0) return(a&0x80);
At45error=1;//error status byte
return(1);
}


Код
void SPIConfig(void)
{


AT91C_BASE_SPI0->SPI_CR=0x82;//disable and reset
//AT91C_BASE_SPI1->SPI_CR=0x82;//disable and reset

AT91C_BASE_SPI0->SPI_MR=0x0a0f0013;//master
//AT91C_BASE_SPI1->SPI_MR=0x0a0f0013;//master

//SerialFlash 25 Mhz 8 bit
AT91C_BASE_SPI0->SPI_CSR[0]=0x00220F0A;

//SSM2602 14 MHz 16 bit
AT91C_BASE_SPI0->SPI_CSR[1]=0x00020782;

//ADC 7877 14 Mhz 16 bit
AT91C_BASE_SPI0->SPI_CSR[2]=0x00020782;;

AT91C_BASE_SPI0->SPI_CR=0x1000001;//enable SPI0
}
unsigned char Flash_Send(unsigned char u,unsigned int last)
{
//last=0x1000000
AT91C_BASE_SPI0->SPI_TDR=((unsigned int)u)|0x000E0000|last;
while ((AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_TXEMPTY) == 0);
return(AT91C_BASE_SPI0->SPI_RDR&0xFF);
}


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post



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

 


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


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