Skip to main content

查询已安装的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开发者套件管脚编号开发者套件管脚名称
VCC13.3V
GND9GND
IIC_SDA3I2C7-SDA
IIC_SCL5I2C7-SCL
MPU_INT--
MPU_AD0--

使用示例

  1. 单击链接,进入页面获取代码。

  2. root用户登录开发者套件,将代码包上传至开发者套件任意目录并解压,例如“/home/”。

    unzip ascend_community_projects-310B.zip
    cd ascend_community_projects-310B/A200IDKA2MPU6050PostureVisualization

    其中“ascend_community_projects-310B/A200IDKA2MPU6050PostureVisualization/motion_display”中的“motion_display.pde”文件需在windows电脑中运行。

  3. 安装依赖。

    • 安装smbus2库。

      conda install -c conda-forge smbus2
    • 安装pyserial模块。

      pip install pyserial
  4. 参考设备连线连接开发者套件与PC,在PC等待驱动自动安装。

  5. 在PC中打开控制面板,进入“设备管理器>端口”查看对应端口是否出现,如图1所示。

    图1 查看端口

  6. 进行数据传输与姿态可视化。

    1. 单击获取链接下载Processing工具。

    2. 使用Processing工具选择“文件>打开”按钮打开2获取的“motion_display.pde”文件。

      图2 选择文件

    3. 修改代码中的串口号,并单击运行按钮,如图3所示。

      ...
      void setup(){
      size(800, 480, P3D); // 创建一个高800、宽480的3D场景
      myPort = new Serial(this, "COM3", baudrate); // 根据电脑上查询到的端口号进行修改,例如此处为"COM3"
      }
      ...

      图3 运行按钮

    4. 在开发者套件界面,执行以下命令启动数据传输与姿态可视化。

      python mpu6050_motion.py

      在一定时间间隔持续打印输出姿态信息,并在processing中显示出模拟可视化状态,结果如图4所示。

      图4 姿态可视化结果

父主题: 使用串口与I2C-tools工具

在线提单