我正在通过SPI编码2个DSP之间的通信。启动代码非常简单,DSP-1正在发送而DSP-2正在接收(当然,DSP-1也接收但我不关心到目前为止,反之亦然,DSP-2)
工作正常。正确发送和接收了一千个16位数据。
但是,当我在DSP-1(主站)端添加随机延迟时,我发现DSP-2开始丢失一些数据。令我感到困惑的是,我没有改变DSP-2方面的任何接收,而且我经常轮询。
所以,为什么发送方的延迟可能会影响接收方呢? (我仔细检查了DSP1确实发送了正确的序列。)
而我正在考虑转换为中断机制,是否会为所有人解决这类问题?
我的DSP2的轮询代码是:
for(;;) //my main program for receving
{
spi_xmit(data); //For sending, not care so far
while(SpiaRegs.SPIFFRX.bit.RXFFST == 0) {} //polling
while(SpiaRegs.SPIFFRX.bit.RXFFST != 0)
{
rdata[seq] = SpiaRegs.SPIRXBUF;
seq++;
}
if(seq>1000) break;
}