TI中文支持网
TI专业的中文技术问题搜集分享网站

【TI 测评】+msp432 等间隔AD采样

等间隔AD采样

本测试为系列测试的第二个测试,等间隔AD采样测试。

1.    基本原理描述

本次测试为等间隔采样测试,其基本设计想法是,通过TIMER A的比较输出产生一个等间隔的AD转换信号,触发AD定时完成AD转换动作,并记录转换结果,通过uart展示AD转换结果。

产生的转换信号频率为128次/20ms,单次转换时间为156.25us。采用P55作为模拟量输入引脚。如下图开发板引脚定义中A0-P5.5。

开发板引脚定义:

  

2.    系统时钟设置

初始化系统工作于48MHz,同时调整MCLK为HFXT时钟源,SMCLK采用内部DCO时钟(3MHz)。

CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48);CS_initClockSignal(CS_MCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1 );CS_initClockSignal(CS_HSMCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_2 );CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1 );CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1 );

 

这里必须强调一句,必须将Flash的等待延时设置为3以上

/* Set 2 flash wait states for Flash bank 0 and 1*/FlashCtl_setWaitState(FLASH_BANK0, 3);FlashCtl_setWaitState(FLASH_BANK1, 3);

之前的调试这个值设置为2,总是不正确,改为3后系统可以真确运行了。依据MSP432P401R的数据手册中的相关说明,如下表所示,48Mhz时对应flash wait states为3.

 

3.    ADC的设置

由于转换速度较快,因此初始化ADC的时钟为MCLK,4分频24MHz。ADC可以工作的最高频率为25MHz。

ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_4, 0);

选用TIMER A0 的CCR1和CCR0构成的比较输出作为ADC的转换控制信号。

      从用户手册中我们可以看到ADC14SHSx可以有8种采样控制输入源。

      从数据手册中可以找到ADC的外部触发源信号,如下表所示,001对应TA0_C1的比较输出信号。这个信号是准备选用的采样控制信号。

函数,设置触发源1:

ADC14_setSampleHoldTrigger(ADC_TRIGGER_SOURCE1, false);

4.    TIMER A的设置

      初始化定时器,由于希望定时周期为156.25us产生一次触发信号,因此,定时器的周期为156.25us

      选用SMCLK作为定时器的时钟源,3分频后,定时器的实际计数频率为1MHz。

      可得周期值为v = 156.25us*1M*10-6 = 163.84≈164 。因此设置CCR0 = 164.

      比较输出CCR1的比较值选择CCR0的1半,同时设置比较数据为set/reset模式。

定时器的设置为:

/* Timer_A Continuous Mode Configuration Parameter */

const Timer_A_UpModeConfig upModeConfig =

{TIMER_A_CLOCKSOURCE_SMCLK,// SMCLK Clock SourceTIMER_A_CLOCKSOURCE_DIVIDER_3,// SMCLK/1 = 1Mhz164,TIMER_A_TAIE_INTERRUPT_DISABLE,// Disable Timer ISRTIMER_A_CCIE_CCR0_INTERRUPT_DISABLE, // Disable CCR0TIMER_A_DO_CLEAR// Clear Counter

};

/* Timer_A Compare Configuration Parameter */

const Timer_A_CompareModeConfig compareConfig =

{TIMER_A_CAPTURECOMPARE_REGISTER_1,// Use CCR1TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE,// Disable CCR interruptTIMER_A_OUTPUTMODE_SET_RESET,// Toggle output but82//

};

 

5.    实测效果

将A0接3.3V,读数应该接近最大值16384;将A0接GND,读数应该为0.

 

Susan Yang:

谢谢分享!

xyz549040622:

不错,这个支持下!

WAYNE WANG:

不错,这个支持下!

user4637920:

这个评测很详细,从原理开始描述,有代码,有过程描述,最后还有展示的效果,评测很用心。
对每个需要用到的功能都做了配置描述,对于大家有比较好的参考价值。

我爱下载:

回复 user4637920:

谢谢大佬鼓励

user6186424:

很有用   关于flash 延时这个点在使用的时候很容易忽视  作者很细致 

我爱下载:

回复 user6186424:

谢谢鼓励

user5129046:

谢谢分享,讲解的很详细,附上了代码,更有助于学习,很棒

user4483732:

从文章质量上来看很不错,非常用心,过程写的很详细,很适合新手观看学习。

user4745244:

想知道AD间隔采样比起DMA有何区别,有哪些优势?

赞(1)
未经允许不得转载:TI中文支持网 » 【TI 测评】+msp432 等间隔AD采样
分享到: 更多 (0)