littlebot
Published on 2025-04-16 / 3 Visits
0

【源码】基于C语言的ATmegaXU4 I2CUSB适配器固件项目

项目简介

本项目是Till Harbaum的I2C-Tiny-USB适配器或Thomas Fischl的I2C-MP-USB的直接复制版本,专为ATmegaXU4控制器编写。由于原项目基于PIC,而作者只有ATmega32U4开发板,所以编写了此固件。它采用相同的协议和VID/PID对,现有驱动无需修改即可使用,借助Dean Camera的LUFA库实现USB支持。

项目的主要特性和功能

  1. 硬件支持:支持ATmega16U4和ATmega32U4(如Arduino Leonardo),可能在LUFA支持的其他带USB功能的AVR上工作,不过ATmegaXU2系列因无硬件I2C不支持。
  2. I2C性能:支持高达400 kHz的快速流水线操作,字节间无死区时间,波特率可在5 kHz至400 kHz间选择。
  3. 错误指示:可选LED用于错误指示(默认禁用)。
  4. 驱动支持:支持Linux(通过i2c-tiny-usb驱动或Thomas的Python、Java库)、Windows(搭配Zadig和Thomas的库),有对应的Python和Java库可用。
  5. USB开发支持:借助LUFA库,提供丰富功能,如USB设备模式实现、主机模式支持、端点管理和数据传输等,支持多种AVR架构微控制器,提供模板化代码和全面底层支持。

安装使用步骤

固件烧录

项目提供了适用于16 MHz晶振的预构建十六进制文件。 - 通过DFU引导加载程序烧录到XU4: sh avrdude -u -p atmega32u4 -P usb -c flip1 -Uflash:w:i2c-tiny-usb.hex - 尝试通过Arduino引导加载程序烧录到Arduino Leonardo(未测试): sh avrdude -u -p atmega32u4 -P <your port here> -c avr109 -Uflash:w:i2c-tiny-usb.hex

从源码构建

需要较新的avr-gcc(Windows可使用Zak Kemble的构建版本),确保PATH指向avr-gcc二进制文件,然后执行: sh make 若设备已连接并处于引导加载程序模式,可执行: sh make flash

调整配置

  • 若开发板晶振频率非16 MHz,需在makefile中调整F_CPU
  • 若需要错误指示LED,可在i2c-tiny-usb.c开头附近通过#define配置LED引脚。

下载地址

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