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

时间:2019-06-20 15:21:45

标签: arduino usb serial-communication atmega

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

1 个答案:

答案 0 :(得分:2)

考虑到您提到计算机上的特定端口COM3,我想我们可以假设您有一个本机RS-232端口(其中一个带有我们过去曾经使用过的D9型公连接器)但现在已经不那么普遍了。

如果是这种情况,那么您可以获得RS232 level shifter。您只需要建立与RX,TX,Vcc和GND的连接,此设备即可将RS-232 voltage levels更改为您的电路板要求的电压(很可能是5V或3.3V)。一些(也许是大多数)高端开发板都包含这种电平转换器,因此,如果您已经拥有它,请进行检查(如果这样做,您可能会在某处看到MAX232 IC)。或者,如果您很狡猾,也可以DIY

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

现在,使用本机RS-232或USB适配器有什么区别?对于大多数实际目的,答案是不。如果您要查看详细信息(例如缓冲区大小),则会有所不同,但是如果您需要去那里,则需要在两种情况下都研究详细信息,以查看您是否拥有该端口(或您正在计划的端口)添加)满足您的需求。对于大多数情况,我会选择USB,只是因为到处都有USB(大多数笔记本电脑没有本机RS-232)。

以上所有(基于RS-232和/或USB)对于USB最长5米(〜15英尺)或10至15米(〜30-45英尺)的电缆都可以正常工作。对于大多数业余爱好者或家庭项目而言,这应该足够了。如果要使用更长的电缆,则必须使用类似RS-485的电缆。

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

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

首先,您的PC上没有老式的RS-232端口,其次,您必须在微控制器一侧设计连接。

考虑到这一点,显然您必须使用USB解决方案。但是,您需要选择是否将两侧都切换到RS-232电平,还是保持在TTL。该决定再次取决于您的公交车长度。如果真的很短(最长2米),则可以保持TTL,否则最好转为RS-232以便安全。有很多人会告诉您它们具有更长的串行链接,但是您永远不会知道它们的可靠性。

由于您必须设计电路板,所以我认为将MAX232和一个D-9子连接器集成在那里并获得您在PC上提到的cable是有意义的。

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