主题中讨论的其他部件: C2000WARE, controlSUITE
工具/软件:Code Composer Studio
我尝试在 Code Composer Studio的TMS320F2.8377万S微芯片上使用示例项目“ECAP_CAPACT_PWM_cpu01”。 我正在尝试生成PWM。 该项目正在运行,但我已使用示波器测试了板上的每个引脚,没有一个引脚输出PWM。
我需要在示例项目上设置什么才能生成PWM输出?
我希望安排屏幕共享,并在正确设置此项目时获得帮助。
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.
工具/软件:Code Composer Studio
我尝试在 Code Composer Studio的TMS320F2.8377万S微芯片上使用示例项目“ECAP_CAPACT_PWM_cpu01”。 我正在尝试生成PWM。 该项目正在运行,但我已使用示波器测试了板上的每个引脚,没有一个引脚输出PWM。
我需要在示例项目上设置什么才能生成PWM输出?
我希望安排屏幕共享,并在正确设置此项目时获得帮助。
您好,Derek,
好的,感谢您发布套件信息。
我们仅限于通过e2e提供支持,但我们将尽我们所能提供支持。
----------------
您说销驱动器高? 是否仅在您加载并运行代码后才会出现此问题?
----------------
您可以通过执行以下操作手动切换销钉以验证连接:
从具有位字段定义的任何项目启动调试配置,然后启动'connect',再启动'load program'(或加载符号)
(.\ti\c2000Ware_1_00_02_00\device_support\f2837xs\examples\CPU1 \ECAP_CAPT_PWM\cpu012837 \ECAP_CAPT_PWM\cpu01项目应该可以满足此要求)
然后在 “表达式”窗口中,设置
这将GPIO4配置为通用输出。 然后,您应该能够通过更改直接控制输出状态
在“表达式”窗口中(1=高,0=低):
----------------
您尝试运行的软件是来自C2000ware,controlSUITE还是其他地方? 如果您尚未下载C2000ware的最新版本(C2000Ware_1_00_02_00),最好下载。
----------------
您是否运行了更基本的示例?
\ti\c2000\c2000Ware_1_00_02_00\device_support\f2837xs+示2000示例2837例\CPU1\flinky
这是一个很好的检查方法,因为如果您的目标配置/项目没有定义"_LAUNCHXL_F2.8377万S"(这可能会导致其他项目出现问题),则LED不会闪烁。
我正在运行来自controlSUITE的"ECAP_CAPT_PWM_cpu01"。 下面是我的示波器的屏幕截图,显示GPIO4被驱动为高电压,并保持3.3 电压的恒定输出。
我尝试运行“盲”示例,一旦我在 项目设置中定义了“_LAUNCHXL_F2.8377万S”,LED就会按预期闪烁。
我 也在"ECAP_CAPACT_PWM_cpu01"的设置中定义了"_LAUNCHXL_F2.8377万S",但应该振荡的引脚(GPIO4上的EPWM3a)仍仅被驱动为高电平,如屏幕截图所示。
您发送给我的文档和建议对我没有帮助。 TI技术支持部门的一封电子邮件告诉我,我可以通过在e2e上发布来请求屏幕共享,因此我知道有人可以与我进行屏幕共享。 我收到的电子邮件如下:
"您好,Derek,
然后检查系统时钟。 检查PLL是否正确锁定,以及设备是否以所需的SYSCLK频率运行。
InitSysCrtl(); 在此函数中,有一个调整PLLSYSCLK的函数,它与SYSCLK相同。
InitSysPll (XTAL_OSC,IMULT_40,FMULT_1,PLLCLK_BY_2);// 10 MHz* 40 * 1/2 ->然后SYSCLK以200MHz运行
查看以下建议:
很抱歉,我无权进行任何屏幕共享。 TI政策。 要申请该服务,请在e2e论坛上在线发布C2000芯片: https://e2e.ti.com/support/microcontrollers/c2000/f/171 ,如果个人同意,您可以脱机进行对话,然后继续进行。
此致,
Kishen Someshwar
TI应用支持
美国客户支持中心
512-434-1560"
请将我转至能够为我提供此屏幕共享服务的任何人。
谢谢,您发送给我的代码示例行正在帮助我取得进展。 现在我可以看到PWM振荡。 我仍然卡住,无法更改占空比。
您是否知道要写入哪个寄存器来设置占空比? 我的理解是它是CMPA,但是当我插入行"EPwm2Regs.CMPA.All"时,PWM不会以任何视觉方式受到影响。 我已尝试将其设置为多个值,但占空比保持不变。 下面是我正在使用的代码:
EALLOW;
gpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;//将GPIO4配置为EPWM3A
CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;//ePWM时钟已启用
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//ePWM时钟门控
EPwm2Regs.TBCTL.bit.CTRMODE = 0;//ePWM UP计数
EPwm2Regs.TBPRD = 25;//ePWM周期= 250 ePWM时钟= 500 SYSCLK
EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启动ePWM时钟
EPwm2Regs.TBCTL.bit.FREE_SOFT = 3;//ePWM自由运行
EPwm2Regs.CMPA.ALL = 6400;
EDIS;
您好,Derek,
ePWM输出可以切换,驱动高电平或从各种事件驱动低电平。 目前,导致输出状态更改的唯一事件是:
EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
这不取决于comare A或B的设置
如果您查看AQCTLA寄存器中的其他字段,您将看到您可以在计时器周期的不同点引起各种状态变化。 这些事件包括基于比较A和B的事件
请注意,这是因为
EPwm2Regs.TBCTL.bit.CTRMODE = 0;//ePWM UP计数
ePWM计时器仅在计数。 您可以通过将计时器设置为向上计数模式来获得更大的灵活性。
另请注意,此寄存器控制ePWM2 (当前为GPIO4)的A输出,但也有一个AQCTLB寄存器,可用于从同一时间基准控制第二个ePWM引脚(GPIO5)。 A和B输出都可以执行期间之外的操作,零,比较A和比较B事件,因此使用比较B来控制GPIO4占空因数同样有效。
我的代码现在如下所示:
"
EALLOW;
gpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;//将GPIO4配置为EPWM3A
CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;//ePWM时钟已启用
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//ePWM时钟门控
EPwm2Regs.TBCTL.bit.CTRMODE = 2;//ePWM向上/向下计数
EPwm2Regs.TBPRD = 10万;//ePWM周期= 250 ePWM时钟= 500 SYSCLK
EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
EPwm2Regs.AQCTLA.bit.CAU = 3;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启动ePWM时钟
EPwm2Regs.TBCTL.bit.FREE_SOFT = 3;//ePWM自由运行
EPwm2Regs.CMPA.ALL = 7.5万;
EDIS;"
我已将TBPRD设置为高于CMPA,将TBCTL设置为上升-下降计数,并将AQCTLA设置为切换信号。 我仍然无法更改占空比。
我写的是正确的寄存器吗? 现在,我尝试将占空比设置为"EPwm2Regs.CMPA.ALL = 7.5万;"。