搜索
bottom↓
回复: 7

请帮忙分析下ADS1248测PT100,读取的ADC值跳动较大?是什么原因?

[复制链接]

出5入10汤圆

发表于 2018-3-20 16:13:34 | 显示全部楼层 |阅读模式
本帖最后由 chen849928055 于 2018-3-20 16:12 编辑

碰到的问题:1.在调试过程中,首先是采集的ADC值乱跳,都几百1000多的跳, 后来发现把增益PGA设置为16以上,读到的值总为0x007FFFFF;PGA设置为1时,读取的ADC值接近自己实际计算的值;
                查手册我的PGA设置为16以下, 共模电压(ADCINP + ADCINN)/2在共模范围之内。V IN = ADCINP – ADCINN是差模输入电压,可正可负,但它的绝对值要<=VREF/PGA
                0.5<V REF <(AVDD -AVSS) - 1   
                2:用示波器测试波形,SCK  DIN   DO写入读出的寄存器的值都是正确的;读取的ADC值波动这问题找了一个多星期了还没找到,望使用过ADS1248这类芯片的网友多指点指点,提提建议,先谢谢了!!!

               

1.先上原理图

2.下面是我的程序初始化:
/*********************************************************************************************************
* @Function Name: SPI_FLASH_Init
* @Description  : SPI和GPIO初始化
* @param                : void
* @retval                   : void
* @date                           : 2018/03/04  PA4->SPI0_SCK  PA5->SPI0_MOSI PA6->SPI0_MISO PA7->SPI0_SEL
#define ADS1248_RST                        GPIO_PIN_2  PA
#define ADS1248_READY                GPIO_PIN_3  PA
#define ADS1248_SCK                        GPIO_PIN_4  PA
#define ADS1248_DO                        GPIO_PIN_5  PA
#define ADS1248_DIN                        GPIO_PIN_6  PA
#define ADS1248_CS                        GPIO_PIN_7  PA

#define ADS1248_START                PC12
注意一点:SCK时钟不能太快,必须小于2MHz,程序实际采用的时钟约1MHz. ADS1248芯片是在SCK下降沿采样数据.
  ********************************************************************************************************/
void SPI_FLASH_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;

  /*  Enable AFIO & SPI SEL pin port & SPI clock                                                            */
  CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
  CKCUClock.Bit.PA                                         = 1;

       
  CKCUClock.Bit.SPI0                                                                          = 1;
  CKCUClock.Bit.AFIO                                                                          = 1;
        CKCUClock.Bit.PDMA                                                                          = 1;
  CKCU_PeripClockConfig(CKCUClock, ENABLE);

  /*  Configure SPI SCK pin, SPI MISO pin, SPI MOSI pin                                                     */
  AFIO_GPxConfig(GPIO_PA, ADS1248_SCK        , AFIO_FUN_SPI);
  AFIO_GPxConfig(GPIO_PA, ADS1248_DIN,  AFIO_FUN_SPI);
  AFIO_GPxConfig(GPIO_PA, ADS1248_DO,   AFIO_FUN_SPI);
       
        AFIO_GPxConfig(GPIO_PC, ADS1248_START , AFIO_MODE_DEFAULT);           //START io初始化
  GPIO_DirectionConfig(HT_GPIOC, ADS1248_START, GPIO_DIR_OUT);  
       
  AFIO_GPxConfig(GPIO_PA, ADS1248_RST , AFIO_MODE_DEFAULT);             // RST io初始化
        GPIO_DirectionConfig(HT_GPIOA, ADS1248_RST, GPIO_DIR_OUT);
       
        GPIO_DirectionConfig(HT_GPIOA, ADS1248_READY, GPIO_DIR_IN);    //输入  DRDY
  GPIO_PullResistorConfig(HT_GPIOA, ADS1248_READY, GPIO_PR_UP);  //设置上拉
  GPIO_InputConfig(HT_GPIOA, ADS1248_READY, ENABLE);             //上拉使能
  /* SEL output inactive level */
