spi配置
SpibRegs.SPICCR.bit.SPISWRESET = 0;
SpibRegs.SPICCR.all = 0x004F;
SpibRegs.SPICTL.all = 0x0006;
SpibRegs.SPISTS.all = 0x0000;
SpibRegs.SPIBRR.all= 0x0001;
//增加FIFO
SpibRegs.SPIFFTX.all =0xE040 ;
SpibRegs.SPIFFRX.all =0x2040 ;
SpibRegs.SPIFFTX.bit.TXFFIL = 1; // Set TX FIFO level
SpibRegs.SPIFFRX.bit.RXFFIL = 1; // Set TX FIFO level
SpibRegs.SPIPRI.bit.FREE = 1;
SpibRegs.SPICCR.bit.SPISWRESET = 1;
dma 配置
DMACH5AddrConfig((volatile UINT16*)(&SpibRegs.SPITXBUF),(volatile UINT16 *)m_u16DmaTxData);
DMACH5BurstConfig(0,1,0); // Burst size, src step, dest step
DMACH5TransferConfig(1,1,0); // transfer size, src step, dest step
DMACH5ModeConfig(DMA_SPIBTX,PERINT_ENABLE,ONESHOT_ENABLE,CONT_DISABLE,
SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,
CHINT_END,CHINT_ENABLE);
DMACH6AddrConfig((volatile UINT16*)m_u16DmaTxData,(volatile UINT16 *)(&SpibRegs.SPIRXBUF));
DMACH6BurstConfig(0,0,1); // Burst size, src step, dest step
DMACH6TransferConfig(1,0,1); // transfer size, src step, dest step
DMACH6ModeConfig(DMA_SPIBRX,PERINT_ENABLE,ONESHOT_ENABLE,CONT_DISABLE,
SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,
CHINT_END,CHINT_ENABLE);
在dma传输结束后,RX_FIFO中总是发现有两个(SPIFFRX.bit.RXFFST =2)没传出,请问有什么办法让dma把RX_FIFO中的数据都读出来。