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.

[参考译文] MSP430F5172:带有 DMA 的 ADC 的时钟设置

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1021518/msp430f5172-clock-setting-for-adc-with-dma

器件型号:MSP430F5172

您好!  

我已经编写了一个代码、用于使用来自电压和电流传感器的 DMA 获取 ADC 值。 我目前正在使用 MODOSC、根据数据表、该 MODOSC 的频率为5MHz、采样保持时间为16个 ADC 周期。  

那么,有效采样时间是1/5MHz*16=3.2us (不考虑延迟周期)是正确的吗?

DMA 是否可与其他时钟模式配合使用、例如辅助时钟、主系统或子系统主时钟? 使用这些时钟时、我没有获得正确的 ADC 值? 下面是我对 ADC 和 DMA 以及 main 中用于获取 ADC 值的 while 循环所做的配置代码。  

while (1)


while (ADC10CTL1 & BUSY);//如果 ADC10内核处于活动状态则等待
ADC10CTL0 |= ADC10ENC + ADC10SC;//采样和转换准备就绪
_bis_SR_register (CPUOFF + GIE);// LPM0、ADC10_ISR 将强制退出

//__delay_cycles (5000);//序列转换之间的延迟
__no_operation ();//断点;检查 ADC_Result

/配置 ADC 通道
void SetADC (){
ADC10CTL0 = ADC10SHT_2 + ADC10MSC + ADC10ON;// 16xADC 时钟周期、多采样转换、ADC10ON
ADC10CTL1 = ADC10SSEL_0+ADC10SHP+ ADC10CONSEQ_1;// ADCCLK = MODOSC;采样信号来源于采样定时器、单次序列
ADC10CTL2 = ADC10RES;// 10位转换结果
ADC10MCTL0= ADC10INCH_8 + ADC10SREF_1;//选择 ADC 通道;使用 VR+= VREF 和 VR-= AVSS

//默认情况下、REFMSTR=1 => REFCTL 被用来配置内部基准
while (REFCTL0 & REFGENBUSY);//如果基准发生器忙,请等待
REFCTL0 |= REFVSEL_2 + REFON;//选择内部基准= 2.5V
_DELAY_CYCLS (75);//参考建立延迟(~75us)-ADC10采样和转换=(32+13)*2/SMCLK = 90/SMCLK = 75us

void SetDMA(){
//配置 DMA0 (ADC10IFG 触发器)
DMACTL0 = DMA0TSEL_24;// ADC10IFG 触发器
__data20_write_long ((uintptr_t)&DMA0SA、(uintptr_t)&ADC10MEM0);//源单地址
__data20_write_long ((uintptr_t)&DMA0DA、(uintptr_t)&ADC_Result [0]);//更新目标数组地址
DMA0SZ = 0x09;// 8次转换-字节或字传输的数量

谢谢你。  
DMA0CTL = DMADT_4 + DMADSTINCR_3 + DMAEN + DMAIE;// Rpt、inc dest、字节访问、在转换序列后启用 int

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

    1)是的、采样时间将为16/5MHz=3.2usec。 请记住、ADC10OSC 没有严格指定(+/-12.5%)。 [参考数据表(SLAS619R)第5.39节]  

    2) DMA 始终使用 MCLK [参考用户指南(SLAU208Q)第11.2.7节]。 如果 MCLK 被关闭(LPM)、DMA 将短暂地启动 MCLK。

    3) 3) ADC 读数有何错误? 您应确保采样/保持时间(SHT)适合您的传感器的源阻抗[参考用户指南第27.2.5.3节]。 (在夹紧时、只需尝试增大 SHT"并查看其是否起作用。)