haas506开发教程-driver-I2C
1.硬件图
2.获取mpu6050的器件id
-
实物图
-
main.py
#0x75是mpu6050的who am I寄存器的地址,寄存器的默认值是0x68
#'h'的16进制表示为68,即器件id为 0x68
#通过hex(ord(b'h'))转换一下
from driver import I2C
i2c=I2C()
i2c.open('mpu6050')
readBuf=bytearray([0x75])
i2c.read(readBuf,1)
print('mpu6050 chip id = {}'.format(readBuf))
print('mpu6050 chip id = {}'.format(hex(ord(b'h'))))
i2c.close()
- board.json
{
"version": "1.0.0",
"io": {
"mpu6050": {
"type": "I2C",
"port": 1,
"addrWidth": 7,
"freq": 100000,
"mode": "master",
"devAddr": 104
}
},
"debugLevel": "ERROR"
}
- 日志输出
mpu6050 chip id = bytearray(b'h')
mpu6050 chip id = 0x68
3.mpu6050的who am i 寄存器
4.Class-I2C
- I2C
- 实例化
- i2c=I2C()
- i2c.open(params)
- 作用:打开i2c
- 参数: params是一个字符串,需要在board.json中预先定义
- 返回: 0成功
- i2c.write(writeBuf, len)
- 作用:往指定寄存器里写数据
- 参数:i2c写操作需要传入一个writeBuf字节数组,数组中包含寄存器的地址和待写入的数据;还需传入writeBuf数组的长度len;
- 返回: 所写入寄存器的数据长度
- i2c.read(readBuf, len)
- 作用:读取指定寄存器的数据
- 参数: i2c读操作需要传入一个readBuf字节数组,数组中包含指定寄存器的地址,即从哪个寄存器取数据,完成读操作后,所取得的寄存器中的数据被存放在ReadBuf中;还需传入readBuf数组的长度len;
- 返回: 所读取寄存器的数据长度
- i2c.close()
- 作用:关闭i2c
- 返回: 0成功
- 实例化
5.总结
本节介绍了如何使用haas506的driver的I2C模块。通过I2C模块获取到了mpu6050(6轴惯性传感器)的器件id值。需要注意的是:要在board.json中设置devAddr的值,即将mpu6050的设备地址(0x68)转换成10进制,填入到devAddr中。