Я взаимодействую с ADXL345 с SAMC21 для связи SPI и пытаюсь прочитать DEVICEID с частотой 4 МГц, но мне нужно прочитать данные как минимум 5 раз, чтобы получить правильный вывод, почему это не происходит в одной попытке. если я не включу l oop в следующий код, он не получит DEVICEID.
void SPI_read (адрес uint32_t) {
PORT->Group[0].OUTCLR.reg=1<<CS;
volatile uint32_t temp=0;
for(char i=5;i>0;i--)
{
while(SERCOM1->SPI.INTFLAG.bit.DRE==0);
SERCOM1->SPI.DATA.reg=(0x80|address); /* for read operation*/
while(SERCOM1->SPI.INTFLAG.bit.RXC==0);
temp=SERCOM1->SPI.DATA.reg;
}
PORT->Group[0].OUTSET.reg=1<<CS;
}