littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于STM32和libopencm3库的USB到I2C通信驱动程序

项目简介

本项目名为i2c - star,是Till Harbaum的i2c - tiny - usb的兼容复制版本。其固件与Till的实现无共同软件,但和主线Linux内核中的i2c - tiny - usb驱动程序兼容,无需在主机计算机安装特殊软件即可直接使用。项目提供了基于STM32微控制器的USB到I2C通信的驱动程序实现,适用于STM32F4微控制器,借助libopencm3库简化硬件操作。

项目的主要特性和功能

  1. 初始化I2C总线:可配置I2C总线参数(如速率、地址等)以初始化I2C通信。
  2. 数据传输:能通过USB接口接收主机数据并发送到I2C设备,也可从I2C设备读取数据并经USB接口回传至主机。
  3. 处理USB控制请求:处理来自USB主机的控制请求,如设置I2C通信参数、获取I2C设备状态等。
  4. 管理USB设备状态:管理USB设备的配置和状态,确保设备在通信时正确响应主机请求。
  5. 硬件资源初始化和配置:初始化硬件资源(如GPIO和时钟),为USB和I2C通信提供必要硬件支持。

安装使用步骤

前提条件

安装gcc - arm - embedded编译器工具链(或类似的arm - none - eabi - 编译器)、openocd和dfu - util。

安装步骤

  1. 复制项目仓库: bash
  2. 获取依赖库: bash cd i2c - star; git submodule update --init --recursive
  3. 构建固件: bash make
  4. 使用JTAG/SWD编程器安装引导加载程序:
    • 对于STLink v2: bash make -C src/bootloader flash
    • 对于Black Magic Probe: bash make -C src/bootloader BMP_PORT=/dev/ttyACM0 flash
  5. 使用引导加载程序通过微控制器板自身的USB接口安装主应用程序: bash make -C src/i2c - stm32f1 - usb flash

使用示例

在使用任何i2c - tools实用程序之前,需要加载i2c_dev内核模块。 ```bash $ i2cdetect -l ... i2c - 7 unknown i2c - tiny - usb at bus 001 device 031 N/A

$ i2cdetect -y 7 要让Linux识别总线上的I2C设备,使用以下命令:bash $ echo tmp102 0x48 | sudo tee /sys/class/i2c - adapter/i2c - 7/new_device `` 其中tmp102是要与I2C设备关联的内核驱动程序名称,0x48是I2C设备的7位地址,i2c - 7`是内核分配给i2c - star适配器的总线编号。

硬件设置

该固件可轻松移植,已在基于STM32F103C8T6的小型开发板上进行测试,所需连接如下: - USB连接到主机计算机 - B7:I2C总线SDA,B6:I2C总线SCL(不要忘记上拉电阻) - [可选;仅用于调试] PA9:UART TX,PA10:UART RX

也在STM32F4 - Discovery板上进行了测试,该板除USB外无需其他连接,因为它内置了I2C外设。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】