查询已安装的I2C总线列表
概述
I2C-tools工具用于调试I2C设备,查看某条总线器件挂载情况,也可查看、获取寄存器的值。
父主题: I2C-tools工具介绍
使用指南
i2cdetect *[option]命令必须使用root用户执行,其中[options]*为命令行运行参数,各参数解释请参见表1。
表1 参数说明表
| 参数 | 说明 |
|---|---|
| -y | 关闭交互模式。 |
| -a | 强制扫描非常规地址(不推荐)。 |
| -q | 使用 SMBus 的“quick write”命令进行探测(不推荐)。 |
| -r | 使用 SMBus 的“receive byte”命令进行探测(不推荐)。 |
| -F | 显示适配器实现的功能列表并退出。 |
| -V | 显示版本信息并退出。 |
| -l | 输出已安装I2C总线的列表。 |
父主题: I2C-tools工具介绍
查询已安装的I2C总线列表
命令功能
i2cdetect -l用于查询已安装的I2C总线列表。
使用实例
i2cdetect -l
回显如下:
root@npi:~# i2cdetect -l
i2c-1 i2c STM32F7 I2C(0x5c002000) I2C adapter
i2c-2 i2c STM32F7 I2C(0x40012000) I2C adapter
i2c-0 i2c STM32F7 I2C(0x40013000) I2C adapter
父主题: 使用示例
查询单条总线下的设备
命令功能
i****2cdetect -y i2cbus用于查询某条总线下的设备。
参数说明
| 参数 | 说明 |
|---|---|
| i2cbus | 由I2C总线数量决定,对应i2cdetect -l扫描的序号。 |
使用实例
i2cdetect -y 0
回显如下:
root@ubuntu:~# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: -- -- 52 -- -- -- -- -- -- -- 5a -- -- -- -- --
60:
70:
父主题: 使用示例
I2C与串口基础函数
:::note 说明
- 使用基础函数需要通过命令安装以下依赖,请提前参见配置网络章节为开发者套件共享网络。
-
安装smbus2库。
conda install -c conda-forge smbus2 -
安装pyserial模块。
pip install pyserial
-
- 从设备的地址以及寄存器地址均可以通过I2C-tools查到,如果是标准设备,一般会有统一的地址。 :::
表1 I2C常用函数代码
| 命令/代码 | 说明 |
|---|---|
| import smbus2 | 导入smbus2库。 |
| bus = smbus2.SMBus(7) | 初始化I2C总线,7表示默认I2C总线为i2c-7。 |
| read_byte_data(i2c_addr) | 从设备读取一个字节,i2c_addr为查到的从设备地址。 |
| write_byte_data(i2c_addr) | 向设备写入一个字节。 |
| read_word_data(i2c_addr, register) | 从给定的寄存器中读取一个字(2个字节),register为从设备寄存器地址。 |
| write_word_data(i2c_addr, register) | 将一个字(2个字节)写入给定的寄存器。 |
开发者套件的40Pin接口上默认串口为引脚8(UART0_TX)、10(UART0_RX),对应的串口号为“/dev/ttyAMA0”。也可连接USB0作为串口,对应的串口号为“ /dev/ttyUSB0”。
表2 串口常用函数代码
| 命令/代码 | 说明 |
|---|---|
| import serial | 导入pyserial模块。 |
| ser=serial.Serial("/dev/ttyUSB0",115200) | 使用USB连接串行口,打开串行口,设置波特率。 |
| ser=serial.Serial("/dev/ttyAMA0",115200) | 使用开发者套件GPIO口连接串行口,打开串行口,设置波特率。 |
| ser=serial.Serial("com3",115200) | Windows系统使用com3口连接串行口,打开串行口,设置波特率。 |
| ser.readline() | 读一行数据,以“/n”结束。 |
| ser.read(n) | 读n个字符。 |
| data = “Hello!” ser.write(data.encode()) | 写入二进制编码的字符串数据。 |
父主题: 使用串口与I2C-tools工具
综合使用示例
概述
基于I2C完成用户态下MPU6050传感器的调用和数据处理,且通过串口在PC上实现姿态可视化。
设备连线
使用USB转串口芯片(以CH343为例)、杜邦线若干,将传感器与开发者套件相连。
将CH343的TXD连接开发者套件的UART0_RX(10),CH343的RXD连接开发者套件的UART0_TX(8),GND接GND(6),再将USB转串口芯片连接PC。
表1 设备连线
| MPU6050 | 开发者套件管脚编号 | 开发者套件管脚名称 |
|---|---|---|
| VCC | 1 | 3.3V |
| GND | 9 | GND |
| IIC_SDA | 3 | I2C7-SDA |
| IIC_SCL | 5 | I2C7-SCL |
| MPU_INT | - | - |
| MPU_AD0 | - | - |
使用示例
-
单击链接,进入页面获取代码。
-
以root用户登录开发者套件,将代码包上传至开发者套件任意目录并解压,例如“/home/”。
unzip ascend_community_projects-310B.zipcd ascend_community_projects-310B/A200IDKA2MPU6050PostureVisualization其中“ascend_community_projects-310B/A200IDKA2MPU6050PostureVisualization/motion_display”中的“motion_display.pde”文件需在windows电脑中运行。
-
安装依赖。
-
安装smbus2库。
conda install -c conda-forge smbus2 -
安装pyserial模块。
pip install pyserial
-
-
参考设备连线连接开发者套件与PC,在PC等待驱动自动安装。
-
在PC中打开控制面板,进入“设备管理器>端口”查看对应端口是否出现,如图1所示。
图1 查看端口

-
进行数据传输与姿态可视化。
-
单击获取链接下载Processing工具。
-
使用Processing工具选择“文件>打开”按钮打开2获取的“motion_display.pde”文件。
图2 选择文件

-
修改代码中的串口号,并单击运行按钮,如图3所示。
...void setup(){size(800, 480, P3D); // 创建一个高800、宽480的3D场景myPort = new Serial(this, "COM3", baudrate); // 根据电脑上查询到的端口号进行修改,例如此处为"COM3"}...图3 运行按钮
-
在开发者套件界面,执行以下命令启动数据传输与姿态可视化。
python mpu6050_motion.py在一定时间间隔持续打印输出姿态信息,并在processing中显示出模拟可视化状态,结果如图4所示。
图4 姿态可视化结果

-
父主题: 使用串口与I2C-tools工具
在线提单