跳到主要内容

I2C与串口基础函数

查询已安装的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工具

按键与开关

开发者套件对外提供一个开关机按键,一个U盘制卡按键、一个复位按键和一个拨码开关。

开关机按键

短按开关机按键,如图1所示,可实现开关机。

图1 Atlas 200I DK A2 开发者套件俯视图

复位按键

短按复位按键,如图2所示,可触发复位功能。

图2 Atlas 200I DK A2 开发者套件俯视图

U盘制卡按键

开发者套件的U盘制卡按键如图3所示,当前该按键暂不可用。

图3 Atlas 200I DK A2 开发者套件俯视图

拨码开关

拨码开关所在位置如图4所示。

图4 Atlas 200I DK A2 开发者套件俯视图

开发者套件的拨码开关上有四个开关,分别为1、2、3和4,如图5所示。其中开关1为预留开关,当前无功能。调整开关2、3、4可以选择开发者套件系统启动介质,当前仅支持SD卡启动,开关值如表1所示。

图5 拨码开关

表1 拨码开关2,3与4的真值表

开关1的拨码方向

开关2的拨码方向

开关3的拨码方向

开关4的拨码方向

启动介质

任意

OFF

ON

OFF

SD卡

其他

预留

LED状态灯

开发者套件有4个LED状态指示灯,如图1所示。

图1 LED位置标注图

指示灯丝印信息为LED1、LED3、LED4、D3。

指示灯状态当前开发者套件状态
绿灯亮HBoot2启动成功,即将进入OS
绿灯灭HBoot2启动失败
指示灯状态当前开发者套件状态
绿灯亮文件系统启动成功
绿灯灭文件系统启动失败
指示灯状态当前开发者套件状态注意事项
绿灯亮工作无异常
红灯亮过温告警- 检查风扇状态
- 检查环境温度
- 下电降温
红灯灭温度正常
指示灯状态当前开发者套件状态
上电
下电

在线提单