arduino - 将 Arduino 串行通信移植到独立的 atmega328

标签 arduino usb serial-communication atmega

我在 Arduino2560 上完成了一个相当复杂的项目,我想将其移植到独立的 Atmega328 上。我的问题是,该项目中的一个功能是它可以通过串行与我的计算机进行通信(我编写了一个 C# 程序来在计算机端处理它,使用 COM3 端口)。然而,Arduino 使用 USB 通信作为虚拟串行端口,我对如何为 Atmega 做到这一点感到有点困惑。它有 RX-TX 线,但下一步是什么?也许使用一些串行 USB 转换器?最好的方法是什么?有什么需要注意的吗? 谢谢。

最佳答案

考虑到您提到计算机上的特定端口 COM3,我想我们可以假设您有一个 native RS-232 端口(其中一个带有我们习惯使用的 sub-D9 公头连接器)过去的日子,但现在不再那么常见了)。

如果是这样的话,那么您可以获得 RS232 level shifter 。您只需连接到 RX、TX、Vcc 和 GND,该设备就会更改 RS-232 voltage levels无论您的主板需要什么(最有可能是 5V 或 3.3V)。一些(也许是大多数)高端开发板包括这种电平转换器,因此也许检查一下您的开发板是否已经拥有它(如果您这样做,您可能会在某处看到MAX232 IC)。或者,如果你很狡猾,你也可以 DIY .

如果您更喜欢连接到 USB 端口(当然,它不会是 COM3,除非您明确更改 Windows 设备管理器上的配置),您可以使用 USB 转-串行适配器。在这方面,你有很多选择,从最便宜的(也许 5 美元)开始,但我宁愿选择基于 FTDI 芯片的芯片,该芯片如今相当普遍,并且已经证明了其可靠性。 This one是一个很好的例子,并且成本与电平转换器相同。

现在,使用 native RS-232 或 USB 适配器有什么区别吗?对于大多数实际目的来说,答案是否定的。如果您详细了解缓冲区大小等细节,则会存在差异,但如果您需要这样做,则需要研究这两种情况的详细信息,看看您拥有的端口(或您计划的端口)是否添加)满足您的需求。对于大多数情况,我会选择 USB,因为它随处可见(大多数笔记本电脑没有 native RS-232)。

以上所有内容(基于 RS-232 和/或 USB)都适用于长达 5 米(约 15 英尺)的 USB 电缆或 10 至 15 米(约 30-45 英尺)电缆。这对于大多数业余爱好者或家庭项目来说应该足够了。如果你想运行更长的电缆,你必须选择类似 RS-485 的电缆。 。

如果您现在选择 USB 适配器,并且您认为将来可能需要重新安置您的开发板,使其距离计算机超过 20 米(15 米 RS-232 + 5 米 USB),只需确保您的适配器包括一个 TX 使能信号 (TXEN)。大多数基于 FTDI 芯片的适配器都会在引脚上提供此信号(如我上面链接的那个),如果您想在两根电缆半双工总线上使用 RS-485,这将使您的生活变得更轻松。

编辑:根据下面的反馈,有值得快速更新的新信息。

首先,您的 PC 上没有老式 RS-232 端口,其次您必须设计微 Controller 端的连接。

考虑到这一点,很明显您必须采用 USB 解决方案。但您需要选择是将两侧都切换到 RS-232 电平还是保持 TTL。该决定再次取决于您的巴士长度。如果它真的很短(最多 2 米),那么您可以继续使用 TTL,否则为了安全起见,最好切换到 RS-232。有很多人会告诉您他们有更长的串行链路,但您永远不会知道它们的可靠性。

由于您必须设计电路板,我认为将 MAX232 和 sub D-9 连接器集成到那里并获得 cable 是有意义的。你提到你的电脑。

或者,您可以仅在板上添加一个连接器,并获取我上面链接的 Micro 一侧的 Sparkfun 电平转换器,以及用于您 PC 的相同 USB 转 RS-232。

关于arduino - 将 Arduino 串行通信移植到独立的 atmega328,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689212/

相关文章:

serial-port - WinCE与PC USB通讯

c++ - 为什么我的 Arduino 的计算速度比我的 MacBook air 快 0 到 10 亿?

Android USB与PC通讯

linux - USB key 插入时自动启动程序

Android USB 主机模式和附件模式

iphone - 将配件连接到我的越狱 iPhone 设备

embedded - SPI通信中CPOL/CPHA设置的使用

android - 通过 com 端口通过 USB 将 arduino 连接到 ANDROID 手机

c++ - Arduino 从 'char' 到 'char*' 的无效转换

php - 如何让我的 Arduino 只从 Web 服务器读取特定字符?