最近在使用树莓派I2c通信,借助JY901陀螺仪(九轴传感器)识别相关角度信息。
为了更深如了解代码,尝试对代码进行学习解读。
在教程中的class JY901类中,看到了如下方法的使用:
read_i2c_block_data(self.iic_addr, cmd, 2)
为了理解每个参数的含义,对I2c及smbus(smbus2)模块进行了学习,找到了如下文章:
https://blog.csdn.net/finedayforu/article/details/116590855
通过学习该文章,对相关函数做出如下总结
def _read_value(self, cmd: int, constant: float) -> float:
'''read_i2c_block_data()是smbus中的方法'''
'''read_i2c_block_data(i2c_addr, register, length, force=None)
“i2c_addr”是I2c地址
“register”是寄存器地址
“length”是读取字符串的长度
'''
value = self.iic_ins.read_i2c_block_data(self.iic_addr, cmd, 2) # “cmd”是寄存器查询地址
value = (value[1] << 8 | value[0]) / 32768 * constant
if value >= constant:
value -= 2 * constant
return value
未完待续~