评论
确实如此,特别是对于 USB 通信 – 提供给 USB 外围设备的时钟必须在公差范围内。 时钟树在main.c中设置- 如果更改 HSE_VALUE 无济于事,其他值可能也需要更改。 |
btt_skr_2_tmc2130 具有相同的 uC 和 HSE_VALUE (8MHz)。 我相信这是使用 HSE_VALUE 的代码:
在ArduinoStm32 core中找到一个公式:
并使用 HSE_VALUE 进行计算。 我正在运行眨眼 1 秒,接缝就可以了。 仍然停留在 PC 和设备上的操作系统之间没有枚举。 |
看来时钟树配置是正确的。 然而,查看原理图第 8 页:似乎 PA14/USB_CTRL 必须拉低(或拉高?)才能启用 USB? 请注意,PA14 必须重新分配,因为它在复位时默认为 SW_CLK(用于编程/调试)。似乎必须禁用 JTAG-DP 和 SW-DP 才能将其用作输出。这可以通过为PA14选择AF0来完成吗? |
这也是我的担忧。 并且我在 main.c 中的 MX_GPIO_Init 之后对更新 PA14 特性进行了修改。 像这样:
仍然是 ArduinoStm32 示例,可以毫不费力地工作。 |
您可以在两种情况下(Arduino 和 grblHAL)测量 D+/R40 上的电压吗? 仅供参考,上次我用 F411 检查 USB 通信没问题 – 可以再次检查以确定。 |
我希望,我能做到这周末。我已经把整个装备搬到了车间。 |
既然你提到你删除了原来的引导加载程序,你现在通过 STLink 上传吗? 我想知道它是否适用于以下情况
(我还没有研究过这个板上的 EEPROM 东西是如何处理的,或者 grblHAL 对它有什么样的支持) ..并对https://github.com/grblHAL/STM32F4xx/blob/master/Src/main.c#L42进行修改以使其读取:
在链接描述文件的正下方,有一个如下所示的块:
这会将复位向量放在闪存的起始位置,正好是 CPU 在复位后开始执行的位置。 您可以验证它实际上以 0x8000000 结尾:
(同样有趣的是: 假设可行,那么您应该能够在设置时钟和 GPIO 后切换 LED:https ://github.com/grblHAL/STM32F4xx/blob/master/Src/main.c#L42 如果这也有效,那么也许您可以尝试在 我没有仔细阅读此线程,所以也许您已经完成了所有这些并且只是卡在 USB 已关闭? 如果是这样,我有一个模糊的记忆,试图在其他板(BigTreeTech SKR 之一)上将 PA14 设置为零(不是一个)——但我不记得这是否为我解决了 USB 问题。您的代码看起来与我使用的代码相似,所以我想这应该只是更改为 你有这个板子的完整管脚映射文件和驱动文件吗? |
已将 .ld 脚本修改为:
并尝试了 OneLED 调试魔法,但必须使其在逻辑上更加一致。 程序在某个时候运行以点亮 LED,这是我要解决的第一点。 |
作为记录: objdump -h firmware.elf
firmware.elf: file format elf32-little
Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 00000188 08000000 08000000 00010000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 00016658 08000190 08000190 00010190 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .rodata 000065c0 080167e8 080167e8 000267e8 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .ARM.extab 00000000 0801cda8 0801cda8 00030440 2**0
CONTENTS
4 .ARM 00000008 0801cda8 0801cda8 0002cda8 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .preinit_array 00000000 0801cdb0 0801cdb0 00030440 2**0
CONTENTS, ALLOC, LOAD, DATA
6 .init_array 00000004 0801cdb0 0801cdb0 0002cdb0 2**2
CONTENTS, ALLOC, LOAD, DATA
7 .fini_array 00000004 0801cdb4 0801cdb4 0002cdb4 2**2
CONTENTS, ALLOC, LOAD, DATA
8 .data 00000440 20000000 0801cdb8 00030000 2**2
CONTENTS, ALLOC, LOAD, DATA
9 .bss 00004628 20000440 0801d1f8 00030440 2**2
ALLOC
10 ._user_heap_stack 00004000 20004a68 0801d1f8 00034a68 2**0
ALLOC
11 .ARM.attributes 0000002a 00000000 00000000 00030440 2**0
CONTENTS, READONLY
12 .comment 0000007e 00000000 00000000 0003046a 2**0
CONTENTS, READONLY
13 .debug_frame 000014d8 00000000 00000000 000304e8 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
|
USB 通讯与我的基于 411 的 Blackpill 没问题。 你有 UART <> USB breakout 可用吗?如果禁用 USB 通信,您可以将一个连接到 WiFi RX/TX 引脚以检查 grblHAL 是否存在。 |
目前的发展:
我现在将投入时间在正确的 GPIO 映射和测试设施上。 顺便说一句,刚刚意识到 3d 打印机板是非常好的开发板;) |
刚刚将初步工作版本推送到https://github.com/qbazd/STM32F4xx/tree/mks_robin_nano_v3_0 除了一个错误:
我了解问题的概要。但我还没有想好。 |
它说您不能同时在 PA14 和 PB14 上进行中断,因为给定引脚号的外部中断线在所有 GPIO 端口之间共享。 |
知道了,完成了,Tnx |
你好,
我有板 MKS-Robin-Nano-V3.0 ( https://github.com/makerbase-mks/MKS-Robin-Nano-V3.X ) 躺在周围并试图将 grblHAL 移植到它。我有几个 CNC 机器想将他们的设置统一到 OpenSource 工具集。
现在使用 BluePil F103,但设置有些不完整。
我试图将我的工作基于 btt_skr_2_tmc2130(相同的 uC)。
我对开发的修改是:
我坚持使用 USB CDC – 开始枚举,通信是正确的。
我的方法是首先用其他代码的 very hello world 示例进行测试。
我已经使用 stm32 arduino 成功制作并上传了 USB CDC 示例(板必须没问题)。
但我在 Platformio+CubeMX 上做同样的事情失败了。
由于我在低级别 ARM 方面的经验目前在我的遗愿清单上。
我的问题是:如何开始克服这个问题并开始朝着正确的方向挖掘?
我觉得时钟启动和外设设置在这里起着关键作用。;)
祝你一切
顺利