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

 

  1.   Trademarks
  2. 1Introduction
  3. 2PTO – PulseGen
    1. 2.1 PulseGen Implementation Overview
    2. 2.2 PulseGen Limitations
    3. 2.3 PulseGen CLB Configuration
    4. 2.4 PulseGen Input and Output Signals
  4. 3PTO – QepDiv
    1. 3.1 QepDiv Implementation Overview
    2. 3.2 QepDiv Limitations
    3. 3.3 QepDiv Divider Settings and Initialization
    4. 3.4 QepDiv CLB Configuration
  5. 4PTO – Abs2Qep
    1. 4.1 Abs2Qep Chip resources
    2. 4.2 Abs2Qep Theory of Operation
      1. 4.2.1 Abs2Qep Translation Equations
      2. 4.2.2 Abs2Qep Translation Example
      3. 4.2.3 Abs2Qep Zero Cross Detection
    3. 4.3 Abs2Qep CLB Configuration
      1. 4.3.1 Abs2Qep QEP-A/B Pulse Train Generation
      2. 4.3.2 Abs2Qep Halt Latch
      3. 4.3.3 Abs2Qep High Level Controller (HLC)
    4. 4.4 Abs2Qep Input and Output Signals
  6. 5PTO – QepOnClb QEP Decoder
    1. 5.1 QepOnClb and eQEP Comparison
    2. 5.2 QepOnClb Chip resources
    3. 5.3 QepOnClb Theory of Operation
    4. 5.4 QepOnClb CLB Resources
      1. 5.4.1 QepOnClb QCLK State Machine
      2. 5.4.2 QepOnClb Direction Decode
      3. 5.4.3 QepOnClb Error Detection
      4. 5.4.4 QepOnClb Simulation Waveforms
  7. 6Example Projects
    1. 6.1 Hardware Requirements
    2. 6.2 Installing Code Composer Studio and C2000WARE-MOTORCONTROL-SDK™
    3. 6.3 Import and Run Example Project
    4. 6.4 PulseGen Example
    5. 6.5 QepDiv Example
    6. 6.6 Abs2Qep Example
      1. 6.6.1 Watch Variables
      2. 6.6.2 Test Signals
      3. 6.6.3 Pin Usage and Test Connections
    7. 6.7 QepOnClb Example
      1. 6.7.1 Watch Variables
      2. 6.7.2 Header Pin Connections
  8. 7Library Source and Projects
    1. 7.1 Locating the Library Source Code
    2. 7.2 Import and Build the Library Project
    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 Configuration
      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. 8Using the Reference APIs in Projects
    1. 8.1 Adding PTO Support to a Project
    2. 8.2 Routing To and From the CLB
    3. 8.3 Initialization Steps
      1. 8.3.1 PTO-PulseGen API Initalization
      2. 8.3.2 PTO-QepDiv API Initialization
      3. 8.3.3 PTO-Abs2Qep API Initialization
      4. 8.3.4 PTO-QepOnClb API Initialization
  10. 9References
  11.   Revision History

QepOnClb QCLK State Machine

The QCLK state machine has two functions: (1) keep a copy of the previous levels of QEP-A and QEP-B, and (2) detect a valid QEP state change and enable the position counter to increment or decrement.

To create a copy of the previous QEP-A and QEP-B signals the following state equations are used:

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

To determine if a valid QEP state change has occurred, the previous QEP-A/B values are compared to the current values. When a valid QEP state transition is detected, the FSM will pull QCLK high. This signal enables the position counter allowing it to increment or decrement depending on the DIRECTION signal.

There are four possible cases which are mapped in Table 5-4:

  1. Invalid state change, QCLK = 0, position counter does not change
  2. No movement, QCLK = 0, position counter does not change
  3. Forward movement, QCLK = 1, position counter increments or decrements
  4. Reverse movement, QCLK = 1, position counter increments or decrements

The resulting equations, combined by the OR operator, are entered into the CLB tool for the output of the FSM.

Table 5-4 QCLK State Machine Karnaugh Map
Current State
e0, e1
QEP-A(n), B(n)
00 01 11 10
Previous State
s0, s1
QEP-A(n-1), B(n-1)
00 0
No movement
1 (2)
Reverse
0
Invalid
1 (4)
Forward
01 1 (1)
Forward
0
No movement
1 (3)
Reverse
0
Invalid
11 0
Invalid
1 (2)
Forward
0
No movement
1 (4)
Reverse
10 1 (1)
Reverse
0
Invalid
1 (3)
Forward
0
No movement
(!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)