Почему полученные данные SPI не являются непрерывными при использовании Python?

Я тестировал с mraa и spidev, оба не могут получать непрерывные данные. Например, когда я отправляю несколько байтов и ожидаю получения данных на ведомом устройстве, например [1,2,3,4,5,6,7,8,9], я могу получить некоторые данные, например [1,1,2,4, 5,6,8,8,9], и каждый раз по-разному.

Код в подчиненном устройстве:

      int bytecount = 0;

SPI1->DR = tx_buff[0];

    
while(cs == 0) {
    if(SPI1->SR&0x1) {
        rx_buff[bytecount] = SPI1->DR;
        bytecount++;
        if(bytecount<TX_LEN) {
            SPI1->DR = tx_buff[bytecount];
        }
    }

}

Код в главном устройстве:

      import mraa
s=mraa.Spi(0)
s.frequency(5000000)
tx=bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00')
print(tx)

Код, использующий spidev, аналогичен.

Я надеюсь, что главное устройство сможет получать непрерывные данные. Спасибо!

0 ответов

Другие вопросы по тегам