开源改变世界!!

无法与步进驱动器通信! #59

推推 grbl 2年前 (2022-10-23) 751次浏览 0个评论

关闭
acaballero6270打开了这个问题 on 1 Feb· 39 条评论
关闭

无法与步进驱动器通信!#59

acaballero6270打开了这个问题 on 1 Feb· 39 条评论

注释

无法与步进驱动器通信! #59

我使用 TRINAMIC_ENABLE 2209 在我的 bigtreetech SKR2 板上启用了 trinamic 驱动程序。当我获得更多设置(如 140 美元 150 美元)时,它似乎可以工作。但是,当我尝试 M122 时,我收到消息:“无法与步进驱动器通信!”。我只想设置微步。如果我读到 150 美元,我得到 16。但是,电机的运动就像它有 8 个微步一样。尝试将 $150 设置为另一个值不起作用。我一直得到 16。如 SKR2 用户指南中所述,我在 UART 信号上只有一个跳线。如果我将示波器连接到驱动程序 (UART) 上的引脚 4,我看不到任何信号。我必须定义其他符号吗?

无法与步进驱动器通信! #59
贡献者

特热约 评论 on 1 Feb

我必须定义其他符号吗?

338 美元

无法与步进驱动器通信! #59
作者

acaballero6270 评论 on 1 Feb

我将 338 美元设置为 7。还是一样。

无法与步进驱动器通信! #59
贡献者

特热约 评论 on 1 Feb

您是否使用 ST-Link 进行编程并且可以设置断点?

无法与步进驱动器通信! #59
作者

acaballero6270 评论 on 2 Feb

是的,我愿意。但是,我对调试并不熟悉。我可以试一试。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月2日

好的,很好。您应该使用调试版本进行调试,因为优化可能会通过重新排列代码来弄乱代码。

btt_skr_2.0.c中,在第 518 行设置断点,应该多次命中。然后在第 255 行尝试一个。

您也可以尝试切换到 btt_skr_1.1.c 板支持代码,但这需要更改映射文件,因为 SPI 和 UART 引脚的定义不同。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月2日  

我在两条线上都做了断点。它确实击中了他们。我尝试了 btt_skr_1.1.c 但我一直得到相同的结果。
但是,我加载了原厂马林固件,虽然它似乎接受了 M122 命令。我注意到最后它给出了“TMC CONNECTION ERROR”消息。此外,即使它显示为 16 的微步。电机的行为为 8 微步。此外,它不会让我改变它保持读数为 16 的微步。我将示波器连接到电机驱动器的 UART 引脚,我可以看到一个信号。
因此,如果原始固件也不起作用,则可能是电路板本身存在问题。
另一方面,使用 MS1 和 MS2 的跳线,我可以配置微步。所以,我可以这样工作。
如果你想让我尝试别的东西,请告诉我,我很乐意这样做。
问候

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月2日

你有什么样的TMC2209驱动?Fystec 还是 Watterott?
我必须在用于分线板的 Watterot 驱动器上焊接一个桥…

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月2日

这是 Bigtreetech TMC2209-V1.2 驱动板。它有 Trinamic TMC2209 芯片。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月2日

他们带有一个已经焊接到引脚 4 的跳线。这是 uC 上 UART 的 RX 引脚所在的位置。奇怪的是只有一个引脚(X电机的PE0)。虽然 2209 的数据表显示 2 个引脚,一个 RX 和一个 TX 通过一个电阻连接在一起,然后 RX 信号直接连接到 uC 引脚。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月3日

因为只有一根线。它必须需要半双工通信。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月3日

它必须需要半双工通信。

是的,我觉得有点奇怪,因为断点被触发,UART 引脚上没有信号。这可能是由于从最高编号(通常是 Z)初始化的电机 – 如果失败,则跳过其余部分。最好是通过将 $338 设置为 1 并检查 X 驱动 UART 引脚来仅启用 X。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月4日

试过 338 美元=1。没有什么变化。事实上,当我这样做时,我收到消息“无法与步进驱动程序通信!”。我还注意到,如果我重置板,338 美元又回到 7。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月5日

我已经使用btt_skr_2.0.c代码验证了与 F446 和单个 TMC2209 的驱动程序通信,所以我认为代码是好的。F429 似乎与 F407 足够相似,因此这应该不是问题。

有点奇怪,338 美元的设置在重置时恢复为 7,如果你改变另一个设置,比如 0 = 5,它也会恢复吗?

可以注意到,在初始化 TMC 驱动程序之前,我必须向 LPC176x 驱动程序添加延迟(TMC2130 为 100 毫秒),想知道这是否也可能是一个问题,因为电机电源是由 MCU 开启的。如果是这样,一个M122I命令会尝试重新初始化驱动程序。仅供参考,您也可以在检查 UART 信号时使用此命令。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月6日

