PIC32 SPI外设在从模式下 配置为增强型缓冲模式,中断配置为fifo全满接受中断(接受为32bit模式,所以有fifo有4级深度)。我的问题是:这样是在接受4x32bit数据后进入中断,还是每接受32bit数据进入中断?如何读取4级深度fifo数据?
void SPI1_init(void)
{
// SPI open mode slave;
SpiOpenFlags oflags=SPI_OPEN_MODE32|SPI_OPEN_SMP_END|SPI_OPEN_ON|SPI_OPEN_SLVEN;
//when start the spi xmode ,the first step was disabled the interrupt
INTEnable(INT_SPI1RX,0); //disable spi_int
INTClearFlag(INT_SPI1RX);
INTClearFlag(INT_SPI1TX);
INTClearFlag(INT_SPI1E);
// open spi1 ,spi1set ,master mode outclk prescaler
SpiChnOpen(1, oflags, 4); //enable spi_1 peripheral
SPI1CONSET = 0x0001000; //enhaned mode
SPI1CONSET = 0x0000003; //fifo fil as event
//set the spi1rx interrupt priority and subpriority
INTSetPriority(INT_SPI1RX,3); //set spi priority 3
INTSetSubPriority(INT_SPI1RX,0); // set spi subpriority 0
//enable the spi1rx interrupt
INTEnable(INT_SPI1RX,1); //enable spi_int
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我没有弄过spi,但是usrt在16位机上连接DMA以后,就是8比特字节把fifo灌满就发生中断。然后,你的中断响应程序可以一直读出,直到发现队列空的信号为止。所以,从手册里找队列空的标志,就能解决你所说的问题。
一周热门 更多>