项目简介
本项目名为i2c - star,是Till Harbaum的i2c - tiny - usb的兼容复制版本。其固件与Till的实现无共同软件,但和主线Linux内核中的i2c - tiny - usb驱动程序兼容,无需在主机计算机安装特殊软件即可直接使用。项目提供了基于STM32微控制器的USB到I2C通信的驱动程序实现,适用于STM32F4微控制器,借助libopencm3库简化硬件操作。
项目的主要特性和功能
- 初始化I2C总线:可配置I2C总线参数(如速率、地址等)以初始化I2C通信。
- 数据传输:能通过USB接口接收主机数据并发送到I2C设备,也可从I2C设备读取数据并经USB接口回传至主机。
- 处理USB控制请求:处理来自USB主机的控制请求,如设置I2C通信参数、获取I2C设备状态等。
- 管理USB设备状态:管理USB设备的配置和状态,确保设备在通信时正确响应主机请求。
- 硬件资源初始化和配置:初始化硬件资源(如GPIO和时钟),为USB和I2C通信提供必要硬件支持。
安装使用步骤
前提条件
安装gcc - arm - embedded编译器工具链(或类似的arm - none - eabi - 编译器)、openocd和dfu - util。
安装步骤
- 复制项目仓库:
bash
- 获取依赖库:
bash cd i2c - star; git submodule update --init --recursive
- 构建固件:
bash make
- 使用JTAG/SWD编程器安装引导加载程序:
- 对于STLink v2:
bash make -C src/bootloader flash
- 对于Black Magic Probe:
bash make -C src/bootloader BMP_PORT=/dev/ttyACM0 flash
- 对于STLink v2:
- 使用引导加载程序通过微控制器板自身的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】