请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28027 工具/软件: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
指向的函数}