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

pto_pulsegen_runPulseGen

Description

A runtime function to be called periodically for dynamically configuring and changing the pulse generation requirements as required by the application. This function must be called periodically with appropriate parameters like the number of pulses, period, duration, and more.

Definition

uint16_t pto_pulsegen_runPulseGen(
		uint32_t pulseLo,
		uint32_t pulseHi,
		uint32_t ptoActivePeriod,
		uint32_t ptoFullPeriod,
		uint32_t ptoInterruptTime,
		uint16_t ptoDirection,
		uint16_t run
		);

Parameters

Input:

  • pulseLo – Low pulse width
  • pulseHi – High pulse width
  • ptoActivePeriod – Period the pulses are sent out; less than ptoFullPeriod
  • ptoFullPeriod – Full PTO period
  • ptoInterruptTime – Time when that the interrupt is generated to the CPU
  • ptoDirection – Direction output; latched as it is on direction output at the beginning of new period
  • run – Value indicting 1-run and 0-stop. Sampled at the beginning of the new period to determine to continue or halt the pulse generation

Return:

  • Val – If the function is executed successfully, the function will return ptoFullPeriod as the return value

Usage

In pto_pulsegen.c, a sample configuration function called pto_setOptions is provided as an example to assist with the pto_pulsegen_runPulseGen function and to perform the intermediate calculations. See the following code sample calculation that illustrates how various parameters for this function can be generated. For more details, see the pto_pulsegen.c and pto_pulsegen.h files.

uint32_t pto_setOptions(
		uint32_t numPulses, //number of pulses needed to be generated in next period
		uint32_t Period,	    // PTO period in clock cycles
		uint32_t ptoInterruptTime, // Interrupt generation time
		uint16_t ptoDirection,	// Direction output
		uint16_t run)		//run-stop condition.
{
	uint32_t pulseFreq, reminder;
	uint32_t pulseLo;
	uint32_t pulseHi;
	uint32_t ptoActivePeriod;
	uint32_t ptoFullPeriod;
	pulseFreq = Period / numPulses;
	reminder = Period - (pulseFreq * numPulses);
	pulseLo = (pulseFreq/2 );
	pulseHi = pulseFreq;
	ptoActivePeriod = (pulseFreq * numPulses);
	ptoFullPeriod = Period;
	pto_pulsegen_runPulseGen(
			pulseLo,
			pulseHi,
			ptoActivePeriod,
			ptoFullPeriod,
			ptoInterruptTime,
			ptoDirection,
			run);
	return(reminder);
}