xfer2函数如何用于使用SpiDev读取寄存器?

时间:2019-05-24 14:47:39

标签: python spi

我正在尝试使用py-spidev模块通过SPI与我的mpu9250通信,但我无法理解读取功能的工作原理。

我找到了执行读寄存器功能的功能代码段,我想知道为什么__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 :(得分:0)

在另一个遵循相同协议的数据表中找到了答案。

  

通过降低CSB并发送对控制字节和寄存器数据来完成写入。控制   字节由SPI寄存器地址(=不带位7的完整寄存器地址)和写操作组成   命令(位7 = RW =“ 0”)。可以在不提高CSB的情况下写入几对。交易是   通过提高CSB结束。

     

通过降低CSB并首先发送一个控制字节来完成读取。控制字节包括   SPI寄存器地址(=不带位7的完整寄存器地址)和读取命令(位7 =   RW =“ 1”)。写入控制字节后,数据从SDO引脚发送出去(3线模式下为SDI);否则,数据从SDO引脚发送出去。   寄存器地址会自动递增。