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.
大家好,
我知道此处理器的CLB时钟来自ePWM时钟。 因此,在设置任何CLB寄存器之前,我启用了ePWM时钟,如下所示。
EALLOW;
//启用对应于CLB磁贴1的ePWM时钟
CpuSysRegs.PCLKCR2.bit.EPWM1 = 1;
Clb1LogicCtrlRegs.CLB_load_EN.bit.global_EN =1;/*启用CLB tile 1 */
.....
但是,未设置的寄存器始终为0。 检查时发现,必须通过设置DevCfgRegs.CPUSEL0.Bit.EPWM1位为ePWM1选择CPU,然后才设置CLB寄存器。
这是预料之中的吗?
所以我的问题是:CLB和相应的ePWM (它从中派生时钟)是否存在限制,它们应该位于同一个CPU上?
是否可以在CPU1中配置CLB tile 1,在CPU2中配置ePWM1?
此致,
Irene
在本设备中,特别是EPWM1和CLB。 不仅在需要HRPWM时,还需要将EPWM1分配给CPU1。 因此,对于此设备,您通常需要在CPU1上保留EPWM1和CLB。
这样说,结果是正确的。 但是,默认情况下,启动时EPWM1被分配给CPU1,您是否更改了它? 仅当您已将EPWM1所有者明确更改为CPU2时,您才需要代码行将所有者设置为CPU1。
我还看到在初始化CLB之前设置了CLB全局启用位,可以在tile init完成后设置。 这样,HLC和计数器就不会在设置时开始运行。
您好,Nima:
为了正确理解,我们是否可以在F2837xD中的CPU2中使用CLB,即使我们不需要HRPWM?
我将ePWM所有者更改为CPU2,您说的没错,因此需要将其设置回CPU1。
我在初始化CLB之前启用全局功能的原因也是因为它是C2000Ware中第一个CLB示例中遵循的顺序。 在几乎所有示例中,CLB全局启用都是在调用init_tile函数之前设置的。
因此,理想的设置方法是:
1.设置CLB逻辑配置
2.从clb_config.h调用CLB Init_tile()函数
3.设置 CLB全局启用
此致,
Irene
Irene,
因此,从技术上讲,只要您可以将EPWM1分配给CPU2,就应该能够在CPU2上使用CLB。
举例来说,你是对的,我只是看了一下,他们确实按照这个顺序,这在大多数情况下都是很好的。 但建议的模式是我发送给您的模式和sysconfig遵循的模式。 所有示例都很好,因为示例实际上不需要同时启动计数器/HLC。
NIMA