适用芯片与资料版本
跳转到“适用芯片与资料版本”本文讨论 TMC4361A 的启动同步与影子斜坡参数,依据 ADI 发布的 TMC4361A 数据手册 V1.26,2020-08-03第 9 章、19.3 节和 19.22 节核对。芯片修订和手册版本必须对应,不能把 TMC4361、TMC4361A 或其他控制器的位定义混用。
这里整理寄存器关系和配置过程,没有提供已经在具体电机、驱动器和机械机构上验证的运动参数。
一条启动链路中有三个不同概念
跳转到“一条启动链路中有三个不同概念”- 触发来源:外部 START 引脚,或
TARGET_REACHED、VELOCITY_REACHED、POSCOMP_REACHED等内部事件。 - 内部启动信号:触发来源经过所配置的延迟和处理后,形成实际用于同步的信号。
- 信号要执行的动作:使延后写入的目标或速度生效、转移影子参数,或者推动目标/参数流水线。
因此,选择触发源不等于启用影子寄存器,启用影子寄存器也不等于已经产生了一次触发。还要分清影子斜坡参数 SH_REGx 和目标/参数流水线 X_PIPEx。
原始截图涉及的寄存器整理如下:
| 寄存器 | 地址 | 含义 |
|---|---|---|
START_CONF | 0x02 | 启动来源、使能、极性与流水线配置 |
START_OUT_ADD | 0x11 | START 输出有效时间的附加时钟数 |
START_DELAY | 0x13 | 触发到内部启动信号之间的延迟时钟数 |
X_PIPE0…7 | 0x38…0x3F | 目标位置或其他已选择参数的流水线 |
SH_REG0…13 | 0x40…0x4D | 共 14 个可用影子寄存器,具体使用方式取决于选项 |
原图和手册概览表写到 SH_REG0…12,但 V1.26 的 19.22 节完整寄存器表还列出 SH_REG13=0x4D。单级完整参数选项用 13 个寄存器;双级选项用两组各 7 个,共 14 个。两种数量不能混为一谈。

START_CONF 字段速查
跳转到“START_CONF 字段速查”以下位号均指 START_CONF 的实际位位置。start_en(4) 表示 start_en 字段中的第 4 位,此字段从 bit 0 开始,因此对应整个寄存器的 bit 4,不是把整个 start_en 字段写成数值 4。
| 位 | 字段 | 用途 |
|---|---|---|
| 0 | start_en(0) | XTARGET 的改变等待内部启动信号 |
| 1 | start_en(1) | VMAX 的改变等待内部启动信号 |
| 2 | start_en(2) | RAMPMODE 的改变等待内部启动信号 |
| 3 | start_en(3) | GEAR_RATIO 的改变等待内部启动信号 |
| 4 | start_en(4) | 启用影子参数转移 |
| 5 | trigger_events(0) | 启用外部 START 输入;为 0 时引脚按内部启动输出用途配置 |
| 6 | trigger_events(1) | 选择 TARGET_REACHED 触发 |
| 7 | trigger_events(2) | 选择 VELOCITY_REACHED 触发 |
| 8 | trigger_events(3) | 选择 POSCOMP_REACHED 触发 |
| 9 | pol_start_signal | 0 为低有效,1 为高有效 |
| 10 | immediate_start_in | 外部 START 是否绕过配置的延迟立即执行 |
| 11 | busy_state_en | START 忙状态同步机制;需配合引脚方向和板级电气设计 |
| 15:12 | pipeline_en | 位序依次选择 XTARGET、POSCOMP、GEAR_RATIO、GENERAL_CONF 流水线 |
| 17:16 | shadow_option | 选择下文四种影子映射 |
| 18 | cyclic_shadow_regs | 将当前工作参数写回相应影子级 |
| 19 | 保留 | 写 0 |
| 23:20 | SHADOW_MISS_CNT | 两次影子转移之间跳过的内部启动信号数 |
| 31:24 | XPIPE_REWRITE_REG | 控制已选择流水线参数写回哪些 X_PIPEx |
四个 trigger_events 位全为 0 时,不生成或继续处理启动信号。外部 START 输入还受输入滤波影响;不能仅根据 GPIO 波形就假定内部已产生有效启动。
截图中的 XPIPE_REWRITE_REG 示例也可转成文字:pipeline_en=0011 选择 XTARGET 和 POSCOMP,XPIPE_REWRITE_REG=01000010 选择写回位置,示例把二者分别写回 X_PIPE1 与 X_PIPE6。这是参数流水线功能,不是双级影子参数的索引。

