ZHCAB39E January   2022  – February 2022 TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S

 

  1.   商标
  2. 1引言
  3. 2PTO – PulseGen
    1. 2.1 PulseGen 实现概述
    2. 2.2 PulseGen 限制
    3. 2.3 PulseGen CLB 配置
    4. 2.4 PulseGen 输入和输出信号
  4. 3PTO – QepDiv
    1. 3.1 QepDiv 实现概述
    2. 3.2 QepDiv 限制
    3. 3.3 QepDiv 分频器设置和初始化
    4. 3.4 QepDiv CLB 配置
  5. 4PTO – Abs2Qep
    1. 4.1 Abs2Qep 芯片资源
    2. 4.2 Abs2Qep 工作原理
      1. 4.2.1 Abs2Qep 转换公式
      2. 4.2.2 Abs2Qep 转换示例
      3. 4.2.3 Abs2Qep 过零检测
    3. 4.3 Abs2Qep CLB 配置
      1. 4.3.1 Abs2Qep QEP-A/B 脉冲序列生成
      2. 4.3.2 Abs2Qep 停止锁存器
      3. 4.3.3 Abs2Qep 高级控制器 (HLC)
    4. 4.4 Abs2Qep 输入和输出信号
  6. 5PTO – QepOnClb QEP 解码器
    1. 5.1 QepOnClb 和 eQEP 的比较
    2. 5.2 QepOnClb 芯片资源
    3. 5.3 QepOnClb 工作原理
    4. 5.4 QepOnClb CLB 资源
      1. 5.4.1 QepOnClb QCLK 状态机
      2. 5.4.2 QepOnClb 方向解码
      3. 5.4.3 QepOnClb 错误检测
      4. 5.4.4 QepOnClb 仿真波形
  7. 6示例工程
    1. 6.1 硬件要求
    2. 6.2 安装 Code Composer Studio 和 C2000WARE-MOTORCONTROL-SDK™
    3. 6.3 导入并运行示例工程
    4. 6.4 PulseGen 示例
    5. 6.5 QepDiv 示例
    6. 6.6 Abs2Qep 示例
      1. 6.6.1 观察变量
      2. 6.6.2 测试信号
      3. 6.6.3 引脚用途和测试连接
    7. 6.7 QepOnClb 示例
      1. 6.7.1 观察变量
      2. 6.7.2 接头引脚连接
  8. 7库源代码和工程
    1. 7.1 查找库源代码
    2. 7.2 导入和构建库工程
    3. 7.3 PTO - PulseGen API
      1. 7.3.1 pto_pulsegen_runPulseGen
      2. 7.3.2 pto_startOperation
      3. 7.3.3 pto_pulsegen_setupPeriph
      4. 7.3.4 pto_pulsegen_reset
    4. 7.4 PTO - QepDiv API
      1. 7.4.1 pto_qepdiv_config
      2. 7.4.2 pto_startOperation
      3. 7.4.3 pto_qepdiv_setupPeriph
      4. 7.4.4 pto_qepdiv_reset
    5. 7.5 PTO - Abs2Qep API
      1. 7.5.1 Abs2Qep API 配置
      2. 7.5.2 pto_abs2qep_runPulseGen
      3. 7.5.3 pto_abs2qep_setupPeriph
      4. 7.5.4 pto_abs2qep_translatePosition
    6. 7.6 PTO - QepOnClb API
      1. 7.6.1 pto_qeponclb_setupPeriph
      2. 7.6.2 pto_qeponclb_initCLBQEP
      3. 7.6.3 pto_qeponclb_configMaxCounterPos
      4. 7.6.4 pto_qeponclb_enableCLBQEP
      5. 7.6.5 pto_qeponclb_resetCLBQEP
      6. 7.6.6 pto_qeponclb_getCounterVal
      7. 7.6.7 pto_qeponclb_getCLBQEPPos
      8. 7.6.8 pto_qeponclb_clearFIFOptr
  9. 8在工程中使用参考 API
    1. 8.1 将 PTO 支持添加到工程中
    2. 8.2 往返于 CLB 的路由
    3. 8.3 初始化步骤
      1. 8.3.1 PTO-PulseGen API 初始化
      2. 8.3.2 PTO-QepDiv API 初始化
      3. 8.3.3 PTO-Abs2Qep API 初始化
      4. 8.3.4 PTO-QepOnClb API 初始化
  10. 9参考文献
  11.   修订历史记录

Abs2Qep 高级控制器 (HLC)

高级控制器在编程后可以:

  • 启动 PTO 信号的生成
  • 修改 HALT/CLEAR_LATCH 和 PTO_DONE 信号
  • 加载生成 PTO 所需的计数器匹配值
  • 标记 PTO 状态的结束

表 4-8 Abs2Qep HLC 寄存器用途
R0 和 R1 用于从 FIFO 拉取数据。
R2 在 CLB 配置期间初始化为零。用于将零加载到匹配基准,以便将给定信号操纵到高电平状态。
R3 在 CLB 配置期间初始化为 0xFFFFFFFF。用于将一个较大值加载到匹配基准,以便将给定信号操纵到低电平状态。
表 4-9 Abs2Qep HLC 程序
加载:事件 0、事件 1
指令编号 操作码 说明
Program0:0 MOV_T1 R2、C1 置位 HALT/CLEAR_LATCH。COUNTER 1 已被 PTO_DONE 重置(计数 == 0)。加载值为零的 match1 基准将强制 HALT/CLEAR_LATCH 上出现上升沿。
Program0:1 MOV_T2 R3、C1 强制 PTO_DONE 信号处于低电平状态。
Program0:2、3 PULL R0
MOV_T2 R0、C1
加载要生成的 QCLK 的数量。
注意:对于零个 QCLK 的情况:由于 COUNTER_1 计数 == 0,QCLK 值为零将强制 PTO_DONE 回到高电平状态。
Program0:4、5 PULL R1
MOV_T2 R0、C0
加载两个 QCLK 之间的 CLB 时钟的数量。当计数器达到此值时,它将重置为零。
Program0:6、7
Program1:0,1
PULL R0
MOV_T1 R0、C2
PULL R0
MOV_T2 R0、C2
配置哪个 QCLK 边沿将强制 PTO-QEP-I 处于高电平和低电平状态。如果 PTO-QEP-I 应保持在低电平状态,则将通过 FIFO 传递较大的值。
Program1:2 MOV R1、C0 将 COUNTER_0 设置为零。这可以防止计数器在加载零脉冲配置时递增 1。
Program1:3 INTR 1 作为标签用于指示事件 0 加上事件 1 完成。这将放置在最后一条指令旁边,以防止其与事件 2 中的 INTR 指令背靠背。
Program1:4 MOV_T1 R3、C1 强制 HALT/CLEAR_LATCH 信号处于低电平状态。如果 PTO_DONE 信号处于低电平状态,这将启动 PTO 信号的生成。如果 PTO_DONE 处于高电平状态,则将设置 HALT_LATCH。
PTO_DONE:事件 2
指令编号 操作码 说明
Program2:0 INTR 2 作为标签用于指示事件 2 已完成或 PTO 已完成。