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.

[参考译文] TMS320F28335:AD 读取值始终为0

Guru**** 1142300 points
Other Parts Discussed in Thread: C2000WARE, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1207225/tms320f28335-ad-read-value-is-always-0

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WAREcontrolSUITE

大家好、

客户使用附加的程序、 开发板调试可以正常读取 AD 值、但我们设置的电路板 AD 值始终为0。

ADC 程序:

void DriverDspAdcInit(void)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; //使能ADC的时钟
ADC_cal(); //调用ADC_cal汇编语言,它是TI官方提供的。
EDIS;
AdcRegs.ADCREFSEL.bit.REF_SEL = 0x0; // 选择内部参考电压
AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits

DELAY_US(50000L); // Delay before converting ADC channels
// AdcRegs.ADCTRL3.bit.SMODE_SEL=0;//
AdcRegs.ADCTRL3.bit.SMODE_SEL=1;// 1 同步采样模式
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 0x0 Dual Sequencer Mode, 0x1 Cascaded Mode
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x04; // Fclk = HSPCLK/2 = 37.5MHz
AdcRegs.ADCTRL1.bit.CPS = 1; // ADCCLK = Fclk/2 = 18.75MHz
AdcRegs.ADCTRL1.bit.CONT_RUN=0;//0 非连续

AdcRegs.ADCTRL1.bit.ACQ_PS = 0x01; // 设置启动脉冲的宽度
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x0; // 使能INT_SEQ1中断
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1; // Reset SEQ/SEQ1
AdcRegs.ADCTRL2.bit.RST_SEQ2 = 0x1; // Reset SEQ/SEQ2
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=0x1; // 允许SEQ/SEQ1被EPWMA_SOCA信号触发启动

// AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 6; // Dummy meas. avoid 1st sample issue Rev0 Picollo*/
// AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; // A1-> Phase A Current
// AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2; // B1-> Phase B Current
// AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 3; // A3-> Phase C Current
// AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 4; // B7-> Phase A Voltage TEMP
// AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 5; // B6-> Phase B Voltage TEMP MOTOR
// AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 12; // B4-> Phase C Voltage
// AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 6; // A7-> DC Bus Voltage

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // Dummy meas. avoid 1st sample issue Rev0 Picollo*/
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; // A1-> Phase A Current
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2; // B1-> Phase B Current
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 3; // A3-> Phase C Current
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 4; // B7-> Phase A Voltage TEMP
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 5; // B6-> Phase B Voltage TEMP MOTOR
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 6; // B4-> Phase C Voltage
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 7;

AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 7;

EDIS;

/* Set up Event Trigger with CNT_zero enable for Time-base of EPWM1 */
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // 使能ADC启动脉冲ePWMxSOCA
EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD; // TBCTR = PEROID 时产生SOCA中断,因为IR2136反向的。
EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST; // 每发生一次事件,产生信号EPWM1SOCA
EPwm1Regs.ETCLR.bit.SOCA = 1; // Clear SOCA flag */
}

硬件设计: 5KW_Invertion.pdf

您能帮助检查这个问题吗?

谢谢。此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ben、您好!

    我对帖子的措辞感到有点困惑、那就是客户是否能够读取施加到输入端的电压、还是始终读为0? 客户是否通过从 C2000Ware 中运行其中一个示例工程进行了调试、以验证他们是否可以从器件中读取已知电压? (C2000Ware_4_XX_XX_XX\DEVICE_SUPPORT\F2833x\examples\ADC_SoC)

    如果他们获得的 ADC 结果不是0、您能否将它们附加在此处?

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Omer:

    我正在使用 TI 例程 (__LW_AT__C:\ti\controlSUITE\device_support\F2833x\v142\DSP2833x_examples_ccsv5\adc_soc)、测试结果仍然为0。

    转换计数正在改变  ,我们使用相同的例程测试开发板,并获取结果。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ben、您好!

    您能否向我展示 ADC 的电压基准的配置方式以及 ADC 的输入信号是什么(即是直流信号、交流信号、其电压/频率是多少等)?

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Omer:

    问题与1.9V 电源电路有关、他们使用了跳线解决了问题。 感谢你的帮助。

    此致、