void spi_fifo_init()
{
// Initialize SPI FIFO registers
SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI
SpiaRegs.SPICCR.all=0x001F; //16-bit character, Loopback mode
SpiaRegs.SPICTL.all=0x0017; //Interrupt enabled, Master/Slave XMIT enabled
SpiaRegs.SPISTS.all=0x0000;
SpiaRegs.SPIBRR=0x0063; // Baud rate
// SpiaRegs.SPIFFTX.all=0xC022; // Enable FIFO's, set TX FIFO level to 4
SpiaRegs.SPIFFTX.all=0xC021; // Enable FIFO's, set TX FIFO level to 1
// SpiaRegs.SPIFFRX.all=0x0022; // Set RX FIFO level to 4
SpiaRegs.SPIFFRX.all=0x4021; // Set RX FIFO level to 1
SpiaRegs.SPIFFCT.all=0x00;
SpiaRegs.SPIPRI.all=0x0010;
SpiaRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI
SpiaRegs.SPIFFTX.bit.TXFIFO=1;
SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;
}
Void NVM_TX_HWI()
{
Uint16 i;
SpiaRegs.SPITXBUF = 0x06; // Set write enable latch (WREN)
SpiaRegs.SPITXBUF = 0x02; // Write memory data (WRITE)
SpiaRegs.SPITXBUF = 0x00; // Memory address of write location (MSB)
SpiaRegs.SPITXBUF = 0x00; // Memory address of write location
// SpiaRegs.SPITXBUF = 0x00; // Memory address of write location (LSB)
SpiaRegs.SPITXBUF = rdata_point++; // Data to Write
DELAY_US(1000000L);
SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x20; // Issue PIE ACK
}
Void NVM_RX_HWI()
{
Uint16 i;
rdata[rcount++]=SpiaRegs.SPIRXBUF; // Read data
if(rcount>=4) rcount=0;
SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1; // Clear Overflow flag
SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x20; // Issue PIE ack
}
我正在尝试测试从 SPI 环回示例中利用的 SPI 代码。 我正在尝试发送和接收4个以上的字、但我不知道如何发送和接收。 我已经连接了我的配置(SPI_Fifo_init())以及通过 BIOS 硬件中断处理消息发送和接收的发送和接收中断。 我可以做什么来发送和接收超过4个字?