我正在尝试使用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]
答案 0 :(得分:0)
在另一个遵循相同协议的数据表中找到了答案。
通过降低CSB并发送对控制字节和寄存器数据来完成写入。控制 字节由SPI寄存器地址(=不带位7的完整寄存器地址)和写操作组成 命令(位7 = RW =“ 0”)。可以在不提高CSB的情况下写入几对。交易是 通过提高CSB结束。
通过降低CSB并首先发送一个控制字节来完成读取。控制字节包括 SPI寄存器地址(=不带位7的完整寄存器地址)和读取命令(位7 = RW =“ 1”)。写入控制字节后,数据从SDO引脚发送出去(3线模式下为SDI);否则,数据从SDO引脚发送出去。 寄存器地址会自动递增。