TI中文支持网
TI专业的中文技术问题搜集分享网站

SPI中断问题?

SPI初始化如下:

 SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

 SpiaRegs.SPICCR.all=0x0007;       //8-bit character,上升沿发,下降沿入
 SpiaRegs.SPICTL.all=0x0007;       //Interrupt enabled, Master/Slave XMIT enabled
 SpiaRegs.SPIBRR=0x028;           // Baud rate   LSPCLK/(4+1)=20M/40=0.5M
 SpiaRegs.SPIFFTX.all=0xC004;      // Enable FIFO's, set TX FIFO level to 4
 SpiaRegs.SPIFFRX.all=0x0024;      // Set RX FIFO level to 4
 SpiaRegs.SPIFFCT.all=0x00;
 SpiaRegs.SPIPRI.all=0x0010;
 SpiaRegs.SPISTS.all = 0x00;
 SpiaRegs.SPICCR.bit.SPISWRESET=1;  // Enable SPI
 SpiaRegs.SPIFFTX.bit.TXFIFO=1;
 SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;

F28069的SPI引脚都悬空,这种情况下,用示波器看出SOMI引脚和SIMO引脚电平无变化,但用仿真器仿真却能进入接收中断,为什么?

初充中断子程序中处理:

interrupt void spiRxFifoIsr(void)
{
 Uint16 i;
 Uint8 spicksum;

    SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;  // Clear Overflow flag
    SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;  // Clear Interrupt flag
    PieCtrlRegs.PIEACK.all|=0x20;       // Issue PIE ack

}

taotao:

怎么 TI的技术支持部也不忙吧回答一下。气死人了

SPI初始化如下:

 SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

 SpiaRegs.SPICCR.all=0x0007;       //8-bit character,上升沿发,下降沿入
 SpiaRegs.SPICTL.all=0x0007;       //Interrupt enabled, Master/Slave XMIT enabled
 SpiaRegs.SPIBRR=0x028;           // Baud rate   LSPCLK/(4+1)=20M/40=0.5M
 SpiaRegs.SPIFFTX.all=0xC004;      // Enable FIFO's, set TX FIFO level to 4
 SpiaRegs.SPIFFRX.all=0x0024;      // Set RX FIFO level to 4
 SpiaRegs.SPIFFCT.all=0x00;
 SpiaRegs.SPIPRI.all=0x0010;
 SpiaRegs.SPISTS.all = 0x00;
 SpiaRegs.SPICCR.bit.SPISWRESET=1;  // Enable SPI
 SpiaRegs.SPIFFTX.bit.TXFIFO=1;
 SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;

F28069的SPI引脚都悬空,这种情况下,用示波器看出SOMI引脚和SIMO引脚电平无变化,但用仿真器仿真却能进入接收中断,为什么?

初充中断子程序中处理:

interrupt void spiRxFifoIsr(void)
{
 Uint16 i;
 Uint8 spicksum;

    SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;  // Clear Overflow flag
    SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;  // Clear Interrupt flag
    PieCtrlRegs.PIEACK.all|=0x20;       // Issue PIE ack

}

sam liu:

回复 kqian0327:

kqian,

谢谢你我解答与建议,

我针对TI的例程进行了多次尝试,发现只有把字符长度改为16位就可以发出数据了,示波器能踩到波形。而8位字符长度怎么改设置SIMO的电平都无变化,这是什么原因?

针对这种无数据而进入接收中断的情况应该如何解决呢?

SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI

 SpiaRegs.SPICCR.all=0x000F;       //16-bit character,上升沿发,下降沿入 SpiaRegs.SPICTL.all=0x0007;       //Interrupt enabled, Master/Slave XMIT enabled SpiaRegs.SPIBRR=0x028;           // Baud rate   LSPCLK/(4+1)=20M/40=0.5M SpiaRegs.SPIFFTX.all=0xC004;      // Enable FIFO's, set TX FIFO level to 4 SpiaRegs.SPIFFRX.all=0x0024;      // Set RX FIFO level to 4 SpiaRegs.SPIFFCT.all=0x00; SpiaRegs.SPIPRI.all=0x0010; SpiaRegs.SPISTS.all = 0x00; SpiaRegs.SPICCR.bit.SPISWRESET=1;  // Enable SPI SpiaRegs.SPIFFTX.bit.TXFIFO=1; SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;

因为发送数据是左边开始移位

赞(0)
未经允许不得转载:TI中文支持网 » SPI中断问题?
分享到: 更多 (0)