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.   修订历史记录

QepOnClb CLB 资源

图 5-4 中展示了解码器 CLB 配置,并在表 5-3 中进一步说明。

图 5-4 QepOnClb 逻辑块的方框图
表 5-3 QepOnClb 逻辑块 1
资源 功能 注意事项
输入
In0 QEP_RESET 连接到 GPREG 位 0,对位置计数器复位进行软件控制。
  • 1:复位位置计数器。计数器将保持复位状态,直到将 0 写入此位。
  • 0:将计数器从复位状态释放。如果 QEP_ENABLE 为 1,位置计数器将根据需要递增/递减。
In1 QEP-I 根据设计,此信号的上升沿将提示 HLC 将当前的位置计数器存储在 FIFO 中。这与 eQEP 的上升沿锁存模式类似。
In2 QEP_ENABLE 连接到 GPREG 位 2。从软件提供位置计数器的启用/禁用开关。
  • 1:QEP 已启用。如果复位信号 QEP_RESET 也为 0,位置计数器将根据需要递增/递减。
  • 0:QEP 禁用。位置计数器停止递增/递减。
In3 QEP-A QEP-A 和 QEP-B 的状态转换用于检测运动、运动方向或错误。
In4 未使用 未使用
In5 QEP-B QEP-A 和 QEP-B 的状态转换用于检测运动、运动方向或错误。
In6 未使用 未使用
In7 未使用 未使用
输出
Out0 未使用 未使用
Out1 未使用 未使用
Out2 未使用 未使用
Out3 未使用 未使用
Out4 未使用 未使用
Out5 未使用 未使用
Out6 未使用 未使用
Out7 未使用 未使用
逻辑资源
LUT0 计数方向控制 确定运动方向。比较 QEP-A、QEP-B 的当前状态与过去状态,以解码相位。输出可适当地设置位置计数器的模式。
  • QEP-A 超前(正向):DIRECTION 为 1,位置计数器模式为递增。
  • QEP-A 滞后(反向):DIRECTION 为 0,位置计数器模式为递减。
LUT1 计数启用控制 使位置计数器递增或递减一。以下两种条件均满足时可实现:
  1. QEP_ENABLE 为 1 且
  2. QCLK 为 1
LUT2 QEP 复位生成 满足以下任一条件时位置计数器将复位:
  1. QEP_RESET 为 1 或
  2. 位置计数器 match2 有效
FSM0 QCLK 状态机 此 FSM 有两种功能:
  • 监控 QEP-A/B 信号,检测有效的状态改变。这种改变会将 QCLK 拉高,使位置计数器递增或递减。请参见 LUT1。
  • 存储之前的 QEP-A/B 电平。之前的状态用于检测运动方向或错误。请参见 LUT0 和 FSM1。
FSM1 错误检测 比较之前的 QEP-A/B 状态与当前状态。如果两个信号同时改变,则内部 ERROR 信号将强制拉高。根据设计,ERROR 的上升沿将触发 HLC 发送标签为 11 的中断。
FSM2 未使用 未使用
CNT0 位置计数器 如果启用(QCLK 为 1),则在每个 CLB 时钟周期递增或递减一。位置计数器的位置上限 (MAXPOS) 根据以下条件指定:
  • 负载:位置上限减 1 (MAXPOS - 1)。match2 触发一个事件后,此值将载入计数器。
  • match1:达到位置上限 (MAXPOS)后复位计数器。
  • match2:0xFFFFFFFF 触发一个计数器事件,将负载值载入计数器。
CNT1 未使用 未使用
CNT2 未使用 未使用
高级控制器
HLC 事件 0:检测到错误。 向 CPU 发送错误中断,标签为 11。
事件 3:计数器捕捉 将当前位置计数器复制到 FIFO,响应 QEP-I 上升沿。然后 HLC 会中断 CPU 并设置标签 5。