I2C与串口基础函数

  • 使用基础函数需要通过命令安装以下依赖,请提前参见配置网络章节为开发者套件共享网络。
    • 安装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())

写入二进制编码的字符串数据。