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 CLB 配置

Topic Link Label4.2所述,将绝对位置转换为 QCLK 脉冲后,C28x 会将 PTO 参数加载到 HLC 的 FIFO 中。当需要启动 PTO 时,通过 GPREG 位提供的命令将指示 HLC 从 FIFO 中提取参数,将这些参数加载到计数器中,然后启动 PTO。一旦启动,CLB 会独立生成 PTO-QEP 波形。

一旦 PTO 完成,HLC 将设置一个 CLB 中断标签。C28x 可以使用这个标签在加载新配置之前检查 PTO 是否完成。

图 4-6 显示了 PTO-QEP 波形以及它们与 CLB 组件的关系。在本示例中,位置采样周期由 C28x 上的 ePWM ISR 控制。

Counter 0 match 1 会初始化为固定值并且不会改变。此匹配会产生 QCLK 脉冲。这会将 QCLK 切换开关置于计数开始处,从而缩短前一次 PTO 停止和下一次 PTO 开始之间的时间。
QCLK 脉冲之间的时间由 COUNTER 0 match 2 控制。此匹配会重置 COUNTER 0。
P(n) 代表样片 n 的绝对位置。
图 4-6 Abs2Qep 系统波形示例

逻辑块的方框图如图 4-7 所示,表 4-3 详细描述了每个 CLB 组件的功能。

HALT/CLEAR LATCH 在 LOAD(加载)事件期间由 HLC 直接控制。
PTO_DONE 由 COUNTER 1 递增控制,并在 LOAD 事件期间直接由 HLC 控制。
图 4-7 Abs2Qep CLB 逻辑块的方框图
表 4-3 Abs2Qep CLB 逻辑块 1
资源 功能 注意事项
输入
In0 LOAD 控制上升沿:

加载新的 PTO 配置 (HLC)。
连接到 GPREG 位 0。

在加载新配置之前,检查并确认最后一个 PTO 已完成(INTR 标签 == 2)
In1 DIRECTION 控制

1:顺时针(正向)

0:逆时针(反向)

连接到 GPREG 位 1。
仅在最后一个 PTO 已完成(Intr 标签 2)时更改
In2 未使用 未使用
In3 未使用 未使用
In4 未使用 未使用
In5 未使用 未使用
In6 未使用 未使用
In7 未使用 未使用
输出
Out0 未使用 未使用
Out1 未使用 未使用
Out2 PTO_QEP-I
索引从 0 到 1 的转换表示已过绝对零位置。
索引输出信号。
Out3 未使用 未使用
Out4 PTO_QEP-A PTO 正交输出 A
Out5 PTO_QEP-B PTO 正交输出 B
Out6 未使用 未使用
Out7 未使用 未使用
逻辑资源
LUT0 未使用 未使用
LUT1 未使用 未使用
LUT2 未使用 未使用
FSM0 生成 PTO_QEP-A 和 PTO-QEP-B 在每个 QCLK 输入端生成 1 个边沿。QEP-A/B 的超前/滞后基于当前状态和 DIRECTION 输入信号。
FSM1 生成 HALT/RUN 信号 如果以下任一条件成立,则停止 PTO 输出:
  • PTO 完成。该停止状态会被锁存,PTO 将保持停止,直到通过 HALT/RUN 控制输入来清除锁存器为止
  • HALT/RUN 控制输入处于高电平。
FSM2 生成 PTO_QEP-I 信号 根据 QEP-I 控制信号强制 PTO_QEP-I 为高电平和低电平。如果需要,允许用户将 QEP-I 配置为在多个 QCLK 内保持高电平。
CNT0 生成 QCLK(PTO 宽度控制)信号 每个 CLB 时钟的计数加 1。
  • match1:固定值。在计数开始位置附近生成 QCLK 信号。这种放置方法可以缩短上一次 PTO 停止和下一次 PTO 开始之间的时间。
  • match2:QEP 边沿之间的 CLB 时钟数。每个 match2 事件都会重置计数器。
CNT1 PTO 边沿计数控制 每个 QCLK 事件递增 1,由此可计算 PTO 期间发送的总 QEP-A + QEP-B 边沿数。
  • match1:由 HLC 操作以清除停止锁存条件并启动 PTO。
  • match2:待发送的边沿数。达到该数量后,便会置位 PTO_DONE 信号。这会锁存暂停状态,还会重置边沿计数并重置 QEP-I 控制。
CNT2 PTO_QEP-I 控制 每个 QCLK 事件递增 1,由此可计算 PTO 期间发送的总 QEP-A + QEP-B 边沿数。
  • match1:PTO_QEP-I 将变为高电平的边沿
  • match2:PTO_QEP-I 将变为低电平的边沿
注: 如果 PTO-QEP-I 在整个 PTO 内应保持低电平,则将 match1 和 match2 配置为一个大数字以避免匹配。(如 0xFFFFFFFF)。
高级控制器
HLC 事件 1:加载新的 PTO 配置。

响应来自 C28x 的 LOAD 输入端的上升沿。这将配置并启动一个新的 PTO。如需了解所有步骤,请参阅Topic Link Label4.3.3中的程序说明。

事件 2:信号 PTO 已完成。 通过设置中断标签 2 来响应 PTO 信号的完成。此时,可安全加载新的 PTO 计数器配置。