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.

[参考译文] MSP430F6777A读取ADC序列通道总转换完成时间

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1099846/msp430f6777a-reading-adc-sequence-channel-total-conversion-completed-time

您好,

如何计算所有信道的总转换时间。 我的计算结果就是这样。

 

AD10OSC = 5mhz,

分禾器= 2,

采样=16周期,  

转换= 13个周期,  

从A5到a0有6个通道。  

所以我的计算就是这样。  

1周期= 1/5mhz (div2)= 1/2.5MHz = 0.4us

一个通道的总转换完成时间= 1个周期*(16 +13)= 29个周期= 2.4us

对于所有信道,29 * 6 = 174个周期= 69.6us,因此DMAISR将在每个69.6us之后触发。  

我的计算正确吗?  

代码如下所示。

void ADC_INIT (void)
  
  ADC10_a_init (ADC10_a_base,
         ADC10_A_SAMPLEHOLDSOURCE_SC,
         ADC10_A_CLOCKSOURCE_ADC10OSC,
         ADC10_A_CLOCKDIVIDER_2);

  ADC10_A_ENABLE (ADC10_A_BASE);

  ADC10_A_setupSamplingTimer(ADC10_a_base,
                ADC10_A_CYCLEHOLD_16_CYCLES,
                ADC10_A_MULTIPLESAMPLESENABLE);

  ADC10_A_configureMemory (ADC10_a_base,
              ADC10_A_Input_A5,
              ADC10_A_VREFPOS_AVCC,
              ADC10_A_VREFNEG_AVSS);

  //初始化和设置DMA通道0
  dma_initParam参数={0};
  param.channelSelect = dma_channel_0;
  Param.transferModeSelect = dma_transfer_altered_single;
  Param.transferSize =6
  PARAM.TriggerSourceSelect = DMA_TRIGGERSOURCE_24;//ADC10中断标志
  Param.transferUnitSelect = DMA_Size_SRCWORD_DSTWORD;
  Param.triggerTypeSelect = DMA_TRIGG_RISINGEDGE;
  dma_init(&param);
  
  dma_setSrcAddress(DMA_channel_0,
      ADC10_a_getMemoryAddressForDMA(ADC10_a_base)
      DMA_Direction_Unchanged);

  dma_setDstAddress(DMA_channel_0,
           (UINT32_t) ADC_TABLE
           DMA_Direction_Increment);

  //启用DMA通道0中断
  DMA_clearInterrupt (DMA_CHANGE_0);
  dma_enableInterrupt (dma_channel_0);

  //在DMA通道0上启用传输
  dma_enableTransfers(DMA_channel_0)
  ADC10_a_startConversion (ADC10_a_base,ADC10_a_SEQOFCHANNELS);
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,fhiz:

    我还没有机会去研究这个问题,但我很快就会回来。

    此致,

    Evan

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

    您好,fhiz:

    您的计算 结果看起来准确,并且似乎是重要的计时考虑因素。 需要注意的其他一些事项:

    • ADC的接通时间为100ns (参见数据表中的表5-48)
    • VREF稳定时间为~25us (请参阅用户指南中的27.2 .3.1)

    我看不到您在共享的代码中设置参考电压,如果您计划使用内部电压参考,则需要执行此操作。 总的来说,您的计算结果看起来不错,但我始终建议在设备上尝试代码,以获得对计时的可靠确认。

    此致,

    Evan

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

    您好,Evan:  

    感谢您的回复。  您能否建议一种衡量时间的方法?  或者,在ISR中切换任何引脚是否足够?

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

    我认为在操作开始和结束时切换针脚应该足够好。