ATtiny45直接USB 2.0连接的固件和电路

电器工程 微控制器 USB avr 串行
2022-01-20 09:26:06

我想使用 ATtiny45制作自己的模块化USB 设备,该设备只需通过 USB 将数据发送到 PC。我不是在读取数据,所以单一方式( ATtiny -> PC )连接是完全可以的。

我正在使用Arduino Uno 作为 ISP,并使用从 Arduino 软件中加载的标准 ArduinoISP 草图。我正在考虑使用 AVRDUDE 以 Arduino 作为 ISP 对 ATtiny45 进行编程,因为我希望能够使用编译为 HEX 的 C 代码,因为它比 Arduino 编程语言更先进。

我对电路的基本想法: 在此处输入图像描述

如您所见,我想要一个“直接”USB 连接。到目前为止,我知道我必须为此使用基于软件的解决方案。

  1. 我已经管理SoftwareSerial与我的 ATtiny45 一起工作。为此,我使用 Arduino 软件使用以下代码对 ATtiny45 进行编程:

    #include <SoftwareSerial.h>
    #define rxPin 3
    #define txPin 4
    SoftwareSerial serial(rxPin, txPin);
    
    void setup() {
        pinMode(rxPin, INPUT);
        pinMode(txPin, OUTPUT);
        pinMode(led, OUTPUT);     
        serial.begin(4800);
    }
    
    void loop() {
        serial.println("1");
        delay(1000);
    }
    

    请注意,我不使用 Pin 3(尚未),但我需要为 SoftwareSerial 定义它。

    通过这种方式,使用 SoftwareSerial,我能够将来自 ATtiny 的数据直接发送到我的 Arduino UNO 的 TX 引脚,该引脚上加载了一个空白草图以进行此测试。我正在使用 Arduino 软件的串行监视器读取 COM4 上的数据(在我的情况下),因为我的 PC 无法识别任何设备(COM 端口),因为我试图将编程的 ATtiny 直接连接到 USB 电缆。

    不幸的是,我在串行监视器中只得到了奇怪的 unicode 字符。我认为这是因为数据是十六进制格式。所以我注意到我需要在 USB 和 ATtiny45 之间连接一个USB/串行转换器......我已经搜索过这样的转换器,但我不想使用任何预制板,因为我想要所有我的组件在一块板上。我认为 FTDI 芯片对我的项目来说“太多”了,不是吗?(它的引脚太小,无法焊接……)

  2. V-USB是我的第二种方法,因为它不需要 USB/串行转换器(据我所知)。所以要使用 V-USB,我需要使用前面提到的 AVRDUDE。

    我找到了这个很好的例子V-USB EasyLogger它包含电路设计和示例固件。(C/C++/十六进制)

    我唯一想知道的是:我真的需要让我的电路看起来像示例中所示吗?-> 在此处输入图像描述

关于这种 USB 连接,我还需要了解什么?(为什么我需要一个 USB / 串行转换器?我可以只连接 +5 和 VCC 吗?我绝对需要什么组件?我需要通过 TX 发送什么样的信号?位?十六进制?它需要什么电压成为 ? )

感谢您的所有回答。


更新

以下是一些在某些方面确实对我有帮助的附加链接。但是我还是没有完全理解...

第一个-> http://www.ernstc.dk/arduino/tinycom.html

第二个-> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino(向下滚动到“串行输出”部分)

3个回答

您可以直接将 ATtiny45 与 USB 通信,无需 FTDI 转换器。

为了使一切正常工作,您将需要V-USB库。

一切工作的一个很好的例子是here,它使用来自EasyLogger的相同例子。

同一位作者还有其他一些关于 USB 和 uC 的不错的技巧和项目。

带有 ATtiny 的示例电路:

示意图

模拟此电路- 使用CircuitLab创建的原理图

基本上,USB 是一种高级通信协议,对信号线级驱动、时序和终止有特定要求。它不像串口那么简单,它有差分数据线和 NRZI 编码,需要轮询、握手等。这就是为什么你需要一个 USB/串行适配器,或者为什么你需要一个 USB 硬件或软件实现。

USB 使用 5V 电源时,信号线实际上是 3.3V 到 3.6V。这就是您展示的 VUSB 电路在这两条线上使用齐纳二极管的原因。Tiny 不能简单地在 3.3V 下运行,因为它不能在 3.3V 下以所需的 16MHz 时钟频率运行。

其余零件 R1-R3、D1、D2 和 C1、C2 是最低要求的零件。这并没有真正要求您获得很多功能。有关使用 vusb 的所有项目的列表,请参阅此页面。

开关、R4 和 LED1 都是特定数据记录固件示例的一部分,如果您不需要它/更改固件,可以避免使用它。

在一篇文章中要回答的问题太多了,但这里有一些要点:

一些微控制器包含 USB“端点”和相关硬件,但Atmel 网站显示 ATtiny45 没有。

因此,您不能像这样简单地将微控制器端口连接到 USB 连接器,因为 USB 在电子和协议级别都是复杂的总线。

但是,正如下面评论中所指出的,您正在使用 V-USB 沿着正确的路线搜索,我没有使用过这个,所以会让其他人发表评论。

FTDI 芯片不太难焊接,但带有阻焊剂的适当 PCB 会更容易。

以前我使用过类似这样的 FT232 电缆

FT232 USB 数据线
(来源:ftdichip.com

它在 USB 连接器中嵌入了 FTDI 芯片,可处理所有电平转换,同时还提供电源。末端是一个简单的 0.1" 间距连接器,您可以连接到排针。

它们可以在 eBay 上以合理的价格买到。