TMC2660 寄存器位图详细解析
基于 TMC2660 数据手册(Rev1.07),TMC2660 的寄存器均为 20 位宽,通过 SPI 接口访问。所有寄存器均为只写(write-only),读取操作会返回 DRVSTATUS 状态响应(根据 RDSEL 配置不同格式)。寄存器没有显式地址,而是通过前三位(位 19-17)来区分。
以下是对每个寄存器的位图详细解析,包括位位置、位名称、功能描述、默认值(手册中未指定具体默认值,通常上电后为 0 或需初始化)、以及注意事项或依赖关系。我使用表格形式组织,便于阅读。重点覆盖 DRVCTRL、CHOPCONF、SMARTEN、SGCSCONF、DRVCONF,以及读取响应格式。
1. DRVCTRL – Driver Control Register
这个寄存器用于控制驱动模式,包括电流设置(SPI 模式)和微步配置(STEP/DIR 模式)。位 19-17 始终为 000(标识该寄存器)。
寄存器格式根据 SDOFF(在 DRVCONF 中)而异:
- SPI 模式 (SDOFF=1):直接设置线圈电流。
- STEP/DIR 模式 (SDOFF=0):配置 STEP/DIR 接口。
SPI 模式位图:
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19 | - | 寄存器地址位(始终 0) | 0 | - |
| 18 | - | 寄存器地址位(始终 0) | 0 | - |
| 17 | PHA | 线圈 A 极性(电流方向):0 = OA1 → OA2;1 = OA2 → OA1 | - | 仅 SPI 模式有效 |
| 16-9 | CA7-CA0 | 线圈 A 电流幅度(0-248,255 为最大值考虑偏移/滞回) | - | 电流值 = CA + 偏移 |
| 8 | PHB | 线圈 B 极性(电流方向):0 = OB1 → OB2;1 = OB2 → OB1 | - | 仅 SPI 模式有效 |
| 7-0 | CB7-CB0 | 线圈 B 电流幅度(0-248,255 为最大值考虑偏移/滞回) | - | 电流值 = CB + 偏移 |
STEP/DIR 模式位图:
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19-10 | - | 保留(写 0) | - | - |
| 9 | INTPOL | 启用 STEP 插值:0 = 禁用;1 = 16x 步进乘法 | - | 提升平滑度 |
| 8 | DEDGE | 启用 STEP 双沿脉冲:0 = 仅上升沿;1 = 上升+下降沿 | - | - |
| 7-4 | - | 保留(写 0) | - | - |
| 3-0 | MRES3-MRES0 | 微步分辨率:%0000 = 256;%0001 = 128;... %1000 = 1 (全步) | - | %0111 = 2 |
注意:在上电后,需根据模式初始化。依赖 DRVCONF 的 SDOFF 位切换格式。
2. CHOPCONF – Chopper Configuration Register
用于配置斩波器(chopper)参数,包括空白时间、模式和滞回。位 19-17 为 100(标识该寄存器)。
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19-18 | - | 寄存器地址位(始终 1 0) | - | - |
| 17 | - | 寄存器地址位(始终 0) | 0 | - |
| 16-15 | TBL1-TBL0 | 空白时间(系统时钟周期):%00=16;%01=24;%10=36;%11=54 | - | 防止噪声 |
| 14 | CHM | 斩波模式:0 = spreadCycle;1 = 恒定 tOFF | - | 影响其他位解释 |
| 13 | RNDTF | 启用随机 TOFF 时间:0 = 固定;1 = 随机调制 (±12 到 +3 时钟) | - | 减少 EMI |
| 12-11 | HDEC1-HDEC0 | spreadCycle: 滞回递减间隔 (%00=16;%01=32;%10=48;%11=64);恒定 tOFF: 快速衰减定时 | - | CHM 决定 |
| 10-7 | HEND3-HEND0 | spreadCycle: 滞回结束值(有符号 -3 到 +12,1/512 添加到电流);恒定 tOFF: 正弦波偏移 | - | 有符号值 |
| 6-4 | HSTRT2-HSTRT0 | spreadCycle: 滞回起始偏移 (%000=1 到 %111=8);恒定 tOFF: 快速衰减时间 LSB | - | CHM 决定 |
| 3-0 | TOFF3-TOFF0 | 关断时间/慢衰减持续时间:0=驱动禁用;1-15=12 + 32×TOFF (最小64时钟) | - | 最小值确保稳定 |
注意:CHM 位切换位解释(spreadCycle vs. 恒定 tOFF)。TOFF=0 会禁用驱动器。
3. SMARTEN – coolStep Control Register
用于配置 coolStep(负载自适应电流控制)。位 19-17 为 101(标识该寄存器)。
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19-17 | - | 寄存器地址位(始终 1 0 1) | - | - |
| 16 | - | 保留 | - | - |
| 15 | SEIMIN | 最小 coolStep 电流限制:0 = 1/2 CS;1 = 1/4 CS | - | - |
| 14-13 | SEDN1-SEDN0 | 电流递减速度:%00=32;%01=8;%10=2;%11=1 采样 | - | - |
| 12 | - | 保留 | - | - |
| 11-8 | SEMAX3-SEMAX0 | 上 coolStep 阈值偏移(从下阈值):(SEMIN + SEMAX + 1) × 32 | - | - |
| 7 | - | 保留 | - | - |
| 6-5 | SEUP1-SEUP0 | 电流递增大小:%00=1;%01=2;%10=4;%11=8 步 | - | - |
| 4 | - | - | - | - |
| 3-0 | SEMIN3-SEMIN0 | 下 coolStep 阈值/启用:0=禁用;非零=启用 | - | 0 禁用 coolStep |
注意:依赖 stallGuard2 值。需在 SGT 优化后调谐。SEMIN=0 完全禁用 coolStep。
4. SGCSCONF – stallGuard2 & Current Setting Register
用于配置 stallGuard2(失步检测)和电流缩放。位 19-17 为 101(标识该寄存器)。
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19-17 | - | 寄存器地址位(始终 1 10) | - | - |
| 16 | SFILT | stallGuard2 滤波启用:0=标准(快速);1=滤波(每4全步1测量) | - | 提高精度 |
| 15 | - | 保留 | - | - |
| 14-8 | SGT7-SGT0 | stallGuard2 阈值(有符号7位):-64 到 +63 | - | 值 < -10 不推荐 |
| 7-5 | - | 保留 | - | - |
| 4-0 | CS4-CS0 | 电流缩放因子:1/32 到 32/32(偏置1) | - | 影响 RMS 电流 |
注意:SGT 为有符号值,用于调谐失步灵敏度。SFILT 降低测量频率以提高准确性。
5. DRVCONF – Driver Configuration Register
用于整体驱动配置,包括接口、感测电压和保护。位 19-17 为 111(标识该寄存器)。
| 位位置 | 位名称 | 功能描述 | 默认值 | 注意事项/依赖 |
|---|---|---|---|---|
| 19-17 | - | 寄存器地址位(始终 1 1 1) | - | - |
| 16 | TST | 测试模式启用:0=正常;1=测试输出到 SG_TST/TEST_ANA | - | - |
| 15-14 | SLPH1-SLPH0 | 高侧斜率控制:%00=最小;%01=最小+TC;%10=中等+TC;%11=最大 | - | 温度补偿 |
| 13-12 | SLPL1-SLPL0 | 低侧斜率控制:%00=最小;%01=最小;%10=中等;%11=最大 | - | - |
| 11 | - | 保留 | - | - |
| 10 | DISS2G | 短路到地保护禁用:0=启用;1=禁用 | - | - |
| 9-8 | TS2G1-TS2G0 | 短路到地检测定时:%00=3.2µs;%01=1.6µs;%10=1.2µs;%11=0.8µs | - | 匹配 MOSFET 切换 |
| 7 | SDOFF | STEP/DIR 接口禁用:0=启用;1=禁用(SPI 模式) | - | 切换 DRVCTRL 格式 |
| 6 | VSENSE | 感测电阻电压范围:0=310mV 全量程;1=165mV 全量程 | - | 影响电流分辨率 |
| 5-4 | RDSEL1-RDSEL0 | 读取响应格式选择:%00=微步;%01=SG;%10=SG+SE;%11=保留 | - | 见下文 |
| 3-0 | - | 保留 | - | - |
注意:VSENSE 影响电流精度和感测电阻功率。斜率控制(SLPH/SLPL)影响 EMI 和热量。
读取响应格式 (DRVSTATUS)
读取操作返回 20 位 DRVSTATUS,根据 RDSEL 配置:
| RDSEL 值 | 位 19-0 内容 | 描述 |
|---|---|---|
| %00 | MSTEP9-0 (位19 为线圈A极性) | 微步位置 |
| %01 | SG9-0 | stallGuard2 值 (0=最大负载;1023=最小负载) |
| %10 | SG9-5 + SE4-0 | stallGuard2 (高位) + coolStep 缩放 (低位) |
所有格式中包含通用状态位(位7-0):
- 位7: STST – 静止指示(1=静止)
- 位6-5: OLB/OLA – 开路指示(线圈B/A)
- 位4-3: S2GB/S2GA – 短路到地状态(线圈B/A)
- 位2: OTPW – 过温警告
- 位1: OT – 过温关断
- 位0: SG – stallGuard2 失步标志
总体注意事项:
- 所有寄存器上电后需初始化(默认多为0)。
- SPI 命令为20位,写入时 CSN 高电平锁存。
- 依赖关系:SDOFF 影响 DRVCTRL;CHM 影响 CHOPCONF 位解释;coolStep 依赖 stallGuard2。
- 调谐顺序:先配置电流 (CS),然后 stallGuard2 (SGT),最后 coolStep。