void SPI_init(void)<br />{<br />//PMC_PCER=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />PMC_PCER=0x20;<br />//PIO外设功能时钟始能<br /><br />PIO_PDR=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />//PIO使能引脚的外设功能<br /><br />PIO_ASR=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />//外设A分配给SPI外设A功能<br /><br /><br /><br />SPI_CR=AT91C_SPI_SPIEN ;<br />//允许SPI口<br />SPI_MR=(AT91C_SPI_MSTR|AT91C_SPI_PS_FIXED|AT91C_SPI_MODFDIS|AT91C_SPI_DLYBCS);<br />//主机模式,不分频,固定片选0,禁止错误检测<br />SPI_CSR=(AT91C_SPI_NCPHA|AT91C_SPI_CSAAT|AT91C_SPI_BITS_8|(12<<8)|AT91C_SPI_DLYBS|AT91C_SPI_DLYBCT);<br />//8位数据,传输完成后片选保持,48M/12分频,传输前延时255,连续传输延时255 AT91C_SPI_SCBR<br /><br /><br /><br />}<br /><br />void SPI_send_byte(unsigned int data) //SPI发送一个字节的数据<br />{<br /> SPI_TDR=data;<br /> while((SPI_SR&AT91C_SPI_TDRE)==0) {;} //等待数据发送完成 AT91C_SPI_TXEMPTY<br /><br />}
|