奇怪的事情正在发生。我以前从未注意到这一点。每当我更改任何设置时,它们都会在重置后恢复。我重新加载了固件,然后使用 LaserGrbl 导入我之前保存的所有设置,设置更改得很好,即使在重置后仍然存在。如果我尝试通过导入或手动更改再次更改它们,它们会在重置后恢复。
M122I 命令也会出错。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月6日

如果我尝试通过导入或手动更改再次更改它们,它们会在重置后恢复。

这适用于所有设置吗?正如我上面所问的,也是 0 美元?

M122I 命令也会出错。

即使实际上调用了代码,您也必须找出为什么 UART 引脚上没有信号。如果您在此处设置断点,您可以单步执行发送的每个位并测量输出,即使使用电压表也是如此。如果没有任何东西到达驱动程序,则代码有问题(奇怪,因为它对我有效,但为了记录,我更改了 X 引脚,因为我测试的 MCU 上没有 E 端口)或引脚映射不是正确的。

代码的一个潜在问题是空的 while 循环,它们应该至少执行一条 NOP 指令——一些 ARM 处理器似乎不介意其他处理器这样做。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月6日

好的。通过您指示的断点,我注意到它正在与您怀疑的 Z 轴对话。我相信我无法更改设置的原因是因为 Lasergrbl 导入。重新加载固件后,我可以正常更改设置。然后我设置 $338=1,现在我在重置时在 X 轴上看到一个信号。但是,我不应该也看到 $338=7 的信号吗?

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月6日

但是,我不应该也看到 $338=7 的信号吗?

如果 Z 或 Y 驱动程序没有响应,则为否,如果驱动程序没有响应,则初始化序列中止。从 X 轴开始,当M122响应驱动程序信息时,您可以一次添加更多驱动程序。

您可以通过拔下驱动程序并将 UART 引脚连接到 GND 和 3V3 来检查代码是否正在读取数据,并检查读取的数据(wdgr->data array) 是否全为 0x00 (GND) 或全为 0xFF (3V3)。如果这没问题,那么继续找出驱动程序没有响应的原因。波特率不好或不一致?没有电机电源的驱动器(如果没有电源,它们不会响应)…

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月7日

看起来代码正在运行,您是否有错误的驱动程序,或者 F429 是否有一些必须以不同方式编码的东西?

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月8日  

我编译了另一个版本的 Marlin。它完美无缺。与司机沟通。来回有信号。查看驱动器上的信号,它似乎是 9600 波特。而 GrblHal 发送的信号看起来至少快两倍。我能看到的只是一个信号,但没有任何回复。波特率是否在代码中的某处指定?不幸的是,我无法在动态模式下控制激光。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月8日

来回有信号。查看驱动器上的信号,它似乎是 9600 波特。

这是数据表中指定范围的下限:

可以使用从 9600 波特到 500k 波特甚至更高的波特率(使用外部时钟时)。无需配置波特率,因为 TMC2209 会自动适应主机的波特率。

我能看到的只是一个信号,但没有任何回复。

这解释了错误消息。当我使用我的 F446 设置进行测试时,我发现代码可以正常工作,并且对于在我上面链接到的问题中评论的用户来说,我觉得很奇怪。
难道是用于波特率生成的定时器中断没有正常运行,可能是由于空的while循环?也许我们应该比较第一笔交易的波形,我可以拍下我得到的东西。

波特率是否在代码中的某处指定?

波特率在这里设置。
仅供参考,对于我的 Morpho 板,我使用波特率设置为230400的硬件 UART,并且对此没有任何问题…

无法与步进驱动器通信! #59
贡献者

特热约 评论 2 月 9 日

新版本已经发布– 我希望现在已经修复了代码的几个问题。我测试过的 F466 的波特率输出约为 100000。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月10日

我尝试了新版本,但它也不与驱动程序通信。我查看了 btt_skr_2.0.c 并且 TRINAMIC_ENABLE == 2209 的部分大部分都消失了。所以我没有再尝试了。
使用以前的版本,我设法通过将 btt_skr_2.0.c 第 135 行中的 SWS_BAUDRATE 更改为 25000 来使 X 驱动程序工作。50​​000 也可以工作。还必须设置 $338=1。其他值不起作用。轴数在哪里定义?

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月10日

两个版本的 UART 代码已合并到tmc_uart.c 中TRINAMIC_ENABLE == 2209 用于设置用于保护代码的新符号 TMC_UART_ENABLE。这样可以更轻松地添加新的驱动程序变体,而无需编辑当前只有两个版本的低级数据交换代码,即 SPI 和 UART。

轴数在哪里定义?

grbl/config.h 中

我觉得有点奇怪@WellDone2094现在似乎能够与驱动程序进行通信,而您却不能,是因为他拥有 F407 变体以及 F407 和 F427 处理器对 UART 计时器的计时不同吗?仅供参考,我用于每 10 微秒测试一次输出的 F446。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月11日

