基于CCS6.2的平台上针对DSP2812进行的代码测试,关于ADC模块的初始化代码如下:
void F281X_ileg2_dcbus_drv_init(ILEG2DCBUSMEAS *p)
{
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all = ADC_RESET_FLAG;
asm(" NOP ");
asm(" NOP ");
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
AdcRegs.ADCTRL3.bit.ADCCLKPS = 6;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all |= ADCTRL1_INIT_STATE;
AdcRegs.ADCTRL2.all |= ADCTRL2_INIT_STATE;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1|= 0x0007;
AdcRegs.ADCCHSELSEQ1.all = p->ChSelect;
EvaRegs.GPTCONA.bit.T1TOADC = 1;
}
当屏蔽其中两条语句(AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;和AdcRegs.ADCTRL3.bit.ADCPWDN = 1;)时,程序可以正常的进行Debug调试(不过此时AD功能等于未启用);当开通上述两条语句的时候不能正常进入EV定时中断(现象上中断中设置的用户计数器显示异常,为0或2989);并且会在console界面中报出如下故障信息:
C28xx: Failed CPU Reset: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register ST1: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: GEL: Error while executing OnReset(1): Target failed to read register ST1
at (ST1&~(0x0100)) [f2812.gel:286]
at C28x_Mode() [f2812.gel:38]
at OnReset(1)
上述问题查了良久不得要领,请TI的工程师及各位江湖高手帮助分析,谢谢了。
Eric Ma:
当屏蔽其中两条语句(AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;和AdcRegs.ADCTRL3.bit.ADCPWDN = 1;)时,程序可以正常的进行Debug调试(不过此时AD功能等于未启用);当开通上述两条语句的时候不能正常进入EV定时中断(现象上中断中设置的用户计数器显示异常,为0或2989);并且会在console界面中报出如下故障信息:
Eric:
首先给你个TI的例程你先对一下初始化代码有没不同的。其次,ADC启动导致芯片工作异常,你看看关中断行不行,查看ADC结果寄存器。还有电源没问题吧?

基于CCS6.2的平台上针对DSP2812进行的代码测试,关于ADC模块的初始化代码如下:
void F281X_ileg2_dcbus_drv_init(ILEG2DCBUSMEAS *p)
{
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all = ADC_RESET_FLAG;
asm(" NOP ");
asm(" NOP ");
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
AdcRegs.ADCTRL3.bit.ADCCLKPS = 6;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all |= ADCTRL1_INIT_STATE;
AdcRegs.ADCTRL2.all |= ADCTRL2_INIT_STATE;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1|= 0x0007;
AdcRegs.ADCCHSELSEQ1.all = p->ChSelect;
EvaRegs.GPTCONA.bit.T1TOADC = 1;
}
当屏蔽其中两条语句(AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;和AdcRegs.ADCTRL3.bit.ADCPWDN = 1;)时,程序可以正常的进行Debug调试(不过此时AD功能等于未启用);当开通上述两条语句的时候不能正常进入EV定时中断(现象上中断中设置的用户计数器显示异常,为0或2989);并且会在console界面中报出如下故障信息:
C28xx: Failed CPU Reset: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register ST1: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: GEL: Error while executing OnReset(1): Target failed to read register ST1
at (ST1&~(0x0100)) [f2812.gel:286]
at C28x_Mode() [f2812.gel:38]
at OnReset(1)
上述问题查了良久不得要领,请TI的工程师及各位江湖高手帮助分析,谢谢了。
kafei zhang:
回复 Eric Ma:
Eric,你好,谢谢你提供的例程;
基于你的例程,我通过CCS6.2进行导入。编译过程中更改如下配置界面:

到如下配置界面:

同时去掉C2000编译器中如下所示的路径设置:

全编译通过后下载到我的一块单板2812上(管脚基本都是悬空的,电源的稳定性今天因为在家里没法测试),编译没有错误,正常下载到DSP2812芯片上并且可以完成DSP的初始化过程,只是ADC的中断却一直没有进入,而且ConversionCount的数据也是0或者2989,如果在AD中断中打断点的话直接就跳出程序运行了,不知道怎么分析这个事情了?
基于CCS6.2的平台上针对DSP2812进行的代码测试,关于ADC模块的初始化代码如下:
void F281X_ileg2_dcbus_drv_init(ILEG2DCBUSMEAS *p)
{
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all = ADC_RESET_FLAG;
asm(" NOP ");
asm(" NOP ");
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
AdcRegs.ADCTRL3.bit.ADCCLKPS = 6;
DELAY_US(ADC_usDELAY);
AdcRegs.ADCTRL1.all |= ADCTRL1_INIT_STATE;
AdcRegs.ADCTRL2.all |= ADCTRL2_INIT_STATE;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1|= 0x0007;
AdcRegs.ADCCHSELSEQ1.all = p->ChSelect;
EvaRegs.GPTCONA.bit.T1TOADC = 1;
}
当屏蔽其中两条语句(AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;和AdcRegs.ADCTRL3.bit.ADCPWDN = 1;)时,程序可以正常的进行Debug调试(不过此时AD功能等于未启用);当开通上述两条语句的时候不能正常进入EV定时中断(现象上中断中设置的用户计数器显示异常,为0或2989);并且会在console界面中报出如下故障信息:
C28xx: Failed CPU Reset: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: Trouble Reading Register ST1: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0)C28xx: GEL: Error while executing OnReset(1): Target failed to read register ST1
at (ST1&~(0x0100)) [f2812.gel:286]
at C28x_Mode() [f2812.gel:38]
at OnReset(1)
上述问题查了良久不得要领,请TI的工程师及各位江湖高手帮助分析,谢谢了。
kafei zhang:
回复 kafei zhang:
补充一下,打了断点后程序跳出运行并报出错的信息如下:
C28xx: Trouble Setting Breakpoint with the Action "Remain Halted" at 0x3f82be: (Error -1137 @ 0x6) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.48.0) C28xx: Breakpoint Manager: Retrying with a AET breakpointC28xx: Breakpoint Manager: Error enabling this function: DCU_SEL Register write failed
TI中文支持网



