开源改变世界

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

推推 grbl 3年前 (2023-02-08) 241次浏览
关闭
acaballero6270 打开了这个问题 2022 年 2 月 1 日 · 39条评论
关闭

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

acaballero6270 打开了这个问题 2022 年 2 月 1 日 · 39条评论

评论

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

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

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

我必须定义其他一些符号吗?

338 美元

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

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

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

您使用 ST-Link 编程并可以设置断点吗?

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

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

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

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

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

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

无法与步进驱动器通信! #59
作者
acaballero6270 评论了 2022 年 2 月 2 日  

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

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

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

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

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

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

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

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

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

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

它必须要求半双工通信。

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

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

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

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

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

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

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

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

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

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

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

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

M122I 命令也给出错误。

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

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

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

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

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

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

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

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

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

看起来代码正在运行,您的驱动程序是否有问题,或者 F429 是否有某些必须以不同方式编码的内容?

无法与步进驱动器通信! #59
作者
acaballero6270 评论了 2022 年 2 月 8 日  

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

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

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

这是指定范围的下限,来自数据表:

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

我所看到的只是一个信号,但没有返回。

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

代码中某处指定了波特率吗?

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

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

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

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

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

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

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

轴数在哪里定义的?

grbl/config.h 中

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

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

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

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

使用默认波特率的 $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

好的。在执行您的建议之前,我再次下载了整个更新的模块和子模块。现在情况不同了。使用所有默认值。我仍然收到 Could not communicate with driver 错误。$338=3 M122 给我:
M122
[TRINAMIC]
XY
Driver TMC2209 TMC2209
Set current 500 500
RMS current 489 489
Peak current 691 691
Run current 15/31 15/31
Hold current 7/31 7/31
CS actual 7/31 7 /31
PWM 比例 9 9
vsense 1=0.180 1=0.180
stealthChop true true
msteps 16 16
tstep 1048575 1048575
pwm
threshold 0 0
[mm/s] 0 0
OT prewarn false false
OT prewarn has
been triggered false false
off time 3 3
blank time 1 1
hysteresis
-end -1 -1
-start 1 1
Stallguard thrs 0 0
驱动器状态:
stallguard
sg_result 2 0
fsactive
stst * *
olb
ola
s2gb
s2ga
otpw
ot
状态寄存器:
X = 0xC0:07:00:00
Y = 0xC0:07:00:00
ok

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

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

$338=4 你在 Z UART 引脚上得到任何信号吗?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

好的,当没有施加电机电源时,我和你一样。没有电机电源,Trinamic 驱动程序不会响应!

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

施加电源

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

OK, is the driver defective then? Swap drivers or test without it beeing inserted.

喜欢 (0)