TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335 ECAP的所有寄存器的值全都不能配置!!!

F28335,在初始化的时候 什么RPWM 什么ADC等等,这些寄存器值的配置完全正确;就是说我给寄存器配多少,它就是多少

但是,当我给F28335的ECAP寄存器配置的时候,ECAP所有的寄存器全部配置不了; 无论是否加了EALLOW等,ECAP的寄存器死活就配置不了,基本上全部为0,一直是0,死活都不给配置!!!!!!!!

是不是有可能DSP坏了???????

任何一个ECAP的寄存器都配置不了,全都是默认值,怎么改都改不了??

请问 这是为什么呢》》???

Victor Zheng:

看看ECAP的外设时钟打开没有。具体在InitSysCtrl()里void InitPeripheralClocks(void)有没有这么几句话

   SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK = 1;  // eCAP3   SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1;  // eCAP4   SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1;  // eCAP5   SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1;  // eCAP6   SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1;  // eCAP1   SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = 1;  // eCAP2

F28335,在初始化的时候 什么RPWM 什么ADC等等,这些寄存器值的配置完全正确;就是说我给寄存器配多少,它就是多少

但是,当我给F28335的ECAP寄存器配置的时候,ECAP所有的寄存器全部配置不了; 无论是否加了EALLOW等,ECAP的寄存器死活就配置不了,基本上全部为0,一直是0,死活都不给配置!!!!!!!!

是不是有可能DSP坏了???????

任何一个ECAP的寄存器都配置不了,全都是默认值,怎么改都改不了??

请问 这是为什么呢》》???

Young Hu:

如果怀疑DSP坏了,可以下载个ECAP的例程试试。。比对下,您的程序与例程的初始化部分的区别是什么

F28335,在初始化的时候 什么RPWM 什么ADC等等,这些寄存器值的配置完全正确;就是说我给寄存器配多少,它就是多少

但是,当我给F28335的ECAP寄存器配置的时候,ECAP所有的寄存器全部配置不了; 无论是否加了EALLOW等,ECAP的寄存器死活就配置不了,基本上全部为0,一直是0,死活都不给配置!!!!!!!!

是不是有可能DSP坏了???????

任何一个ECAP的寄存器都配置不了,全都是默认值,怎么改都改不了??

请问 这是为什么呢》》???

Vieri Xue:

你好。

关于C2000系列的芯片,如果有寄存器配置不上的问题,可能是由如下几个原因:

(1)外设的CLOCK没有打开。每一个外设都对应一个CLK的使能信号,如果CLK不打开的话,配置该外设所有的寄存器都无效;针对该问题,请确认SysCtrlRegs.PCLKCR1.bit.ECAPxENCLK是否有配置成使能状态;

(2)所有的EALLOW保护的寄存器在配置之前,要先进入EALLOW状态,配置完毕之后,要EDIS。对于ECAP来说,没有寄存器是EALLOW保护的,所以,基本上不用考虑这个问题;

(3)有的寄存器是无能写入的,或者是写1清零的那种,对于这种寄存器,即使对寄存器赋值,也不会改变寄存器的内容。

不知道你是如何得知寄存器不能配置的,但是针对你的情况,我觉得很有可能是你的ECAP的CLK没有打开导致的。

另外,下面附着我在应用中使用的ECAP1的配置代码,用于产生交流市电过零中断,以此来计算市电的频率:

void sInitECap(void){   ECap1Regs.ECEINT.all = 0x0000;             // Disable all capture interrupts   ECap1Regs.ECCLR.all = 0xFFFF;              // Clear all CAP interrupt flags   ECap1Regs.ECCTL1.bit.CAPLDEN = 0;          // Disable CAP1-CAP4 register loads   ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;        // Make sure the counter is stopped      // Configure peripheral registers   ECap1Regs.ECCTL1.bit.PRESCALE = 0;    //BYPASS THE prescaler   ECap1Regs.ECCTL2.bit.CAP_APWM = 0;  //capture mode   ECap1Regs.ECCTL2.bit.CONT_ONESHT = 1; // Oneshot mode

   ECap1Regs.ECCTL1.bit.CAP1POL = 1;          // Falling edge   ECap1Regs.ECCTL1.bit.CAP2POL = 1;          // Falling edge   ECap1Regs.ECCTL1.bit.CAP3POL = 1;          // Falling edge   ECap1Regs.ECCTL1.bit.CAP4POL = 1;          // Falling edge      ECap1Regs.ECCTL1.bit.CTRRST1 = 0;          // Don't reset the counter   ECap1Regs.ECCTL1.bit.CTRRST2 = 0;          // Don't reset the counter           ECap1Regs.ECCTL1.bit.CTRRST3 = 0;          // Don't reset the counter          ECap1Regs.ECCTL1.bit.CTRRST4 = 0;          // Don't reset the counter              ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;         // Disable sync in   ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;        // Pass through      ECap1Regs.ECCTL1.bit.CAPLDEN = 1;          // Enable capture loads   ECap1Regs.ECCTL2.bit.STOP_WRAP = 1;    ECap1Regs.ECCTL2.bit.REARM = 1;      ECap1Regs.ECEINT.bit.CEVT1 = 1;            // CAP1 trigger the interrupt   

   ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;        // Start Counter }

赞(0)
未经允许不得转载:TI中文支持网 » F28335 ECAP的所有寄存器的值全都不能配置!!!
分享到: 更多 (0)