haas506 2.0开发教程-driver-I2C
B站haas开发教程 B站教学视频链接
最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
1.硬件图
2.获取mpu6050的器件id
- 案例说明
- 本案例要获取mpu6050的器件id值。
- 首先需要知道mpu6050的设备地址(16进制0x68),并在board.json文件中配置I2C从设备10进制地址(104),填入到devAddr中。
- 然后访问器件寄存器地址(0x75),获取需要的器件id值。
- 实物图
- 连线方式
GND | 3.3V | SDA | SCL |
---|---|---|---|
GND | VCC | SDA | SCL |
- main.py
#0x75是mpu6050的who am I寄存器的地址
#'h'的16进制表示为68,即设备地址为 0x68
#通过hex(ord(b'h'))转换一下
from driver import I2C
i2c=I2C()
i2c.open('mpu6050')
readBuf=bytearray([0x75])
i2c.read(readBuf)
print('mpu6050 chip id = {}'.format(readBuf))
print('mpu6050 chip id = {}'.format(hex(ord(b'h'))))
i2c.close()
- board.json
{
"version": "2.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
open | write | read | close | memRead | memWrite |
---|---|---|---|---|---|
打开i2c | i2c写操作 | i2c读操作 | 关闭i2c | 从I2C设备指定地址读取一段数据 | 向I2C设备指定地址写一段数据 |
实例化
i2c=I2C()
i2c.open(node)
作用:打开i2c
返回: 成功:0,失败:故障码
参数说明:
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
node | String | 是 | 待操作的I2C设备节点,定义在board.json文件中。 |
i2c.write(writeBuf)
作用:往指定寄存器里写数据
返回值:0或正整数:真实发送的数据字节数。
负整数:故障码。
参数说明:
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
buf | bytearray | 是 | 发送数据的存储数组,期待发送的字节数为buf的长度。 |
i2c.read(readBuf)
作用:读取指定寄存器的数据
返回: 0或正整数:真实接收到的数据字节数。
负整数:故障码。
参数说明:
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
buf | bytearray | 是 | 接收数据的存储数组,期待接收的字节数为buf的长 |
i2c.close()
作用:关闭i2c
返回:成功:0
失败:故障码。
memRead(buf, memaddr, addrsize) - 从I2C设备指定地址读取一段数据
参数说明:
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
memaddr | int | 是 | 起始地址。 |
buf | int | 是 | 接收数据的存储数组,期待接收的字节数为buf的长度。 |
addrsize | int | 是 | memaddr的长度,有效值为8或16,单位:bit |
返回值:
0或正整数:真实接收到的数据字节数。
负整数:故障码。
memWrite(buf, memaddr, addrsize) - 向I2C设备指定地址写一段数据
参数说明:
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
memaddr | int | 是 | 起始地址 |
buf | int | 是 | 待写数据的存储数组,需要写入的数据长度为buf的长度。 |
addrsize | int | 是 | memaddr的长度,有效值为8或16,单位:bit |
返回值:
0或正整数:真实接收到的数据字节数。
负整数:故障码。
5.总结
本节介绍了如何使用haas506的driver的I2C模块。通过I2C模块获取到了mpu6050(6轴惯性传感器)的器件id值。需要注意的是:要在board.json中设置devAddr的值,即将mpu6050的设备地址(0x68)转换成10进制,填入到devAddr中。