исправлена процедура верификации SPI

This commit is contained in:
seklyuts 2024-03-29 16:55:32 +03:00
parent f858d0f702
commit 2ddcdbcda0

View File

@ -253,29 +253,32 @@ uint16_t I2CVerify(uint16_t slaveAddr, uint16_t byteCount, bool sendStopConditio
I2caRegs.I2CMDR.bit.STT = 0x1;
TimerTimeouts = 0;
while((count < (byteCount))&&(TimerTimeouts < TIME_OVER))
while( (I2caRegs.I2CFFRX.bit.RXFFST < byteCount) && (TimerTimeouts < TIME_OVER*byteCount));
if(TimerTimeouts >= TIME_OVER)
{
// if(count == (byteCount-1)) {I2caRegs.I2CMDR.bit.NACKMOD = 0x1; I2caRegs.I2CMDR.bit.STP = 0x1;}
if(I2caRegs.I2CSTR.bit.RRDY ==0x1)
{
RXdata = I2caRegs.I2CDRR.all;
if(I2C_Vfdata[count] != RXdata) VerErr = 1;
count++;
}
ErrI2c3++;
return 1;
}
if(TimerTimeouts >= TIME_OVER) {ErrI2c2 += (byteCount - count); return 1;}
//
// Send STOP condition
//
if(sendStopCondition)
I2caRegs.I2CMDR.bit.STP = 0x1;
for(count=0; count < byteCount; count++)
{
I2caRegs.I2CMDR.bit.STP = 0x1;
TimerTimeouts = 0;
while((I2caRegs.I2CMDR.bit.STP != 0x0)&&(TimerTimeouts < TIME_OVER));
I2caRegs.I2CSTR.bit.BYTESENT = 0x1;
if(TimerTimeouts >= TIME_OVER) {ErrI2c3++; return 1;}
RXdata = I2caRegs.I2CDRR.all;
if(I2C_Vfdata[count] != RXdata) VerErr = 1;
}
I2caRegs.I2CMDR.bit.NACKMOD = 0x1;
TimerTimeouts = 0;
while((I2caRegs.I2CMDR.bit.STP != 0x0)&&(TimerTimeouts < TIME_OVER));
if(TimerTimeouts >= TIME_OVER)
{
ErrI2c5++;
return 1;
}
I2caRegs.I2CSTR.bit.BYTESENT = 0x1;
I2caRegs.I2CFFRX.bit.RXFFINTCLR = 0;
if(VerErr) return 2;
else return 0;
}