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 QCLK 状态机

QCLK 状态机具有两个功能:(1) 保留一份 QEP-A 和 QEP-B 之前电平的副本,(2) 检测有效的 QEP 状态改变,使位置计数器递增或递减。

若要创建一份 QEP-A 和 QEP-B 之前信号的副本,使用以下状态公式:

  • s0 next = QEP-A (n) = e0
  • s1 next = QEP-B (n) = e1

若要确定 QEP 状态改变是否有效,需要将之前的 QEP-A/B 值与当前值进行比较。检测到有效的 QEP 状态转换时,FSM 会将 QCLK 拉高。此信号可启用位置计数器,根据 DIRECTION 信号使其递增或递减。

表 5-4 中介绍了四种可能的情况:

  1. 无效的状态改变,QCLK = 0,位置计数器不变
  2. 无运动,QCLK = 0,位置计数器不变
  3. 正向运动,QCLK = 1,位置计数器递增或递减
  4. 反向运动,QCLK = 1,位置计数器递增或递减

生成的公式由 OR 运算符连接,输入到 CLB 工具中以获得 FSM 的输出。

表 5-4 QCLK 状态机卡诺图
当前状态
e0,e1
QEP-A(n),B(n)
00 01 11 10
之前的状态
s0,s1
QEP-A(n-1),B(n-1)
00 0
无运动
1 (2)
反向
0
无效
1 (4)
正向
01 1 (1)
正向
0
无运动
1 (3)
反向
0
无效
11 0
无效
1 (2)
正向
0
无运动
1 (4)
反向
10 1 (1)
反向
0
无效
1 (3)
正向
0
无运动
(!s0 & s1 & !e0 & !e1) + (s0 & !s1 & !e0 & !e1)
(!s0 & !s1 & !e0 & e1) + (s0 & s1 & !e0 & e1)
(!s0 & s1 & e0 & e1) + (s0 & !s1 & e0 & e1)
(!s0 & !s1 & e0 & !e1) + (s0 & s1 & e0 & !e1)