打印

MSP430AFE253 SD24 采样 24 位模式

[复制链接]
7970|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ar_m_cu|  楼主 | 2014-1-15 17:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ar_m_cu 于 2014-1-15 22:10 编辑

程序如下:
初始化函数:
void SD24Init(void)
{
  uint16_t i = 0;
  SD24CTL = SD24REFON | SD24SSEL0 | SD24DIV_3;  // 1.2V ref, SMCLK, 8 分频
  SD24CCTL0 = (SD24SNGL | SD24GRP | /*SD24DF |*/    // 单次转换,组合转换,补码形式 ,双极性模式
               SD24LSBTOG);                     // 24位结果
  SD24CCTL1 = (SD24SNGL | SD24GRP | /*SD24DF |*/    // 单次转换,组合转换,补码形式 ,双极性模式
               SD24LSBTOG);                     // 24位结果
  SD24CCTL2 = (SD24SNGL | SD24IE | /*SD24DF |*/     // 单次转换,使能中断,补码形式 ,双极性模式
               SD24LSBTOG);                     // 24位结果
  SD24INCTL0 = SD24INCH_5;                     // (AVcc - AVss) / 11
  SD24INCTL1 = SD24INCH_6;                     // 内部温度
  SD24INCTL2 = SD24INCH_7;                     // PGA 偏移
  //SD24AE = 0x07;
  for (i = 0; i < 0x3600; i++);                 // Delay for 1.2V ref startup
  
  SD24CCTL2 |= SD24SC;                          // Set bit to start conversion
}

中断处理函数:

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; // 高16位
        SD24CCTL0 |= SD24LSBACC; // 激活低16位
        ConvData[1] = SD24MEM1;
        SD24CCTL1 |= SD24LSBACC;
        ConvData[2] = SD24MEM2;
        SD24CCTL2 |= SD24LSBACC;
        ConvData[0] = (ConvData[0] << 16) + SD24MEM0; // 组合得到24位结果
        SD24CCTL0 &= ~SD24LSBACC; // 恢复 SD24MEM0 存储高 16 位 ,为下次转换准备
        ConvData[1] = (ConvData[1] << 16) + SD24MEM1;
        SD24CCTL1 &= ~SD24LSBACC;
        ConvData[2] = (ConvData[2] << 16) + SD24MEM2;
        SD24CCTL2 &= ~SD24LSBACC;
        SampValue[0] = 0.6 * ConvData[0] / (4194304.0); // 计算电压 4194304 = 1 << 22
        SampValue[1] = 0.6 * ConvData[1] / (4194304.0);
        SampValue[1] = SampValue[1] * 1000 / 1.32 - 273;
        SampValue[2] = 0.6 * ConvData[2] / (4194304.0);
        break;
      }
}

3个SD24通道分别采样 芯片模拟供电电压、内部温度传感器、PAG偏置,采用24位数据模式,单次转换,
但是得到结果却是完全不对,有人知道原因吗?是不是我的程序有什么问题?求指导


相关帖子

沙发
ar_m_cu|  楼主 | 2014-1-15 17:30 | 只看该作者
初始化程序中,刚开始使用的是补码的数据格式(程序中被注释掉的部分),结果不对,然后改用的是二进制偏移格式,仍然不对,截图中是使用的后者。

使用特权

评论回复
板凳
dirtwillfly| | 2014-1-15 21:16 | 只看该作者
额,一句注释也没有啊。建议楼主翻翻数据手册,看SD24是否在手册建议的工作条件以及配置是否正确

使用特权

评论回复
地板
ar_m_cu|  楼主 | 2014-1-15 21:56 | 只看该作者
dirtwillfly 发表于 2014-1-15 21:16
额,一句注释也没有啊。建议楼主翻翻数据手册,看SD24是否在手册建议的工作条件以及配置是否正确 ...

额,数据手册看了,我自己觉得没什么问题啊。注释一会补上

