Подскажите плиз, в чем может быть проблемма? Не получается запустить SPI-1
AT91C_BASE_PIOA->PIO_PDR = SPI1_MISO | SPI1_MOSI | SPI1_SCK; AT91C_BASE_PIOA->PIO_ASR = SPI1_MISO | SPI1_MOSI | SPI1_SCK;
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI1;
/**** Fixed mode ****/ AT91C_BASE_SPI1->SPI_CR = AT91C_SPI_SWRST | AT91C_SPI_SPIEN; //SPI Enable, Sowtware reset AT91C_BASE_SPI1->SPI_CR = AT91C_SPI_SPIEN; //SPI Enable
*AT91C_SPI1_MR = AT91C_SPI_MODFDIS | AT91C_SPI_PS_FIXED | AT91C_SPI_MSTR | (0x0E<<16); AT91C_SPI1_CSR[0] = AT91C_SPI_NCPHA | AT91C_SPI_BITS_8 | (SPI1_CLK_DIV<<8);
потом делаю
AT91C_BASE_SPI1->SPI_TDR = data; while(!(AT91C_BASE_SPI1->SPI_SR & AT91C_SPI_RDRF)); return (AT91C_BASE_SPI1->SPI_RDR);
а ножки не дергаются, если же отключить AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI1; то виснет как и должно на while(!(AT91C_BASE_SPI1->SPI_SR & AT91C_SPI_RDRF));
если все тоже самое, но для SPI-0, то все работает
Сообщение отредактировал nvn - Jun 30 2008, 11:29
|