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.

MSP430F55xx_dma_04示例程序几点疑问

代码见附件.

以下是问题:

1.需要存放数据的变量,他设置了unsigned int DMA_DST; 这个变量的位置是在flash还是RAM中的?再结合__data16_write_addr((unsigned short) &DMA0DA,(unsigned long) &DMA_DST); 最终是将ADC12MEM0的值存放到了哪里?是RAM?

2.Timer_B选择了SMCLK和Up-mode,SMCLK是默认值1048576Hz,TBCCR1用来触发ADC12,那么TBCCR0和TBCCR1设置的是多长的时间?是(32768/65534)*1048576 = 524304Hz吗?

3.ADC12CTL1并没有设置SHP,就是用SHI来控制采样频率,那谁控制采样结束呢?

Thanks

  • 你好!

    1.需要存放数据的变量,他设置了unsigned int DMA_DST; 这个变量的位置是在flash还是RAM中的?再结合__data16_write_addr((unsigned short) &DMA0DA,(unsigned long) &DMA_DST); 最终是将ADC12MEM0的值存放到了哪里?是RAM?

    unsigned int DMA_DST; 这个变量的位置是在RAM中的。

    最终是将ADC12MEM0的值存放到了RAM中。

    2.Timer_B选择了SMCLK和Up-mode,SMCLK是默认值1048576Hz,TBCCR1用来触发ADC12,那么TBCCR0和TBCCR1设置的是多长的时间?是(32768/65534)*1048576 = 524304Hz吗?

    SMCLK是默认值大约1MHZ,例程中没有对UCS进行初始化,这个1MHZ是不准确的。在up mode 时TBCCR0设置timer的周期,TBCCR1为翻转的时间点,

    如果SMCLK是1MHZ,则触发频率为1048576/65534=16HZ。

    3.ADC12CTL1并没有设置SHP,就是用SHI来控制采样频率,那谁控制采样结束呢?

    是的,SHI来自于TIMER-B,例程中是set/reset模式,即采保时间为32768/1048576s=31ms。

  • 另外,用Timer触发的ADC,需不需要再单独设置SSELx了呢?若是我的Timer和ADC时钟源都选择了SMCLK

  • 不好意思哦,问题有点多!
    对于你说的触发频率和采保频率不是很明白,具体说:
    1.这里的TBCCR1使ADC采样开始,TBCCR0使采样结束经过短暂同步之后开始转换,到下一个TBCCR1再开始新的ADC采样,是这样吗?

    2.对于采保时间的求法,32768是TBCCR1的值吗?

  • 你好!

    你指的是哪个SSELx?

    Timer触发只是触发信号和采保时间由timer定,ADC的转换速度还是由ADC的时钟定。

  • 不好意思没说清楚,是ADC12CTL1的ADC12SSELx~
    还有两问题:

    1.这里的TBCCR1使ADC采样开始,TBCCR0使采样结束经过短暂同步之后开始转换,到下一个TBCCR1再开始新的ADC采样,是这样吗?

    2.对于采保时间的求法,32768是TBCCR1的值吗?

  • 你好!

    1.这里的TBCCR1使ADC采样开始,TBCCR0使采样结束经过短暂同步之后开始转换,到下一个TBCCR1再开始新的ADC采样,是这样吗?

    set/reset模式下,是到TBCCR1后翻转为高,所以是到TBCCR1后开始采样保持,TBCCR0归零时启动转换。

    2.对于采保时间的求法,32768是TBCCR1的值吗?

    高电平的值,TBCCR0-TBCCR1=32766clk

  • 我想问一下,这里的采保时间是用(CCR0-CCR1)/f求得的,那与ADC12CTL0中的SHT0的选择有什么关联?这里他选择了1024 ADC12CLK Cycles。速回,多谢!