што у меня тут не так????
void Spi_Init( void ) { u32 portConfig; u8 i, Dummy; IO0CLR |= (P0_4 | P0_6 | P0_17 | P0_19); IO0DIR |= (P0_4 | P0_6 | P0_17 | P0_19 | P0_20 | P0_7); IO0SET |= (P0_20 | P0_7);
PINSEL0 = 0x00005100;// (P0.4 == SCK0, P0.6 == MOSI0); PINSEL1 = 0x00000288;// (P0.17 == SCK1, P0.19 == MOSI1); PINSEL2 = 0x0F614114;
S0SPCCR |= 0x08; S1SPCCR |= 0x08;
S0SPCR |= 0x0824; //(BitEnable = 1, CPHA = 0, CPOL = 0, MSTR = 1, LSBF/SPIE = 0, BITS = 8) S1SPCR |= 0x0824; //(BitEnable = 1, CPHA = 0, CPOL = 0, MSTR = 1, LSBF/SPIE = 0, BITS = 8)
// PCONP = 0x00201BBE; //SSP on SPI1 of SSPCR0 = 0x0007; // 8 bit SSPCPSR = 0x02; // SSPCR1 = 0x02; // enable, master
for ( i = 0; i < 8; i++ ) { Dummy = S0SPDR; /* clear the RxFIFO */ Dummy = S1SPDR; /* clear the RxFIFO */ Dummy = SSPDR; /* clear the RxFIFO */
}
return; }
int write_to_spi(void) { u32 i = 0; u32 Dummy; u8 *addr_of_data = ADDR_OF_NETLIST1;
while( ((IO0PIN & DONE1) == 0) && (i++ < (SPACE_SIZE_XC4VLX100 + 100)) ) //hardware {
S0SPDR = *addr_of_data++;
while(!(S0SPSR & 0x80));;
}
if(i >= (SPACE_SIZE_XC4VLX100 + 100) ) //+100 space for done { return(1); } else { return(0); } }
datasheet приклеплен
Сообщение отредактировал schaulin - Aug 29 2006, 16:33
--------------------
spi
|