UART上的神秘RX脉冲在OS X Arduino Due上连接


14

Arduino IDE 1.6.8,Arduino Due,Mac OS 10.11.3

当我使用多个客户端库(Python,JavaScript以及IDE中的内置串行监视器)连接到串行端口时,在RX线上看到八个神秘的脉冲。大约每个78-79us,使用Logic Pro 16以1MS / s的速度采样。

神秘的脉冲

当以57600波特解释时,这八个脉冲将卡住Firmata固件。它们发生在每个连接上。

这是使用新安装的Arduino 1.6.8 IDE并带有多个草图(正常的“ Blink”草图也会重现此草图)。

我机器上的Repro步骤:

  1. 安装任何草图
  2. 如果要捕获它,请启动逻辑分析仪
  3. 转到串行监视器。我为57600波特配置了我的代码,换行符结束,但这没关系
  4. 如果需要,请关闭并重复步骤3
  5. 每次连接到串行端口时注意脉冲

有任何诊断建议吗?在某种程度上,这听起来像是串行驱动程序级别的。


1
不管它来自何处,都可以通过指出正在运行的固件中的严重错误来帮助您,这应该无法将其置于无法恢复的状态。它是程序逻辑错误,还是UART处理代码未正确处理错误标志?
克里斯·斯特拉顿

1
在跟踪源方面,尝试使用另一个串行客户端程序,另一个计算机/操作系统,另一个USB串行设备等将很有帮助
克里斯·斯特拉顿

1
至于尝试其他串行程序,有多个库与Firmata协议交互,并使用表现出相同行为的不同底层串行实现(Python,JavaScript和内置的Arduino IDE串行监视器)。我的下一个计划是在Linux机器上尝试此操作,看看是否出现相同的行为,如果这是特定于OS X的,则有望隔离。
布莱克·兰斯黛尔

2
断开连接时,您还会得到一个。连接波特率对脉冲长度没有影响。我怀疑是ATMega16U2的固件正在执行此操作(或任何版本的任何芯片)。
Majenko

1
启动串行监视器时,软件将重置arduino模块。如果arduino模块中具有引导加载程序,我认为这些是STK500协议信号。
MertGülsoy17年

Answers:


1

短:

查看ATMEGA16U2固件(https://github.com/arduino/ArduinoCore-sam/blob/master/firmwares/atmega16u2/arduino-usbserial/Arduino-usbserial.c)我发现,当您配置/更改USB仿真的串行端口,USART被重置。即使打开Arduino串行监视器(必须配置串行速度等),也会发生这种情况。这会导致您的峰值。

长:

看一下功能:

void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)

在那里,您会看到几行之后,它通过将其寄存器清零来重置USART:

/* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
    UCSR1B = 0;
    UCSR1A = 0;
    UCSR1C = 0;

在当前ATMEGA16U2数据表的第168页上,您会发现通过设置UCSR1B的第3位(TXEN1),可以使能发送器,从而覆盖正常的端口操作(即,它变为输出)。引用数据表:

将该位写为1将启用USART发送器。使能后,发送器将覆盖TxDn引脚的正常端口操作。发送器的禁用(将TXENn写入零)在正在进行的和挂起的发送完成之前(即,当发送移位寄存器和发送缓冲寄存器不包含要发送的数据时)将不会生效。禁用后,发送器将不再覆盖TxDn端口。

因此,通过写操作,UCSR1B = 0;您将不再覆盖将用作输入的TXD1引脚。

ATMEGA16U2 TXD连接到ATSAM3X8E的RX线。在正常工作中,在启用UART的情况下,如果没有数据传输,则该线将保持高电平。如果禁用UART,则该特定行将不再是驱动程序为1。由于初始化代码未在该引脚上设置上拉电阻(并且两者均未配置为输出),因此该引脚将变为浮空输入,并且将有任何泄漏到该引脚。 GND或什至探头的输入阻抗(在您的引脚和GND之间)将使逻辑电平缓慢变为0。

要解决此问题,您应该:1)修改ATMEGA16U2固件,方法是将该PIN设置为OUTPUT,值为1。2)修改ATMEGA16U2固件,通过使能该引脚的上拉功能。3)(建议)在ATSAM3X8E的RX线上启用上拉。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.