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.

[参考译文] TMS320F2808:查询 AdcRegs.ADCRESULT 结果值

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1159440/tms320f2808-query-adcregs-adcresult-result-value

器件型号:TMS320F2808

你好。
我对 TMS320F2808 ADC 有疑问。

默认设置如下所示。

AdcRegs.ADCTRL1.bit.reset = 1U;
InitAdc ();//对于此示例,初始化 ADC
AdcRegs.ADCTRL1.bit.ACQ_PS = 0x0fU;
AdcRegs.ADCTRL3.bit.ADCCLKPS= 1U;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1U;// 1级联模式
AdcRegs.ADCMAXCONV.BIT.MAX_CONV1 = 10U;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0U;
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1U;
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2U;
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3U;
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x4U;
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x5U;
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x6U;
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x8U;
AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x9U;
AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x0AU;

AdcRegs.ADCTRL1.bit.CONT_RUN = 1U;//设置连续运行
AdcRegs.ADCTRL2.all = 0x2000U;
AdcRegs.ADCTRL1.bit.RESET = 0U;


然后是下一个
void main (void)

  while (1)
  {
   if (10msCycleTmr!= sPrevIntAdcCycle)// 10ms 周期
   {
     if (AdcRegs.ADCST.bit.INT_SEQ1 == 1U)
     {
      RegisterVal[0]=(AdcRegs.ADCRESULT0 >> 4);
      RegisterVal[1]=((AdcRegs.ADCRESULT1 >>4));
      RegisterVal[2]=((AdcRegs.ADCRESULT2>> 4));
      RegisterVal[3]=((AdcRegs.ADCRESULT3 >>4));
      RegisterVal[4]=((AdcRegs.ADCRESULT4 >>4));
      RegisterVal[5]=((AdcRegs.ADCRESULT5 >> 4));
      RegisterVal[6]=((AdcRegs.ADCRESULT6>> 4));
      RegisterVal[7]=(AdcRegs.ADCRESULT7 >> 4);
      RegisterVal[8]=(AdcRegs.ADCRESULT8>> 4);
      RegisterVal[9]=(AdcRegs.ADCRESULT9>> 4);

      AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1U;
     }
     sPrevIntAdcCycle = 10msCycleTmr;
   }
  }

我将像这样测量 ADC。

AdcRegs.ADCRESULT 的值是否可以转换为中间值而不是最终值?
我想知道 AdcRegs.ADCRESULT 是否仅显示完成的值。


谢谢你

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

    HyunSang、

    [引用 userid="539819" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1159440/tms320f2808-query-adcregs-adcresult-result-value ]AdcRegs.ADCRESULT 的值是否可以转换为中间值而不是最终值?
    我想知道 AdcRegs.ADCRESULT 是否仅显示完成的值。[/QUERP]

    您的最终陈述正确、ADCRESULT 寄存器将仅显示已完成/完全转换的值。  在新旧数据的任何边界条件下都是如此;这些寄存器中永远不会填充中间值。  在这种情况下、如果读取太早、您将获得旧数据而不是新数据。

    最棒的

    Matthew