使用特权

评论回复
5
泪点潇湘| | 2014-5-29 22:50 | 只看该作者
您好,我想问一下SD16的外部参考电压最大可以到多少?3.6V吗?它的可测量的输入电压范围是多大呢?有点不明白,谢谢~~

使用特权

评论回复
6
ar_m_cu|  楼主 | 2014-5-29 23:45 | 只看该作者
泪点潇湘 发表于 2014-5-29 22:50
您好,我想问一下SD16的外部参考电压最大可以到多少?3.6V吗?它的可测量的输入电压范围是多大呢?有点不明 ...

没用过SD16,我用的SD24,外部最大参考电压1.2V

使用特权

评论回复
7
泪点潇湘| | 2014-5-30 09:41 | 只看该作者
ar_m_cu 发表于 2014-5-29 23:45
没用过SD16,我用的SD24,外部最大参考电压1.2V

那输入电压的范围应该是多少呢?如果我要检测的电压输入大于参考电压,我需要怎么做呢?电阻分压吗?谢谢~~

使用特权

评论回复
8
ar_m_cu|  楼主 | 2014-5-30 11:03 | 只看该作者
泪点潇湘 发表于 2014-5-30 09:41
那输入电压的范围应该是多少呢?如果我要检测的电压输入大于参考电压,我需要怎么做呢?电阻分压吗?谢谢 ...

以内部增益为1为例,输入电压范围为 ±0.6V,推荐±0.5V。如果信号电压超过这个范围,那就电阻分压吧。

使用特权

评论回复
9
泪点潇湘| | 2014-5-30 12:01 | 只看该作者
ar_m_cu 发表于 2014-5-30 11:03
以内部增益为1为例,输入电压范围为 ±0.6V,推荐±0.5V。如果信号电压超过这个范围,那就电阻分压吧。 ...

我如果使用的是但单端输入,是不是最高检测的电压也是0.6V呢?
如果信号做电阻分压,为了保证信号不会损耗,还需要在输出电压和SD16之间加一个电压跟随器吗?SD16中的PGA可以保证信号不会损耗吗?谢谢~~

使用特权

评论回复
10
ar_m_cu|  楼主 | 2014-5-30 14:04 | 只看该作者
泪点潇湘 发表于 2014-5-30 12:01
我如果使用的是但单端输入,是不是最高检测的电压也是0.6V呢?
如果信号做电阻分压,为了保证信号不会损 ...

单端也是0.6.会不会损耗得问TI的技术支持了,我不清楚

使用特权

评论回复
11
泪点潇湘| | 2014-5-30 14:12 | 只看该作者
ar_m_cu 发表于 2014-5-30 14:04
单端也是0.6.会不会损耗得问TI的技术支持了,我不清楚

谢谢~~

使用特权

评论回复
12
ar_m_cu|  楼主 | 2014-5-30 14:47 | 只看该作者
泪点潇湘 发表于 2014-5-30 14:12
谢谢~~

不客气

使用特权

评论回复
13
42142269| | 2014-10-9 13:28 | 只看该作者
泪点潇湘 发表于 2014-5-30 12:01
我如果使用的是但单端输入,是不是最高检测的电压也是0.6V呢?
如果信号做电阻分压,为了保证信号不会损 ...

同问: 在单片机AD口前是接跟随器好 还是直接接分压电阻好  分别有什么影响

使用特权

评论回复
14
angerbird| | 2014-10-17 17:50 | 只看该作者
这个挺不错的啊,,我参考了。。

使用特权

评论回复
15
september119| | 2017-5-2 15:30 | 只看该作者
你好,你的问题解决了吗?我现在也用这个芯片,采样的值一直在变,和你的差不多,然后我不知道电压值怎么计算呢?求指教

使用特权

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

本版积分规则

个人签名:初出茅庐,天下无敌,再学三年,寸步难行

61

主题

1200

帖子

7

粉丝