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;
因为发送数据是左边开始移位