.NET Micro Framework 设备(在本例中为 ChipworkX)通过SPI接口向PIC18F发送一个字节。启用后,在PIE1bits.SSPIE
中断时执行以下代码:
void high_isr (void)
{
PIE1bits.SSPIE = 0;
PIR1bits.SSPIF = 0; //Clear interrupt flag.
LATDbits.LATD5 = 1; //Enables LED for high interrupt activity.
while ( !SSPSTATbits.BF ); //Wait until cycle complete
red_byte_array[1] = SSPBUF;
SSPBUF = 0x00;
LATDbits.LATD5 = 0;
PIE1bits.SSPIE = 1;
}
当多次发送相同的字节时,数据似乎并没有被一致地读取。主机和从机都设置为时钟空闲低电平,数据时钟在上升沿。我不使用片选线,因为它是直接通信。最后,主机以 100 kHz 发送数据,而 PIC 以 8 MHz 运行。
如何改进和/或修复此代码?