MSP430AFE253 SD24 采样 24 位模式

2019-07-17 16:11发布

本帖最后由 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位数据模式,单次转换,
但是得到结果却是完全不对,有人知道原因吗?是不是我的程序有什么问题?求指导

QQ图片20140115172449.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ar_m_cu
1楼-- · 2019-07-17 17:27
 精彩回答 2  元偷偷看……
dirtwillfly
2楼-- · 2019-07-17 19:23
额,一句注释也没有啊。建议楼主翻翻数据手册,看SD24是否在手册建议的工作条件以及配置是否正确
ar_m_cu
3楼-- · 2019-07-17 23:42
 精彩回答 2  元偷偷看……
泪点潇湘
4楼-- · 2019-07-18 02:04
您好,我想问一下SD16的外部参考电压最大可以到多少?3.6V吗?它的可测量的输入电压范围是多大呢?有点不明白,谢谢~~
ar_m_cu
5楼-- · 2019-07-18 07:28
泪点潇湘 发表于 2014-5-29 22:50
您好,我想问一下SD16的外部参考电压最大可以到多少?3.6V吗?它的可测量的输入电压范围是多大呢?有点不明 ...

没用过SD16,我用的SD24,外部最大参考电压1.2V
泪点潇湘
6楼-- · 2019-07-18 08:59
ar_m_cu 发表于 2014-5-29 23:45
没用过SD16,我用的SD24,外部最大参考电压1.2V

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

一周热门 更多>