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

 
 
 
Reply to this topicStart new topic
> AT91RM9200 и SPI, SPI повисает когдаактивен NPCS0
romashko
сообщение Jul 23 2007, 09:04
Сообщение #1


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

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



Добре всем!

такая порблема: в ARM9200 при использовании SPI,программа повисает в цикле опроса регистра статуса, когда используется NPCS0.

Пробовал с ножкой NPCS0 работать как с PIO - результатов тоже не далоsad.gif

Как только использую NPCS1,2,3 - всё работает!

Помогите разобраться пожалста - нужен именно NPCS0 (хоть даже в варианте PIO)

Ниже фрагменты кода:

#include "ARM9200.h"
#define SPI_CSR0 *(volatile unsigned long int*) 0xFFFE0030
...

void PIO(void) //настройка PIO
{
PIOA_PDR=(1<<0)|(1<<1)|(1<<2); //MISO MOSI SCLK
PIOA_PER=~((1<<0)|(1<<1)|(1<<2);
PIOA_OER=(1<<3)|(1<<4)|(1<<5)|(1<<6); //NPCS software!!!
PIOA_ODR=~((1<<3)|(1<<4)|(1<<5)|(1<<6));
PIOA_SODR=(1<<3)|(1<<4)|(1<<5)|(1<<6);
PIOA_CODR=0;
PIOA_IFER=0x00000000;
PIOA_IFDR=0xFFFFFFFF;
PIOA_IER=0x00000000;
PIOA_IDR=0xFFFFFFFF;
PIOA_MDER=0x00000000;
PIOA_MDDR=0xFFFFFFFF;
PIOA_PPUER=0;
PIOA_PPUDR=~0;
PIOA_ASR=(1<<0)|(1<<1)|(1<<2); //MISO MOSI SCLK
PIOA_BSR=0x00000000;
PIOA_OWER=0x00000000;
PIOA_OWDR=0xFFFFFFFF;
}

void NPCS(unsigned long cs) //NPCS0
{
if(cs==1)
{
PIOA_SODR=(1<<3);
PIOA_CODR=0;
}
else
{
PIOA_CODR=(1<<3);
PIOA_SODR=0;
}
}

void SPI(void) //инициализация SPI
{
SPI_CR=(1<<7)|(1<<1); //disable spi,reset
SPI_MR=1|(1<<1)|(0<<2)|(1<<4); // master,variable,4device,modfis disable
SPI_CSR1=1|(5<<8); //100MHz/2/5=10MHz
SPI_IER=0;
SPI_IDR=0xFF;
SPI_CR=1; //enable spi
Delay(0x1000);
}

unsigned char SPI_TxRx(unsigned char cool.gif //Передача по SPI байта и тут же его приём
{
SPI_TDR=(1<<16)|b; //NPCS1
while(!(SPI_SR&2));
while(!(SPI_SR&1));
return SPI_RDR;
}

int main(void)
{
...
PMC_PCER=(1<<1)|(1<<2)|(1<<3)|(1<<13); //Enable SYS PIOA, PIOB, SPI Clock
PIO();
...
SPI();
...
SPI_TxRx(0xFF); //повисает на опросе SPI_SR
...
Loop:
goto Loop;
}
Go to the top of the page
 
+Quote Post

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

 


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


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