//        AFIO_GPxConfig(GPIO_PA, ADS1248_CS , AFIO_MODE_DEFAULT);        //CS io初始化
  ADS1248_CS_H();
  GPIO_DirectionConfig(HT_GPIOA, ADS1248_CS, GPIO_DIR_OUT);   

  /*  SPI Configuration */
  SPI_InitStructure.SPI_Mode = SPI_MASTER;
  SPI_InitStructure.SPI_FIFO = SPI_FIFO_ENABLE;
  SPI_InitStructure.SPI_DataLength = SPI_DATALENGTH_8;
  SPI_InitStructure.SPI_SELMode = SPI_SEL_SOFTWARE;
  SPI_InitStructure.SPI_SELPolarity = SPI_SELPOLARITY_LOW;
  SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_LOW ;      //  SCK 的下降沿被采集
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_SECOND;
  SPI_InitStructure.SPI_RxFIFOTriggerLevel = 4;
  SPI_InitStructure.SPI_TxFIFOTriggerLevel = 4;
  SPI_InitStructure.SPI_ClockPrescaler = 36; /* 原来为2 72/2=36MHz, Normal Read frequency */ // 72/32=24/32=0.75MHz,ADS1248的SCLK最快约2MHz
  SPI_Init(FLASH_SPI, &SPI_InitStructure);

  SPI_SELOutputCmd(FLASH_SPI, ENABLE);
  SPI_Cmd(FLASH_SPI, ENABLE);
}
void ADS1248_Init(void)
{
    unsigned char temp;
    SPI_FLASH_Init();
       
    ADS1248_RST_L();
    ADS1248_START_L();
    ADS1248_Delay(4000);
    ADS1248_RST_H();
    ADS1248_START_H();
    ADS1248_Delay(60000); //延时20ms;手册要求延时至少16ms
    ADS1248_CS_L();

   ADS1248_WriteREG(ADS_MUX0, 0x01);
   ADS1248_WriteREG(ADS_MUX1, 0x30);//00110000,Bit7:启用内部晶振,Bit6-5:内部基准一直打开,Bit4-3:输入基准为片上基准,Bit2-0:普通模式
   ADS1248_Delay(10000);  //延时10ms
   ADS1248_WriteREG(ADS_VBIAS, 0x00); //00000000,Bit7-0:偏置电压选择关闭(默认)
   ADS1248_WriteREG(ADS_IDAC1, 0xFF); //11111111,Bit7-4:断开内部第一恒流源的连接,Bit3-0:断开内部第二恒流源的连接  0X8F打开第一内部恒流源
   ADS1248_WriteREG(ADS_IDAC0, 0x08); //00001000,Bit7-4:只读,Bit3:DRDY/DOUT功能复用Dout线 ,Bit2-0:关闭内部恒流源
   ADS1248_WriteREG(ADS_SYS0,  0x00); //00000000,Bit7:必须设置为0,Bit6-41:选择1倍增益,Bit3-0:选择5SPS测量速度
}
/*******************************************************************************
* @Function Name: ADS1248_ReadREG
* @Description  : 写寄存器的第byteToRead个字节
* @param                : u8 regName
* @param                : u8 byteToRead
* @retval                   : u8
* @date                           : 2014/10/05
*******************************************************************************/
void ADS1248_WriteREG(u8 regaddr, u8 databyte)
{
        //向寄存器写入数据地址
    ADS1248_WriteByte(ADS_WREG+(regaddr&0x0f));
    ADS1248_WriteByte(0x00);
        //向regaddr地址指向的寄存器写入数据databyte
    ADS1248_WriteByte(databyte);
   
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出5入10汤圆

 楼主| 发表于 2018-3-20 18:38:56 | 显示全部楼层
本帖最后由 chen849928055 于 2018-3-21 08:46 编辑

自己顶一下

出5入10汤圆

 楼主| 发表于 2018-3-21 08:48:23 | 显示全部楼层
难道下午发贴人都特别少

出0入0汤圆

发表于 2020-1-20 09:57:46 | 显示全部楼层
坐等LZ两年了,应该啥问题都解决了吧,来来来,出来发表一下心得

出5入10汤圆

 楼主| 发表于 2020-2-19 11:28:47 | 显示全部楼层
Maurice 发表于 2020-1-20 09:57
坐等LZ两年了,应该啥问题都解决了吧,来来来,出来发表一下心得


我擦,换方案了,没用ADS1248了  用的美信的max31865    用ADS1248没搞定

出0入0汤圆

发表于 2020-2-20 08:42:04 | 显示全部楼层
chen849928055 发表于 2020-2-19 11:28
我擦,换方案了,没用ADS1248了  用的美信的max31865    用ADS1248没搞定

我也对ADS1248的双路恒流源匹配度表示比较担心,max31865也有个0.5度误差,寻找精度能达到个±0.1度看来是相当的有难度

出0入0汤圆

发表于 2021-8-12 14:57:18 | 显示全部楼层
四路pt100可以直接并联吗?我也是并联,也出现楼主一样的情况

出5入10汤圆

 楼主| 发表于 2021-8-12 15:20:55 | 显示全部楼层
diliuchanye 发表于 2021-8-12 14:57
四路pt100可以直接并联吗?我也是并联,也出现楼主一样的情况

最后没搞定,换方案了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 13:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表