1907|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430F4250 AD解读 [复制链接]

1.关于MSP430F4250:


2.关于MSP430F4250 AD:
参考MSP430X4XXFamily User’s Guide:
关于16位AD采样有两种:



2.1 MSP430F4250选的是哪种?

其实

不是软件设置哪种,而是型号决定,由上述可知,MSP430F4250使用的是SD16_A
2.2 MSP430F4250 AD的输入电压范围是多少?
此时参考的手册需要更换为MSP430F42X0手册:
2.3 MSP430F4250 AD的转换结果在哪?数据格式是什么?
继续参考MSP430X4XX Family User’s Guide手册:
其中SD16UNI和SD16DF都是SD16CCTLx(其中x是用户选择的通道编号)寄存器中的两位。
另外补充,关于FSR:
MSP430F4250 AD有内部参考电压1.2V,如果设置了选取内部参考电压,那么FSR = 1.2V/2/GAIN= 0.6V(当GAIN = 1时)。
如果没有选取内部参考电压,那么FSR = Vref/2/GAIN(想得到最大的输入范围,就把AVcc[3.3v]接到单片机的Vref引脚上)。(纯属个人理解和设
置,最高只试过1.6V的,但是手册上的意思应该可以0-3.3V,暂时没有尝试)。
是否选择内部参考电压,在SD16CTL寄存器中的:
2.4 MSP430F4250 AD的转换速率?
参考MSP430X4XX Family User’s Guide手册,AD转换速率和单片机时钟配置有关:
可知如果使用32768-Hz的外部晶振,则CPU主时钟MCLK=外设时钟SMCLK=1MHz左右(默认值,如果想要改变则可以通过设置SCFQCTL和SCFI0进行倍频)。AD设置时钟源可以选择是ACLK(32768Hz)和SMCLK(1MHz),AD时钟选择上选择SMCLK(SMCLK=MCLK为最快)即可得到最快的转换速率,下面是一种设置下的转换速率的说明:
  1. #include  <msp430x42x0.h>


  2. #define   Num_of_Results   80

  3. /* Arrays to store SD16_A conversion results */
  4. /* NOTE: arrays need to be global to       */
  5. /*       prevent removal by compiler       */
  6. static unsigned int results[Num_of_Results];

  7. void main(void)
  8. {
  9.   volatile unsigned int i;                  // Use volatile to prevent removal
  10.                                             // by compiler optimization

  11.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  12.   FLL_CTL0 |= XCAP14PF;                     // Configure load caps
  13.   for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal to
  14.                                             // stabilize
  15.   P1SEL = 0;                                //GPIO
  16.   P1DIR = 0xff;                             //out
  17.   
  18.   SD16CTL = SD16REFON+SD16SSEL0;            // 1.2V ref, SMCLK
  19.   SD16INCTL0 |= SD16INTDLY_0;               // Interrupt on 4th sample
  20.   SD16CCTL0 |= SD16IE ;                     // Enable interrupt
  21.   for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup

  22.   _EINT();                                  // Enable general interrupts

  23.   SD16CCTL0 |= SD16SC;                      // Set bit to start conversion
  24.   _BIS_SR(LPM0_bits);                       // Enter LPM0
  25.   
  26. }

  27. #pragma vector=SD16_VECTOR
  28. __interrupt void SD16ISR(void)
  29. {
  30.   static unsigned int index = 0;

  31.   switch (SD16IV)
  32.   {
  33.   case 2:                                   // SD16MEM Overflow
  34.     break;
  35.   case 4:                                   // SD16MEM0 IFG
  36.     results[index] = SD16MEM0;              // Save CH0 results (clears IFG)
  37.     P1OUT = 0x03;                           //Pin 0,1 out 1
  38.     if (++index == Num_of_Results)
  39.     {
  40.       index = 0;                            // SET BREAKPOINT HERE
  41.       //SD16CCTL0 &=~ SD16SC;
  42.       P1OUT = 0x00;                         //Pin 0,1 out 0   
  43.     }
  44.     break;
  45.   }
  46. }
复制代码
AD代码的示波器测试:(通过观察P1.0输出)
连续转换的每次转换时间为224us,转换80次为19.6ms。

以上纯属个人见解,初学者可以参考但一切以官方手册为准。


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表