This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL-F280039C:ECAP 占空比测量问题

Guru**** 2686445 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE, TMS320F280037C

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1577838/launchxl-f280039c-ecap-duty-cycle-measurement-problem

器件型号: LAUNCHXL-F280039C
Thread 中讨论的其他器件: SysConfigC2000WARETMS320F280037C

该设置将 PWM1A 从外部连接到 GPIO23 和示波器。  SysConfig 值设置为: ePWM 时基–120 CMPA 30、60、90; ECAP1:捕获停止 —  event2 Event1 — 上升事件 2 — 下降无计数器复位      CCS 20.3.0 调试寄存器值:ECCTL0 - 76h、ECCTL1 - 8344h、ECCTL2 - 92h

PWM 输出在示波器上看起来符合预期。  无论 CMPA 的值如何 (30、60、90)、ECAP 结果保持不变 (CAP2 - CAP1 = 121)。  如前所述、示波器结果是正确的、并反映了更改。  已经尝试了其他频率和占空比 (ecap2 - eCAP1)、其占空比始终等于 50%。  这在中使用 event3 和时钟复位进行了运行验证。

目标是建立代码以准确读取占空比数据。  注意:这不是互连问题、因为 (CAP2 - CAP1) 值随频率变化成比例变化、这由示波器确认。

   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能分享您的代码吗? eCAP 配置以及如何测量占空比?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    您是否曾在 C2000WARE SDK 中试用过我们的 eCAP 示例?

    这将产生建议的 eCAP 初始化、用于在单次触发或连续模式下运行 eCAP。  

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经查看了这些示例、不过这个程序是使用 SysConfig 设置的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ECAP 配置包含在上面列出的 3 个 ECAP 控制寄存器 ECCTL0 - ECCTL2 中。  TRM 有一个 ECAP 章节中的寄存器密钥。 我正在尝试(迄今为止未成功)在中断例程中通过 (CAP2 - CAP1) 测量占空比。  CAP1 在上升沿加载、CAP2 在下降沿加载。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    您是否尝试加载 syscfg 示例 (eCAP_ex2_capture_pwm) 的.out、您也可以参阅使用 SysConfig 的 driverlib 生成的代码、以帮助配置您自己的设置。

    例如、以下代码片段(取自 SysConfig)将配置 eCAP、以监控输入 XBAR 信号以捕获占空比。

    void myECAP0_init(){
    	//
    	// Disable ,clear all capture flags and interrupts
    	//
    	ECAP_disableInterrupt(myECAP0_BASE,
    		(ECAP_ISR_SOURCE_CAPTURE_EVENT_1  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_2  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_3  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_4  |
    		ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
    		ECAP_ISR_SOURCE_COUNTER_PERIOD   |
    		ECAP_ISR_SOURCE_COUNTER_COMPARE));
    	ECAP_clearInterrupt(myECAP0_BASE,
    		(ECAP_ISR_SOURCE_CAPTURE_EVENT_1  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_2  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_3  |
    		ECAP_ISR_SOURCE_CAPTURE_EVENT_4  |
    		ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
    		ECAP_ISR_SOURCE_COUNTER_PERIOD   |
    		ECAP_ISR_SOURCE_COUNTER_COMPARE));
    	//
    	// Disables time stamp capture.
    	//
    	ECAP_disableTimeStampCapture(myECAP0_BASE);
    	//
    	// Stops Time stamp counter.
    	//
    	ECAP_stopCounter(myECAP0_BASE);
    	//
    	// Sets eCAP in Capture mode.
    	//
    	ECAP_enableCaptureMode(myECAP0_BASE);
    	//
    	// Sets the capture mode.
    	//
    	ECAP_setCaptureMode(myECAP0_BASE,ECAP_CONTINUOUS_CAPTURE_MODE,ECAP_EVENT_4);
    	//
    	// Sets the Capture event prescaler.
    	//
    	ECAP_setEventPrescaler(myECAP0_BASE, 0U);
    	//
    	// Sets the Capture event polarity.
    	//
    	ECAP_setEventPolarity(myECAP0_BASE,ECAP_EVENT_1,ECAP_EVNT_FALLING_EDGE);
    	ECAP_setEventPolarity(myECAP0_BASE,ECAP_EVENT_2,ECAP_EVNT_RISING_EDGE);
    	ECAP_setEventPolarity(myECAP0_BASE,ECAP_EVENT_3,ECAP_EVNT_FALLING_EDGE);
    	ECAP_setEventPolarity(myECAP0_BASE,ECAP_EVENT_4,ECAP_EVNT_RISING_EDGE);
    	//
    	// Configure counter reset on events
    	//
    	ECAP_enableCounterResetOnEvent(myECAP0_BASE,ECAP_EVENT_1);	
    	ECAP_enableCounterResetOnEvent(myECAP0_BASE,ECAP_EVENT_2);	
    	ECAP_enableCounterResetOnEvent(myECAP0_BASE,ECAP_EVENT_3);	
    	ECAP_enableCounterResetOnEvent(myECAP0_BASE,ECAP_EVENT_4);	
    	//
    	// Select eCAP input.
    	//
    	ECAP_selectECAPInput(myECAP0_BASE,ECAP_INPUT_INPUTXBAR7);
    	//
    	// Sets a phase shift value count.
    	//
    	ECAP_setPhaseShiftCount(myECAP0_BASE,0U);
    	//
    	// Enable counter loading with phase shift value.
    	//
    	ECAP_enableLoadCounter(myECAP0_BASE);
    	//
    	// Configures Sync out signal mode.
    	//
    	ECAP_setSyncOutMode(myECAP0_BASE,ECAP_SYNC_OUT_SYNCI);
    	//
    	// Configures emulation mode.
    	//
    	ECAP_setEmulationMode(myECAP0_BASE,ECAP_EMULATION_STOP);
    	//
    	// Starts Time stamp counter for myECAP0.
    	//
    	ECAP_startCounter(myECAP0_BASE);
    	//
    	// Enables time stamp capture for myECAP0.
    	//
    	ECAP_enableTimeStampCapture(myECAP0_BASE);
    	//
    	// Re-arms the eCAP module for myECAP0.
    	//
    	ECAP_reArm(myECAP0_BASE);
    	//
    	// Enables interrupt source for myECAP0.
    	//
    	ECAP_enableInterrupt(myECAP0_BASE,(ECAP_ISR_SOURCE_CAPTURE_EVENT_4));
    
    }

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经尝试了 C2000Ware 6 中的示例 eCAP_ex2_capture_pwm、但无法将其构建。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    您看到了什么错误? 我可以帮助解决您的构建错误。

    我测试了发送给您的 eCAP 初始化、并且看到了正确的占空比/周期。

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在尝试编译时收到以下消息:

    [0]****为项目“eCAP_ex2_capture_pwm"构建“构建配置“CPU1_RAM"****“****

    [1]“C:\ti\ccs2010\ccs\\utils\\bin\gmake“-k -j 8 All -O

    [2]构建文件:“../ecap_ex2_capture_pwm.syscfg"</s>“
    [3]调用:sysconfig
    [4]“C:/ti/ccs2010/ccs/utils/sysconfig_1.25.0/sysconfig_cli.bat --script “C:/Users/Gary/workspace_ccstheia/ecap_ex2_capture_pwm/ecap_ex2_capture_pwm.syscfg -o “syscfg"-s“-s “C:/ti/C2000Ware_6_00_00_00/.metadata/sdk.json -d “F28003x"-p“-p “100PZ"-r“-r “F28003x_100PZ"--compiler“--compiler CCS
    [5]警告:SysConfig 已更新为使用标准 TI 器件型号。 器件 TMS320F280037C 已自动选择。 如果不需要这样做、请打开 SysConfig 进行更改。
    [6]正在运行脚本...
    [7]忽略以下缺失的组件:/driverlib/PeripheralComponents.js、/utilities/clb_tool/clb_syscfg/source/CLBToolComponents.js、/utilities/dcsm_tool/dcsm_syscfg/source/DCSMToolComponents.js、/utilities/cmd_tool/cmd_syscfg/source/CMDToolComponents.js、/libraries/C2000WARELibraryComponents.js、 /driverlib/clocktree/clockTreeComponents.js、/utilities/transfer/TransferComponents.js
    [8]错误:调用 scripting.AddModule() 时发生异常:没有这样的资源:/driverlib/ecap.js
    [9]搜索到的路径:
    [10]C:\ti\C2000Ware_6_00_00\driverlib\eCAP.js
    [11]C:\ti\C2000Ware_6_00_00\driverlib\.meta\eCAP.js
    [12]C:\ti\C2000Ware_6_00_00\.meta\driverlib\eCAP.js
    [13]C:\Users\Gary\workspace_ccstheia\eCAP_ex2_capture_pwm\driverlib\eCAP.js
    [14]C:\Users\Gary\workspace_ccstheia\eCAP_ex2_capture_pwm\driverlib\.meta\eCAP.js
    [15] C:\Users\Gary\workspace_ccstheia\eCAP_ex2_capture_pwm\.meta\driverlib\eCAP.js
    [16]位于 Object.AddModule (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:52:10)
    [17] at scriptFunc (C:\Users\Gary\workspace_ccstheia\eCAP_ex2_capture_pwm\eCAP_ex2_capture_pwm.syscfg:5:30)
    [18]位于 CB (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:123:13)
    [19]在 withDeprecatedAccessAsync (C:\ti\ccs2010\ccs\utils\SysConfig_1.25.0\dist\webpack src:ts:24:16) 处
    [20]在 runAsUserScriptAsync (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:93:16) 上
    [21]在 runScripts (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:121:11) 中
    [22]位于 SysConfig (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:83:8)
    [23]处于状态 (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:103:8)
    [24](位于 t.runCLI (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:48:4)
    [25]gmake:***[subdir_rules.mk:18:build-1217953697]错误 1.
    [26]gmake :目标'全部'由于错误而未重制。

    [27]*****构建完成****

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    您能否在 CCS 内共享工程的依赖项? 我还建议将 CCS2010 更新到 CCS2030 或更新的 CCS。

    如果您右键点击工程、则可以转至“properties...",“,然后、然后在“General"->“->“Dependencies"->“->“Sysconfig 和 SDK 版本的正确版本“下。

    然后尝试重建  

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它列出了各依赖项、分别为 SysConfig [1.25.0]和 C2000Ware [6.0.0.00]。  我已经在使用 CCS2030、更新内容是最新的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    我能够重现您看到的问题。 我必须从工作区中删除工程、重新导入工程并尝试重新编译、然后才能成功编译。

    我不确定错误的来源、因为我现在无法复制它。

    您能否尝试删除示例工程并从 C2000WARE 6.0.0.00 位置重新导入它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我可以删除该项目。  但是、我在尝试再次创建它时遇到了问题。  项目向导不断告诉我它在云中、并要求我再次下载它。  它在磁盘上的上一个下载位置找不到它。  无限循环。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    是否在本地运行 CCS?

    您可以尝试以下操作吗?

    转到 File -> Import Projects... ->

    找到您的 c2000ware 安装文件夹

    C:\ti\c2000\C2000Ware_6_00_00\driverlib\f28003x\examples\cap

    然后导入示例 2。  

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。  我能够加载和创建工程。  当前构建消息为:

    [0]****为项目“eCAP_ex2_capture_pwm"****创建“创建配置“CPU1_RAM"的“的纯净构建

    [1]“C:\ti\ccs2010\ccs\\utils\\bin\gmake“-k -j 8 clean -O

    [2]*****构建完成****

    [3]****为项目“eCAP_ex2_capture_pwm"构建“构建配置“CPU1_RAM"****“****

    [4]“C:\ti\ccs2010\ccs\\utils\\bin\gmake“-k -j 8 all -O

    [5]构建文件:“../ecap_ex2_capture_pwm.syscfg"</s>“
    [6]调用:sysconfig
    [7]“C:/ti/ccs2010/ccs/utils/sysconfig_1.25.0/sysconfig_cli.bat --script “C:/ti/C2000Ware_6_00_00_00/driverlib/f28003x/examples/ecap/ecap_ex2_capture_pwm/ecap_ex2_capture_pwm.syscfg -o “syscfg"-s“-s “C:/ti/C2000Ware_6_00_00_00/.metadata/sdk.json -d “F28003x"-p“-p “100PZ"-r“-r “F28003x_100PZ"--compiler“--compiler CCS
    [8]警告:SysConfig 已更新、以使用标准 TI 器件型号。 器件 TMS320F280037C 已自动选择。 如果不需要这样做、请打开 SysConfig 进行更改。
    [9]正在运行脚本...
    [10]忽略以下缺失的组件:/driverlib/PeripheralComponents.js、/utilities/clb_tool/clb_syscfg/source/CLBToolComponents.js、/utilities/dcsm_tool/dcsm_syscfg/source/DCSMToolComponents.js、/utilities/cmd_tool/cmd_syscfg/source/CMDToolComponents.js、/libraries/C2000WARELibraryComponents.js、 /driverlib/clocktree/clockTreeComponents.js、/utilities/transfer/TransferComponents.js
    [11]错误:调用 scripting.AddModule() 时发生异常:没有这样的资源:/driverlib/ecap.js
    [12]搜索的路径:
    [13]C:\ti\C2000Ware_6_00_00\driverlib\eCAP.js
    [14]C:\ti\C2000Ware_6_00_00\driverlib\.meta\eCAP.js
    [15] C:\ti\C2000Ware_6_00_00\.meta\driverlib\eCAP.js
    [16]C:\ti\C2000Ware_6_00_00\driverlib\f28003x\examples\eCAP\eCAP_ex2_capture_pwm\driverlib\eCAP.js
    [17]C:\ti\C2000Ware_6_00_00\driverlib\f28003x\examples\eCAP\eCAP_ex2_capture_pwm\driverlib\.meta\eCAP.js
    [18]C:\ti\C2000Ware_6_00_00\driverlib\f28003x\examples\eCAP\eCAP_ex2_capture_pwm\.meta\driverlib\eCAP.js
    [19]位于 Object.AddModule (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:52:10)
    [20]位于 scriptFunc (C:\ti\C2000Ware_6_00_00_00\driverlib\f28003x\examples\eCAP\eCAP_ex2_capture_pwm\eCAP_ex2_capture_pwm.syscfg:5:30)
    [21]位于 CB (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:123:13)
    [22]位于 withDeprecatedAccessAsync (C:\ti\ccs2010\ccs\utils\SysConfig_1.25.0\dist\webpack src:ts:24:16)
    [23]位于 runAsUserScriptAsync (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:93:16)
    [24](在 runScripts (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:121:11) 中
    [25]位于 SysConfig (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:83:8)
    [26]处于状态 (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:103:8)
    [27]位于 t.runCLI (C:\ti\ccs2010\ccs\utils\sysconfig_1.25.0\dist\webpack src:ts:48:4)
    [28]gmake:***[subdir_rules.mk:18: build-1217953697]错误 1.
    [29]gmake :目标'全部'没有重新制作,因为错误。

    [30]*****构建完成****

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    您似乎仍会看到相同的问题。

    [11]错误:调用 scripting.AddModule () 时发生异常:没有这样的资源:/driverlib/ecap.js
    [/报价]

    我需要将其转发给我们的软件团队。

    此致、

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否听说过软件团队的任何消息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    eCAP.js 文件位于 C:\ti\c2000\C2000Ware_6_00_00\c2000ware\driverlib\.meta\eCAP.js 中。

    您是否能够在本地找到此文件?  

    我建议您使用最新的 C2000Ware SDK 软件包 —  C2000WARE 软件开发套件 (SDK)| TI.com (版本 6.00.01)。

    从工作区中删除示例、并尝试从最新的 6.00.01 SDK 版本重新导入。 可能有一些文件从较旧的安装 SDK 软件包中删除、而 CCS 正在尝试找到它们、但找不到它们。

    请尝试使用最新的 SDK 并告诉我您的观察结果。

    谢谢

    Aswin