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.

[参考译文] CCS/TMS320F28379D:如何选择 ADC1-B2

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/664714/ccs-tms320f28379d-how-to-select-adc1-b2

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

你好

我正在尝试测量 TI 实验套件(TMS320F28379D)引脚31处的电压。

到目前为止、所有其他 ADC 转换都使用以下代码工作正常:

   ///--------------------
   //线1中的电流测量- SOC0
   ///--------------------
   AdcaRegs.ADCSOC0CTL.bit.CHSEL = SENSE_LEM1;    //SOC0将转换引脚 ADC1A0
   AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;         //采样窗口
   AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;      // ePWM1 SOCA 上的触发器、请参阅数据表中的第1347/2472页以了解概述

我现在尝试设置一个测量引脚31的 ADC、根据 controlCARD 引脚分配、该 ADC 应为 ADC1-B2。

但是、在参考手册 p 1357/2672中、我找不到这个 B2;它们都将引脚称为 ADCIN0、ADCIN1、ADCIN2……并且我将这些(我猜)用于 ADC1-A1 (ADCIN1)。

不过、我想知道如何选择该引脚? B 不代表 ADC2、对吧?

有人可以帮我解决这个问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simon
    在 F28379D 中、有一个新的 ADC 架构:有4个 ADC (A、B、C、D)、每个 ADC 有8个输入。
    我想在将来、TI 可以提供所需的 ADC、这就是他们不能单独引用每个 ADC 的原因。 相反、它们描述了一个具有8个输入的 ADC、其表达方式与"ADCIN1"类似、因为所有 ADC 都具有相同的结构。 例如、对于 ADC-B、该毛刺将为"ADCINB1"、或者您需要的任何东西。

    回到您的问题:如果您要测量 ADC-B 的 ADCIN1输入、则必须使用 ADCB - AdcbRegs.ADCSOC0CTL 等的寄存器 在您的帖子中、有一个"AdcaRegs"代码。 只需复制它并将"AdcaRegs"更改为"AdcbRegs"、然后尝试运行您的项目。

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

    感谢您的回复:)现在我更清楚了。
    我再次检查、该引脚显然连接到 ADC C-2、因此我将代码更改为:
    AdccRegs.ADCSOC1CTL.bit.CHSEL = SENSE_Vout; //SOC1将转换引脚 ADC C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = acqps;
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 0x05; //Deze staat Nu getriggerd op dezelfde als de ingangsspanningsmetting、kan/MAG dit?

    但是在调试窗口中、我觉得它仍然不起作用。 我的所有其他 ADC 结果始终呈黄色闪烁并更新其测量值、但该结果不执行任何操作、且具有恒定值18084。 是否可能需要以某种方式对三糖进行调整? 我现在在 EPWM1、SOCA 上触发、它适用于 ADC A0。。。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯...
    代码对我来说看起来很好。 供参考您可以将 ADCSOC0CTL 用于 ADC-C 每个 ADC 都有自己的 SOCCTL 寄存器。
    您是否在代码开头使用 ADCB 参数调用了"AdcSetMode()函数?

    例如、以下是我的代码的外观(已检查和测试):

    //触发定时器初始化
    EPwm4Regs.TBPRD =(CPU_FREQ / 2)* 1000/ADC_OPS_FREQ / 2 - 1;//(200MHz/2 (ePWM 时钟为100MHz、而非200MHz))/ 64kHz/2 (上行)
    
    EPwm4Regs.ETSEL.bit.SOCAEN = 1;//启用 SOCA
    EPwm4Regs.ETSEL.bit.SOCASEL = 1;//计时器= 0时的 SOC
    EPwm4Regs.ETPS.bit.SOCAPRD = 1;//在发生第一个事件时生成脉冲
    EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
    // ADC 初始化
    EALLOW;
    AdcaRegs.ADCCTL2.bit.prescale = 6; //将 ADCCLK 分频器设置为/4
    AdcSetMode (ADC_ADCA、ADC_Resolution_12位、ADC_SIGNALMODE_SINGLE);//非差分信号、12位分辨率
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1; //在 S/H 后立即中断
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //加电 ADC
    
    AdcbRegs.ADCCTL2.bit.prescale = 6; //将 ADCCLK 分频器设置为/4
    AdcSetMode (ADC_ADCB、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);//非差分信号、12位分辨率
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1; //在 S/H 后立即中断
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1; //加电 ADC
    
    AdccRegs.ADCCTL2.bit.prescale = 6; //将 ADCCLK 分频器设置为/4
    AdcSetMode (ADC_ADCC、ADC_Resolution_12位、ADC_SIGNALMODE_SINGLE);//非差分信号、12位分辨率
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1; //在 S/H 后立即中断
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1; //加电 ADC
    
    //设置 ADC 通道
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 10; //采样保持窗口:10个周期
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 14;//通道 ADCIN14 -- UDC
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 0xB;//触发- EPwm4
    
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 10; //采样保持窗口:10个周期
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//通道 ADCINB2 -- IB
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 0xB;//触发- EPwm4
    
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 10; //采样保持窗口:10个周期
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//通道 ADCINC2 -- IA
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 0xB;//触发- EPwm4