评论
|
我将 338 美元设置为 7。还是一样。 |
您使用 ST-Link 编程并可以设置断点吗? |
是的,我愿意。但是,我对调试并不熟悉。我可以试一试。 |
好的,很好。您应该使用调试版本进行调试,因为优化可能会通过重新排列代码而弄乱代码。 在btt_skr_2.0.c中,在第 518 行设置一个断点,该断点应该被命中多次。然后在第 255 行尝试一个。 您也可以尝试切换到 btt_skr_1.1.c 板支持代码,但这需要更改映射文件,因为 SPI 和 UART 引脚的定义不同。 |
我在两条线上都做了断点。它确实击中了他们。我尝试了 btt_skr_1.1.c 但我一直得到相同的结果。 |
你有什么样的TMC2209驱动程序?Fystec 还是 Watterott? |
这是Bigtreetech TMC2209-V1.2驱动板。它有 Trinamic TMC2209 芯片。 |
他们带有一个已经焊接到引脚 4 的跳线。这是 uC 上 UART 的 RX 引脚所在的位置。奇怪的是只有一个引脚(X 电机为 PE0)。虽然 2209 的数据表显示 2 个引脚,一个 RX 和一个 TX 通过电阻连接在一起,然后 RX 信号直接到 uC 引脚。 |
因为只有一根线。它必须要求半双工通信。 |
是的,我觉得有点奇怪,因为断点被触发后 UART 引脚上没有信号。这可能是由于电机从最高编号(通常是 Z)开始初始化 – 如果失败,则跳过其余部分。最好是通过将 $338 设置为 1 并检查 X 驱动程序 UART 引脚来仅启用 X。 |
试过 $338=1。没有什么变化。事实上,当我这样做时,我收到消息“无法与步进驱动器通信!”。我还注意到,如果我重置电路板,338 美元就会回到 7。 |
我已经使用btt_skr_2.0.c代码验证了与 F446 和单个 TMC2209 的驱动程序通信,因此我认为代码是好的。F429 似乎与 F407 非常相似,因此这应该不是问题。 有点奇怪的是,338 美元的设置在重置时恢复为 7,如果你改变另一个设置,比如 0 美元 = 5,它也会恢复吗? 可以注意到,在初始化 TMC 驱动程序之前,我必须向 LPC176x 驱动程序添加延迟(TMC2130 为 100 毫秒),想知道这是否也是一个问题,因为电机电源由 MCU 打开。如果是这样, |
奇怪的事情正在发生。我以前从来没有注意到这一点。每当我更改任何设置时,它们都会在重置后恢复原状。我重新加载了固件,然后使用 LaserGrbl 导入了我之前保存的所有设置,设置更改得很好,即使在重置后也保持不变。如果我之后尝试通过导入或手动更改再次更改它们,它们会在重置后恢复。 |
这是否适用于所有设置?我上面问的也是0美元吗?
您必须找出为什么即使实际上调用了代码,UART 引脚上也没有信号。如果您在此处设置断点,您可以单步执行发送的每个位并测量输出,即使使用电压表也是如此。如果没有任何东西到达驱动程序,则要么是代码有问题(很奇怪,因为它对我有用,但为了记录,我更改了 X 引脚,因为我测试过的 MCU 上没有 E 端口)或者引脚映射不是正确的。 代码的一个潜在问题是空的 while 循环,它们应该至少执行一条 NOP 指令——一些 ARM 处理器似乎不介意其他处理器这样做。 |
好的。通过您指出的断点,我注意到它正在与您怀疑的 Z 轴通信。我相信我无法更改设置的原因是因为 Lasergrbl 导入。重新加载固件后,我可以正常更改设置。然后我设置 $338=1,现在我在重置时看到 X 轴上的信号。但是,我不应该也看到 $338=7 的信号吗? |
如果 Z 或 Y 驱动程序没有响应则否,如果驱动程序没有响应,初始化序列将中止。从 X 轴开始,当 您可以通过拔下驱动程序并将 UART 引脚连接到 GND 和 3V3 来检查代码是否正在读取数据,并检查读取的数据(wdgr->data array)是否全为 0x00(GND)或全为 0xFF(3V3)。如果这没问题,那么继续找出驱动程序没有响应的原因。波特率错误或不一致?没有电机动力的驱动器(没有动力他们没有反应)…… |
看起来代码正在运行,您的驱动程序是否有问题,或者 F429 是否有某些必须以不同方式编码的内容? |
我编译了另一个版本的马林。它完美无瑕。与司机沟通。有来回的信号。查看驱动器上的信号,波特率似乎为 9600。而 GrblHal 发送的信号看起来至少快两倍。我所看到的只是一个信号,但没有返回。代码中某处指定了波特率吗?不幸的是,我无法在动态模式下控制激光。 |
这是指定范围的下限,来自数据表: 可以使用从 9600 波特到 500k 波特甚至更高的波特率(当使用外部时钟时)。无需配置波特率,因为 TMC2209 会自动适应主机的波特率。
这解释了错误消息。当我使用 F446 设置进行测试时,以及在我上面链接的问题中评论的用户,我发现代码有效,这很奇怪。
波特率在这里设置。 |
新版本已发布– 我希望现在修复了代码中的几个问题。我测试过的 F466 的波特率输出约为 100000。 |
我尝试了新版本,但它也不与驱动程序通信。我查看了 btt_skr_2.0.c,关于 TRINAMIC_ENABLE == 2209 的部分几乎消失了。所以我没有再尝试了。 |
两个版本的UART代码已经合并到tmc_uart.c中,TRINAMIC_ENABLE == 2209用于设置一个新的符号TMC_UART_ENABLE,用于保护代码。这样可以更轻松地添加新的驱动程序变体,而无需编辑低级数据交换代码,目前只有两个版本,SPI 和 UART。
我觉得有点奇怪@WellDone2094现在似乎可以与驱动程序通信而你不能,是因为他有 F407 变体以及 F407 和 F427 处理器对 UART 定时器的计时不同吗?仅供参考,我使用 F446 每 10 微秒测试一次输出。 |
正确的。我只能与 X 驱动程序通信。这是将 SWSBAUDRATE 设置为 25000。这使得最小脉冲为 40 微秒。这只有 $338=1。 |
使用默认波特率的 $331=1 是否会产生来自驱动程序的任何响应?
到包含您要使用的端口和引脚的映射文件。生成的脉冲应位于来自驱动器的数据脉冲的中心。在第 288 行设置断点以在读取驱动程序的第一个回复后停止。在此断点处,您还可以检查 并请检查子模块是否是最新的。 |
好的。在执行您的建议之前,我再次下载了整个更新的模块和子模块。现在情况不同了。使用所有默认值。我仍然收到 Could not communicate with driver 错误。$338=3 M122 给我: 使用 $338=7 我得到 Could not communicate 错误。所以,我认为它只能与 2 个驱动程序通信。 |
$338=4 你在 Z UART 引脚上得到任何信号吗? |
在我设置 $338=4 的那一刻,我在 Z 上看到一个短信号,并且收到无法与驱动程序通信错误。M122 给出相同的错误,但在任何驱动程序上都没有任何信号。 |
使用 M122 II 获得相同的短信号(大约 448 微秒,波特率 100K)。司机没有回应。此外,它似乎没有 OK 响应就挂断了。 |
哎哟 – 这是一个错误,当 X 轴未启用时出现,它会使控制器崩溃。我会解决的。 你的信号很奇怪,发送请求后它被拉低到大约 1V – 通过什么?如果你拔下驱动程序,你会得到同样的结果吗?如果你换另一个司机也一样吗?如果我拔下驱动器,我只会得到 3.3V – 100mV 左右的电压轻微下降。 |
好的,当没有施加电机电源时,我和你一样。没有电机电源,Trinamic 驱动程序不会响应! |
施加电源 |
OK, is the driver defective then? Swap drivers or test without it beeing inserted. |
我使用 TRINAMIC_ENABLE 2209 在我的 bigtreetech SKR2 板上启用了 trinamic 驱动程序。它似乎可以工作,因为我获得了更多设置,例如 $140 $150。然而,当我尝试 M122 时,我收到消息:“无法与步进驱动器通信!”。我只想设置微步。如果我读到 150 美元,我得到 16。但是,电机移动时好像有 8 个微步。尝试将 $150 设置为另一个值不起作用。我一直是 16。如 SKR2 用户指南中所述,我在 UART 信号上只有一个跳线。如果我将示波器连接到驱动器 (UART) 上的引脚 4,我看不到任何信号。我必须定义其他一些符号吗?