四种影子参数映射
跳转到“四种影子参数映射”单级完整参数:shadow_option = 00
跳转到“单级完整参数:shadow_option = 00”每次有效影子转移把一组参数加载到工作寄存器。该选项使用 13 项,不是原稿所写的 14 项。
| 影子寄存器 | 地址 | 工作寄存器 | 地址 |
|---|---|---|---|
SH_REG0 | 0x40 | VMAX | 0x24 |
SH_REG1 | 0x41 | AMAX | 0x28 |
SH_REG2 | 0x42 | DMAX | 0x29 |
SH_REG3 | 0x43 | ASTART | 0x2A |
SH_REG4 | 0x44 | DFINAL | 0x2B |
SH_REG5 | 0x45 | VBREAK | 0x27 |
SH_REG6 | 0x46 | VSTART | 0x25 |
SH_REG7 | 0x47 | VSTOP | 0x26 |
SH_REG8 | 0x48 | BOW1 | 0x2D |
SH_REG9 | 0x49 | BOW2 | 0x2E |
SH_REG10 | 0x4A | BOW3 | 0x2F |
SH_REG11 | 0x4B | BOW4 | 0x30 |
SH_REG12 | 0x4C | RAMPMODE | 0x20 |
cyclic_shadow_regs=1 时,转移前的工作参数同时写回这组影子寄存器,可以在两组配置之间交换。
双级映射:shadow_option = 01、10、11
跳转到“双级映射:shadow_option = 01、10、11”三种双级选项使用相同的两级组织形式,但第一组对应的工作参数不同:
| 第一影子级 | 第二影子级 | 01:S 形 | 10:梯形含 VSTART | 11:梯形含 VSTOP |
|---|---|---|---|---|
SH_REG0 | SH_REG7 | VMAX | VMAX | VMAX |
SH_REG1 | SH_REG8 | AMAX | AMAX | AMAX |
SH_REG2 | SH_REG9 | DMAX | DMAX | DMAX |
SH_REG3 | SH_REG10 | BOW1 | ASTART | ASTART |
SH_REG4 | SH_REG11 | BOW2 | DFINAL | DFINAL |
SH_REG5 | SH_REG12 | BOW3 | VBREAK | VBREAK |
SH_REG6 | SH_REG13 | BOW4 | VSTART | VSTOP |
把工作组记为 ,第一影子级记为 ,第二级记为 。一次转移按转移前的值同时更新:
- 非循环时,,最后一级保留,直至软件通过 SPI 重写。
- 循环时,,三组参数循环,而不是把工作组写回第一影子级。
没有列入当前映射的工作参数保持原值。例如 S 形双级选项不会顺带更新 RAMPMODE、ASTART 或 DFINAL。
配置顺序与原数值示例
跳转到“配置顺序与原数值示例”原文希望依次使用较小的速度、加减速度和 BOW 参数。其数值整理如下,保留为原草案的寄存器数值示例:
| 参数 | 当前工作组 | 第一影子级 | 第二影子级 |
|---|---|---|---|
VMAX | 100000 | 50000 | 25000 |
AMAX | 5000 | 3000 | 2000 |
DMAX | 5000 | 3000 | 原稿未给出 |
BOW1…4 各项 | 1000 | 500 | 原稿未给出 |
ASTART、DFINAL | 0 | 不由 S 形双级映射更新 | 不由该映射更新 |
这些数值没有给出完整的时钟、单位模式、定点格式、细分和机械参数,不能直接解释为 RPM、物理加速度或已经可用的减速方案。第二级也没有填全,不能把未给出的值默认为 0。
建议按下面顺序组织驱动逻辑:
阻止配置过程中发生影子转移→ 确认时钟、单位模式、斜坡类型和运动模式→ 写入完整工作参数→ 按选定映射写入第一、第二影子级的全部必需字段→ 等待 BOW 内部换算完成→ 应用 START_CONF 的来源、极性、延迟、跳过次数和循环配置→ 在受控条件下产生一次触发并验证转移结果选择 S 形斜坡应修改 RAMPMODE(1:0)=10;定位或速度模式另受相应位控制。原稿把整个 RAMPMODE 写成 10,会同时固定其他模式位,不能作为所有场景的通用写法。
修改位字段要保留其他已确认的配置并保持保留位为 0。尤其 START_CONF(23:20) 的读回还涉及当前跳过计数,不能把任意实时读回值无条件当成原始配置再写回;驱动应清楚地区分配置镜像和运行状态。
两种不同的“等待”
跳转到“两种不同的“等待””时间等待:START_DELAY 控制触发到内部启动的时钟延迟。按手册定义:
START 作为输出时,有效时间为 。immediate_start_in=1 会让外部 START 不按普通延迟路径等待。
跳过触发次数:SHADOW_MISS_CNT 是 4 位字段,可设置 0~15。值为 5 时,每次影子转移之间跳过 5 次内部启动,在第 6 次执行下一次转移;它不是 5 ms 延时,也不只是上电后跳过一次。
另外,写入影子 BOW 参数后还需要给内部换算留出时间。按 V1.26 的说明,在完成有关写入后,至少确保接下来 秒内不发生影子转移。例如 时:
单纯在主机上“延时一下”并不一定阻止已启用的内部事件触发;必须控制触发或转移使能,保证等待窗口真实成立。
文档不一致与验证边界
跳转到“文档不一致与验证边界”V1.26 的说明正文有几处与其寄存器定义不一致:第 79 页 VSTOP 选项步骤写成 10,但第 182 页字段表将其定义为 11;第 80 页一处前置条件写 start_en(1),而使能说明及字段表均指向 bit 4;第 71 页一个输出条件也与 START 输入/输出位表不一致。本页按字段表和对应映射整理,并把差异明确留下,涉及实际运动前应结合芯片版本、厂家确认和受控试验处理。
手册第 76 页还对单级完整参数选项中,S 形斜坡从速度模式切到定位模式提出 SH_REG10 与当前 BOW3 不相等的条件。不能把它误套到所有双级选项,因为不同选项下 SH_REG10 的含义不同。
验证时至少检查:无触发不提前转移;一次触发的寄存器映射正确;循环顺序符合三组状态推导;未映射字段保持;跳过次数和 BOW 等待有效。寄存器数值正确仍不足以证明真实机构运动安全、方向和限位正确。
来源与修订
跳转到“来源与修订”原文:TMC4361A 启动配置。本页保留四种映射、循环、触发次数、BOW 等待、模式切换注意事项、原数值草案和两张资料图,转录主要图表并说明不完整字段;删除对话式结尾和伪装成可编译 C 的中文伪代码。