打印

MSP430AEF253的SD24位采样数据位数问题,高16位和低16位是有重叠的部分吗

[复制链接]
1980|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
september119|  楼主 | 2017-5-3 12:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430AEF253的SD24位采样数据位数问题,高16位和低16位是有重叠的部分吗?

1.如果按照手册里面写的是24位,可为什么手册里面又写15-30位的范围呢?



如上图那第一次采集的高16位是13到28,低位是0-15,那难道13-15位是重叠的吗?如果重叠那位数不变成了29位,请解答!

2.如果默认值采集高16位,输入端电压29mv,采集到的值乱七八糟,一直跳动,也不知道如何计算,是按16位计算,还是24位呢,2种我都试了结果也不是29mv.满量程600mv算的。
3.void main(void)
{
volatile unsigned int i; // Use volatile to prevent removal
// by compiler optimization

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
_EINT();//开总中断
SD24CTL = SD24REFON + SD24SSEL0; // 1.2V ref, SMCLK
SD24CCTL1 |= SD24IE ; // Enable interrupt

for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
SD24CCTL1 |= SD24SC; // Set bit to start conversion
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupts

}
#pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
static unsigned int index = 0;
unsigned char i;
long sum=0;
switch (SD24IV)
{
case 2: // SD24MEM Overflow
break;
case 4: // SD24MEM0 IFG
break;
case 6: // SD24MEM1 IFG
results[index++] = SD24MEM1; // Save CH2 results (clears IFG)
if (index == Num_of_Results)
{
for(i=0;i<10;i++)sum+=results;
Ch0Adc=(sum/10);
index = 0;
sum=0; // SET BREAKPOINT HERE
}
break;
case 8: // SD24MEM2 IFG
break;
}
}

按例程里的修改成了采样A1.1,测量应该是29mv,可是采样的结果也是看不懂,34303*0.6/65536=0.314????按16位算怎么这个结果

相关帖子

沙发
greatbin| | 2017-5-3 12:50 | 只看该作者
LZ你买到的253多少钱一片呀

使用特权

评论回复
板凳
xiaoyaodz| | 2017-5-3 16:08 | 只看该作者
这个在手册里面是怎么配置的寄存器

使用特权

评论回复
地板
xiaoyaodz| | 2017-5-3 16:12 | 只看该作者
某个寄存器肯定存在不同保存渠道的数值。

使用特权

评论回复
5
dirtwillfly| | 2017-5-3 20:46 | 只看该作者
楼主,你的第一个图片挂了

使用特权

评论回复
6
september119|  楼主 | 2017-5-4 08:41 | 只看该作者
greatbin 发表于 2017-5-3 12:50
LZ你买到的253多少钱一片呀

8块多

使用特权

评论回复
7
september119|  楼主 | 2017-5-4 08:42 | 只看该作者
dirtwillfly 发表于 2017-5-3 20:46
楼主,你的第一个图片挂了

使用特权

评论回复
8
september119|  楼主 | 2017-5-4 08:43 | 只看该作者
有没有人可以解答下我的问题的呢

使用特权

评论回复
9
lihuami| | 2017-5-7 16:13 | 只看该作者
void SD24Init(void)
{
  uint16_t i = 0;
  SD24CTL = SD24REFON | SD24SSEL0 | SD24DIV_3;
  SD24CCTL0 = (SD24SNGL | SD24GRP | /*SD24DF |*/  
               SD24LSBTOG);                     
  SD24CCTL1 = (SD24SNGL | SD24GRP | /*SD24DF |*/   
               SD24LSBTOG);                     
  SD24CCTL2 = (SD24SNGL | SD24IE | /*SD24DF |*/   
               SD24LSBTOG);                 
  SD24INCTL0 |= SD24INCH_5;           
  SD24INCTL1 |= SD24INCH_6;           
  SD24INCTL2 |= SD24INCH_7;               
  for (i = 0; i < 0x3600; i++);           
  
  SD24CCTL2 |= SD24SC;                  
}

中断处理函数:
int32_t ConvData[3];
float    SampValue[3];

#pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
      switch (SD24IV)
      {
      case 2:
        break;
      case 4:
        break;
      case 6:
        break;
      case 8:
        ConvData[0] = SD24MEM0;
        SD24CCTL0 |= SD24LSBACC;
        ConvData[1] = SD24MEM1;
        SD24CCTL1 |= SD24LSBACC;
        ConvData[2] = SD24MEM2;
        SD24CCTL2 |= SD24LSBACC;
        ConvData[0] = (ConvData[0] << 16) + SD24MEM0;
        SD24CCTL0 &= ~SD24LSBACC;
        ConvData[1] = (ConvData[1] << 16) + SD24MEM1;
        SD24CCTL1 &= ~SD24LSBACC;
        ConvData[2] = (ConvData[2] << 16) + SD24MEM2;
        SD24CCTL2 &= ~SD24LSBACC;
        SampValue[0] = 0.6 * ConvData[0] / (4194304);
        SampValue[1] = 0.6 * ConvData[1] / (4194304);
        SampValue[1] = SampValue[1] * 1000 / 1.32 - 273;
        SampValue[2] = 0.6 * ConvData[2] / (4194304);
        break;
      }
}

使用特权

评论回复
10
lihuami| | 2017-5-7 16:15 | 只看该作者
可以参考一下MSP430AFE253的例程

使用特权

评论回复
11
usysm| | 2017-5-8 16:45 | 只看该作者
这个芯片没有用过,肯定是不同的数据有重合寄存器的,否则寄存器不就浪费了吗

使用特权

评论回复
12
usysm| | 2017-5-8 16:50 | 只看该作者
[url=][/url]

使用特权

评论回复
13
vivilzb1985| | 2017-5-9 21:50 | 只看该作者
这个高低十六位寄存器的设置的还是需要注意

使用特权

评论回复
14
aspoke| | 2017-5-9 22:40 | 只看该作者
lihuami 发表于 2017-5-7 16:13
void SD24Init(void)
{
  uint16_t i = 0;

这个数据采样计算不错。

使用特权

评论回复
15
aspoke| | 2017-5-9 22:41 | 只看该作者
lihuami 发表于 2017-5-7 16:13
void SD24Init(void)
{
  uint16_t i = 0;

SD24IV 是转换通道吗?

使用特权

评论回复
16
dirtwillfly| | 2017-5-10 10:25 | 只看该作者
september119 发表于 2017-5-4 08:43
有没有人可以解答下我的问题的呢

这个mcu 24位的ad,大约也就16位的精度。不要纠结了。

使用特权

评论回复
17
注销| | 2017-5-10 10:31 | 只看该作者
亲 这个手册里边写的很清楚啊

使用特权

评论回复
18
firstblood| | 2017-5-13 17:58 | 只看该作者
这个253的MCU的两点的就是其高分辨率的AD的

使用特权

评论回复
19
september119|  楼主 | 2017-5-19 10:19 | 只看该作者
dirtwillfly 发表于 2017-5-10 10:25
这个mcu 24位的ad,大约也就16位的精度。不要纠结了。

嗯,其实精度就是16,何苦我纠结24.。。哎,结帖

使用特权

评论回复
20
aspoke| | 2017-5-21 21:59 | 只看该作者
内部的寄存器是怎么定义的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