正确的。我只能与 X 驱动程序通信。即 SWSBAUDRATE 设置为 25000。这使得最小脉冲为 40 微秒。这仅适用于 $338=1。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月11日

使用默认波特率的 $331=1 是否会从驱动程序产生任何响应?
$338=2 是否向 Y 驱动程序提供输出?
可以在引脚上输出脉冲以检查接收采样发生的位置。为此,您需要示波器上有两个通道,定义一个辅助输出引脚并取消注释tmc_uart.c中的第 170 行和第 194 行。
添加

#define HAS_IOPORTS
#define AUXOUTPUT0_PORT         GPIOB
#define AUXOUTPUT0_PIN          15

到带有您要使用的端口和引脚的映射文件。产生的脉冲应该在来自驱动器的数据脉冲的中心。在第 288 行设置断点以在读取驱动程序的第一个回复后停止。在此断点处,您还可以检查driver.id和 对应active_uart的是否正确。

检查子模块是否是最新的

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月11日

好的。在我提出您的建议之前,我再次下载了整个更新的模块和子模块。现在情况不同了。使用所有默认值。我仍然收到无法与驱动程序通信错误。338 美元 = 3 M122 给我:
M122
[TRINAMIC]
XY
驱动器 TMC2209 TMC2209
设置电流 500 500
RMS 电流 489 489
峰值电流 691 691
运行电流 15/31 15/31
保持电流 7/31 7/31
CS 实际 7/31 7 /31
PWM 比例 9 9
vsense 1=0.180 1=
0.180stealthChop true true
msteps 16 16
tstep 1048575 1048575
pwm
阈值 0 0
[mm/s] 0 0
OT prewarn false false
OT prewarn has
被触发 false false
off time 3 3
blank time 1 1
hysteresis
-end -1 -1
-start 1 1
Stallguard thrs 0 0
DRIVER STATUS:
stallguard
sg_result 2 0
fsactive
stst * *
olb
ola
s2gb
s2ga
otpw
ot
STATUS REGISTERS:
X = 0xC0 :07:00:00
Y = 0xC0:07:00:00
好的

使用 $338=7 我得到无法通信错误。所以,我认为它只能与 2 个驱动程序通信。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月11日

使用 $338=4,您在 Z UART 引脚上得到任何信号吗?

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

在我设置 $338=4 的那一刻,我在 Z 上看到一个短信号,我得到了无法与驱动程序通信错误。M122 给出相同的错误,但在任何驱动程序上都没有信号。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月12日

这是我从第一条消息中得到的信息,前 0.4 毫秒是请求,其余的是响应。您必须M122I尝试重新初始化驱动程序,M122只会重复错误消息而不会发生任何传输。并且$338=4只有 Z 驱动程序被初始化。

无法与步进驱动器通信! #59

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

使用 M122 II 获得相同的短信号(约 448 微秒,100K 波特率)。司机没有回应。此外,它似乎挂断了没有 OK 响应。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

附图片
无法与步进驱动器通信! #59

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月12日

此外,它似乎挂断了没有 OK 响应。

哎哟 – 这是一个在未启用 X 轴时出现的错误,它会使控制器崩溃。我会解决的。

您的信号很奇怪,在发送请求后它被拉低到大约 1V – 由什么?如果你拔掉驱动程序,你会得到同样的结果吗?如果你换另一个驱动程序也是一样的?如果我拔掉驱动器,我只会得到 3.3V – 100mV 左右的电压小幅下降。

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月12日

好的,当没有施加电机电源时,我的情况和你一样。Trinamic 驱动器在没有电机电源的情况下不会响应!

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

通电

无法与步进驱动器通信! #59
贡献者

特热约 评论 2月12日

好的,那驱动程序有问题吗?在没有插入的情况下交换驱动程序或测试。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

这种看似奇怪的电压电平通常发生在设置为开漏的输出中。没有上拉或下拉。在发射信号之后,它会在短时间内保持这种状态。我已经交换了驱动程序

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

而你的怀疑是正确的!我再次更改了驱动程序,现在一切正常!!!即使它是开箱即用的新驱动程序,也是坏驱动程序。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

我相信这解决了我的司机沟通问题。非常感谢你所做的一切。

无法与步进驱动器通信! #59
作者

acaballero6270 评论 2月12日

感谢您一直以来的支持。我相信 GrblHal 会成功的。

免费注册 在 GitHub 上加入这个对话。已经有一个帐户? 登录以发表评论
标签
还没有
项目

还没有

发展

没有分支或拉取请求

2名参与者
无法与步进驱动器通信! #59无法与步进驱动器通信! #59

喜欢 (0)

您必须 登录 才能发表评论!