Thread 中讨论的其他器件: TMS570LS3137
工具与软件:
我们正在尝试禁用 TMS570LS0332处理器上未使用的外设、特别是 DCAN1和 DCAN2外设、它们分别与 pcrREG->PSPWRDWNSET1位0和2相关、因此将值0x5写入寄存器:
PCR。 PSPwrDwnSet1 = 0x5
设置该位适用于 DCAN1 (位0)、但不适用于 DCAN2 (位2)、因此当读回 PSPwrDwnSet1 寄存器时、该值为:0x1
一旦外设在 periphInit()函数中启动、处理器似乎不允许禁用 DCAN2。
在执行 periphInit ()函数之前, PCR 的默认值。 PSPwrDwnSet1设置为0x5、这意味着默认情况下禁用它们
但在执行 periphInit ()函数内的指令后、PSPWRDWNSET1寄存器中的 DCAN2相关位会被设为0、而且无法再将其设回1、从而无法再禁用 DCAN2外设。
以下是 periphInit ()中的代码:
void periphInit (void)
{
/**-在时钟上电之前禁用外设*/
systemREG1->CLKCNTL &= 0xFFFFFFU; // Pena = 所有外设/外设存储器帧都处于复位状态。
/**-为所有外设时钟上电*/
pcrREG->PSPWRDWNCLR0 = 0xFFFFU;
pcrREG->PSPWRDWNCLR1 = 0xFFFFFFFFU;
pcrREG->PSPWRDWNCLR2 = 0xFFFFFFFFU;
pcrREG->PSPWRDWNCLR3 = 0xFFFFFFFFU;
/**-启用外设*/
systemREG1->CLKCNTL |= 0x00000100U;// Pena = 所有外设/外设存储器帧均未复位。
}// periphInit 结束
附注 我们已尝试通过设置 PSPWRDWNCLR1 = 0xFFFFFFFBU 将 DCAN2外设从初始化中移除、但从此时开始仍无法使用 PCR 禁用外设。