Добре всем!
такая порблема: в ARM9200 при использовании SPI,программа повисает в цикле опроса регистра статуса, когда используется NPCS0.
Пробовал с ножкой NPCS0 работать как с PIO - результатов тоже не дало

Как только использую 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

//Передача по 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;
}