This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好!
我正在使用 TMS320F28027、我想设置 SPI 接口以与 Raspberry PI 配合使用。 问题在于、RXFFIENA 寄存器变为高电平一次、然后中断被激活、但该寄存器从不变为低电平。 它不再进入回调、我认为这是由于该寄存器的永久高电平状态。 因此、我要感谢您的帮助、以了解这种情况的发生原因。
另一个问题是发送回调永远不会进入。
这是我的代码。
void SPIA_Init (void (* TX_int)(void)、void (* Rx_int)(unsigned char) ){ EALLOW; SpiaRegs.SPICCR.bit.SPISWRESET = 0;//复位条件 SpiaRegs.SPICCR.bit.CLKPOLARRegis = 1;// SPICTRIST.STAL.SPICT.STAL.SPICT.STAL.SPICT.STAL.SPICS0 ;SPICT.SPICT.SPICT.SPICT.SPICT.SPICT.STAL.SIT.SPICS/ SPICT.STAL.SIT.STAL.SIT.STAL.SIT.SPICS/ SPICRIST.STINT.SPICS/ SPICRIST.SPICRIST.STINT.STINT.STINT. /* SPI_A FIFO 模式*/ SpiaRegs.SPIFFRX.bit.RXFFIL = 4; //将 RX FIFO 级别设置为0 SpiaRegs.SPIFFRX.bit.RXFFIENA=1; SPIA_Rx_CALLIBRAY = Rx_int; SPIA_TX_CALLBACK = TX_int; SpiaRegs.SPICCR.bit.SPISWRESET = 1; EDIS; DINT; //启用 SCI 接收中断 Hwi_create (72、SPIARX_ISR、NULL、NULL);//在 PIE 组6 中启用 SPIRXINTA Hwi_create (73、SPIATX_ISR、NULL、NULL);//在 PIE 组6 EINT 中启用 SPIRXINTA; //在 CPU 级别启用中断 返回; } void SPIARX_ISR (UARg arg) { RDATA[1]= SpiaRegs.SPIRXBUF;//从机读取数据 RDATA[2]= SpiaRegs.SPIRXBUF;//从机读取数据 RDATA[3]= SpiaRegs.SPIRXBUF ;//从机读取数据 RDIRECT_4;//从机读取数据 RDIRECT_SPIRF;//从机读取数据 RTE.SPIRXBUF;// SPIRX4= SPIRXC.0/从机读取数据 RTE.SPIRXT./SPIRXBUF (* SPIA_Rx_callback)(RDATA[1]); //将数据发送到 sci_callback EALLOW 指向的函数; SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;//清除中断标志 // PieCtrlRegs.PIEACK.ALL=0x20; //发出 PIE ack EDIS; } void SPIATX_ISR (UArg_arg) { //if (SPIA_TX_callback!= 0) //(* SPIA_TX_callback)(); //执行 sci_callback 指向的函数} void SPIATX_ISR (UArg) { SpiaRegs.SPITXBUF = sdata[1];//从器件发送数据 SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1;//清除中断标志 PieCtrlRegs.PIEACK.All|=0x20; //发出 PIE ACK //if (SPIA_TX_CALLBACK!= 0) //(* SPIA_TX_CALLBACK)(); //执行 sci_callback 指向的函数}