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

PulseGen CLB 配置

若要实现Topic Link Label2.1中描述的所需功能,需要在 CLB 逻辑块中使用以下资源。

GUID-027B71BB-2E5A-4862-B3B0-CEA6B25D1803-low.gif图 2-3 PulseGen CLB 逻辑块图
注: Topic Link Label7介绍了如何在 Code Composer Studio™ 中构建库工程。通过构建工程,CCS 将重新生成 CLB 逻辑块图(clb.svg 或 clb.html)和对象 (.lib)。CLB 逻辑块图将位于 RELEASE/syscfg 目录下。

具体实现方式请参阅表 2-1 中的说明和图 2-3 中的图示。

表 2-1 PulseGen CLB 逻辑块 1
资源 功能 注意事项
输入
In0 开/关控制(通过 GPREG) 启用 CLB
In1 上升沿检测 通过 EPWM1A
In2 开/关控制(通过 GPREG) 运行信号(PTO 启动/停止)
In3 未使用 未使用
In4 开/关控制(通过 GPREG) 设置 PTO 方向
In5 未使用 未使用
In6 未使用 未使用
In7 未使用 未使用
输出
Out0 未使用 未使用
Out1 未使用 未使用
Out2 未使用 未使用
Out3 未使用 未使用
Out4 发送使能 通过输出 XBar;PTO 脉冲输出
Out5 发送使能 通过输出 XBar;PTO 方向输出
Out6 未使用 未使用
Out7 未使用 未使用
逻辑资源
LUT0 HLC 中 Event0 的输入 使用 in1 或 CNT1 匹配值对编码器输入进行边沿检测。在 HLC 中触发事件以将新值加载到 HLC 寄存器中
LUT1 CNT 1、2、3 的 Mode0 输入 用于确定 CNT1、CNT2 和 CNT3 所选模式的逻辑。启动所有三个计数器。
LUT2 未使用 未使用
FSM0 脉宽生成 该状态机将与 CNT0 一同生成若干高和低脉冲宽度。输出将设置 CNT0 的复位值。
FSM1 活跃周期和完整周期生成 根据 CNT1 的 match1 和 match2 输出来设置活跃周期和完整周期的值。输出活跃周期持续时间内的脉冲数,并且在完整周期和活跃周期差值之间不输出脉冲数
FSM2 PTO 输出方向生成 生成 PTO 输出方向。输出方向一直保持到由 FSM1 设置的完整周期结束。
CNT0 脉宽生成 计数器 Match1 和 Match2 值决定了高脉冲宽度和低脉冲宽度的触发器。将匹配值加载到 FSM0 输入 e0 和 e1。
CNT1 活跃周期和完整周期时钟生成 生成 FSM1 和 FSM2 所需的输入。Match1 决定了活跃期间的触发器。Match2 决定了完整期间的触发器。FSM1 使用匹配事件来生成活跃周期和完整周期。Match2 用作 FSM0 中额外的外部输入,以确定保持 PTO 输出方向的时间。
CNT2 完整周期计数器 Match1 事件用于触发 HLC 中的中断。当信号的完整周期达成后将重置计数器
高级控制器
HLC Event0 用于触发任务,Event1 用于触发中断 Event0 用于将 PTO 的新选项从 C28 内核加载到 CLB,Event1 用于根据 CNT2 的 match1 事件生成中断(对应于完整周期)。新的 PTO 选项在此事件后生效。