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

pto_pulsegen_runPulseGen

说明

这是定期调用的运行时函数,用于根据应用程序的要求动态配置和更改脉冲生成要求。必须使用相应的参数(例如脉冲数、周期、持续时间等)定期调用该函数。

定义

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
		);

参数

输入:

  • pulseLo – 低脉宽
  • pulseHi – 高脉宽
  • ptoActivePeriod – 发出脉冲的周期;小于 ptoFullPeriod
  • ptoFullPeriod – 完整的 PTO 期间
  • ptoInterruptTime – 对 CPU 产生中断的时间
  • ptoDirection – 方向输出;新的周期开始时锁定在方向输出上
  • run – 值指示 1(运行)和 0(停止)。在新周期开始时进行采样以确定继续还是停止脉冲生成

返回:

  • Val – 如果函数执行成功,其将返回 ptoFullPeriod 作为返回值

使用

在 pto_pulsegen.c 中提供了一个名为 pto_setOptions 的示例配置函数作为示例,旨在协助 pto_pulsegen_runPulseGen 函数以及执行中间计算。请参阅以下代码计算示例,其中说明了如何生成该函数的各种参数。更多详细信息,请参阅 pto_pulsegen.c 和 pto_pulsegen.h 文件。

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);
}