我是对照数据手册写的;可是我用示波器测SPCK和MOSI脚都无输出?? 哪位好心的给看看??
int main(void) { *AT91C_PMC_SCER = 0x00000001; //处理器时钟使能。 *AT91C_PMC_PCER = (1<<AT91C_ID_SPI); //SPI时钟使能。 *AT91C_PIOA_ASR= ((unsigned int) AT91C_PA11_NPCS0 ) | ((unsigned int) AT91C_PA12_MISO ) | ((unsigned int) AT91C_PA13_MOSI ) | ((unsigned int) AT91C_PA14_SPCK ); //相应管脚设置为设备A * AT91C_PIOA_PDR= ((unsigned int) AT91C_PA11_NPCS0 ) | ((unsigned int) AT91C_PA12_MISO ) | ((unsigned int) AT91C_PA13_MOSI ) | ((unsigned int) AT91C_PA14_SPCK ); //相应管脚设置为设备模式
*AT91C_SPI_CR = AT91C_SPI_SWRST; //复位SPI. *AT91C_SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS | 0xE0000 |(0<<3); //模式寄存器设置:主机模式|固定外设|错误检测模式禁用|片选0|时钟为MCK *AT91C_SPI_IDR = 0; //中断禁止。 *AT91C_SPI_CR = AT91C_SPI_SPIEN; //使能SPI. while (1) { *AT91C_SPI_TDR = 0x0000a0f0; while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TDRE)){;} } } |