Как функция xfer2 используется для чтения регистров с помощью SpiDev? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь связаться с моим mpu9250 через SPI с помощью модуля py-spidev, и я не могу понять, как именно работает функция чтения.

Я нашел этот фрагмент функции, который выполняет регистр чтенияфункция, и я хотел бы знать, почему __READ_FLAG (__READ_FLAG = 0x80) объединяется с байтом адреса для отправки фиктивных значений.Разве это не изменит адрес регистра полностью?

def ReadReg(self, reg_address):
    self.bus.open(self.spi_bus_number, self.spi_dev_number)
    tx = [reg_address | self.__READ_FLAG, 0x00]
    rx = self.bus.xfer2(tx)
    self.bus.close()
    return rx[1]

1 Ответ

0 голосов
/ 04 июня 2019

Нашел ответ для этого в другой таблице данных, которая следует тому же протоколу.

Запись производится путем понижения CSB и отправки пар контрольных байтов и регистрации данных. Контроль байты состоят из адреса регистра SPI (= полный адрес регистра без бита 7) и записи команда (бит7 = RW = ‘0’). Несколько пар могут быть написаны без поднятия ЦСБ. Транзакция закончилась повышением ЦСБ.

Чтение осуществляется путем понижения CSB и первой отправки одного управляющего байта. Управляющие байты состоят адреса регистра SPI (= полный адрес регистра без бита 7) и команды чтения (бит 7 = RW = ‘1’). После записи управляющего байта данные отправляются с вывода SDO (SDI в 3-проводном режиме); адрес регистра автоматически увеличивается.

...