PIC32 SPI 增强型缓冲中断问题

2020-02-08 09:12发布

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       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
surf_131
1楼-- · 2020-02-08 12:30
SPI/I2C/USRT等都是面向字节的外设,不会有4*32bits那样的情况。
我没有弄过spi,但是usrt在16位机上连接DMA以后,就是8比特字节把fifo灌满就发生中断。然后,你的中断响应程序可以一直读出,直到发现队列空的信号为止。所以,从手册里找队列空的标志,就能解决你所说的问题。

一周热门 更多>