社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 1279|回复: 12

[经验] ADS1248恒流源没有输出,原来是这个原因

[复制链接]

5077

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-8-28 16:53:07 | 显示全部楼层 |阅读模式
本帖最后由 littleshrimp 于 2017-8-28 16:53 编辑

ADS1248使用恒流源测量RTD(PT100),都配置好以后发现没有电压输出
最后启用内部参考电压后恒流源才输出正常

ADS1248测量PT100电阻值的配置代码

  1. //               ADS1248
  2. //           -----------------
  3. //           |                |
  4. //    ↓--<---|A1 DAC1 1000uA  |
  5. //  ↓---->---|A0              |
  6. //  R(pt100) |                |
  7. //  ↓---->---|A3              |
  8. //  ↓-↑--<---|A2 DAC2 1000uA  |
  9. //  ↓        |                |
  10. //  ↓        |   INT_VREF_ON  |
  11. //  ↓        |                |
  12. //  ↓---->---|REFP1           |
  13. //  Rref(820)|                |
  14. //  ↓---->---|REFN1           |
  15. //  ↓        |                |
  16. // GND       |                |
  17. void ads1248_RTD_set(void)
  18. {
  19.   
  20.   //设置AIN0和AIN3为电阻两端的电压测量
  21.   ads1248_writeReg(ADS1248_0_MUX0, ADS1248_BCS_OFF | ADS1248_AINN0 | ADS1248_AINP3);         
  22.   //关闭VBIAS
  23.   ads1248_writeReg(ADS1248_1_VBIAS,ADS1248_VBIAS_OFF);
  24.   //开启内部参考电压,参考电压使用外部REF1,
  25.   ads1248_writeReg(ADS1248_2_MUX1, ADS1248_INT_VREF_ON | ADS1248_REF1 | ADS1248_MEAS_NORM);
  26.   //PAG Gain4,20SPS
  27.   ads1248_writeReg(ADS1248_3_SYS0, ADS1248_GAIN_4 | ADS1248_DR_20);
  28.   ads1248_writeReg(ADS1248_4_OFC0, 0x00);
  29.   ads1248_writeReg(ADS1248_5_OFC1, 0x00);
  30.   ads1248_writeReg(ADS1248_6_OFC2, 0x00);
  31.   //1000uA电流
  32.   ads1248_writeReg(ADS1248_10_IDAC0,ADS1248_DRDY_OFF | ADS1248_IDAC_1000);
  33.   //DAC1通过A1输出,DAC2通过A2输出
  34.   ads1248_writeReg(ADS1248_11_IDAC1,ADS1248_IDAC1_A1 | ADS1248_IDAC2_A2);
  35.   ads1248_writeReg(ADS1248_12_GPIOCFG, 0x00);
  36.   ads1248_writeReg(ADS1248_13_GPIODIR, 0x00);
  37.   ads1248_writeReg(ADS1248_14_GPIODAT, 0x00);
  38. }
复制代码


相关说明在数据手册中可以找到
QQ图片20170828162229.png

The ADS1247 and ADS1248 provide two matched excitation current sources (IDACs) for RTD applications. Forthree-wire RTD applications, the matched current sources can be used to cancel the errors caused by sensorlead resistance. The output current of the IDACs can be programmed to 50 μA, 100 μA, 250 μA,500 μA, 750 μA, 1000 μA, or 1500 μA.The two matched current sources can be connected to dedicated current output pins IEXC1 and IEXC2(ADS1248 only), or to any analog input pin (ADS1247 and ADS1248); see ADS1247 and ADS1248 DetailedRegister Definitions for more information. Both current sources can be connected to the same pin. The internalreference must be turned on and the proper amount of capacitance applied to VREFOUT when using theexcitation current sources.




虾扯蛋


回复

使用道具 举报

1万

TA的帖子

300

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-8-28 17:39:02 | 显示全部楼层
楼主厉害,,,赞!


回复

使用道具 举报

1550

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2017-8-28 18:29:24 | 显示全部楼层
很多器件的数据手册都有类似的问题,就是一些很重要的使用方面的注意事项分散在手册后面的章节中,不仔细读完整本手册常常会“上当”。

点评

还真是这样 想不出错就把手册都读遍 没那么多时间就只能试错 [attachimg]319022[/attachimg] 从上边的图理解恒流源应该是AVDD供电 理论最大电压也应该是AVDD-xxxV 而内部参考电压才2.048V 在IDAC0零寄存器  详情 回复 发表于 2017-8-28 22:24


回复

使用道具 举报

5077

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-8-28 22:24:28 | 显示全部楼层
gmchen 发表于 2017-8-28 18:29
很多器件的数据手册都有类似的问题,就是一些很重要的使用方面的注意事项分散在手册后面的章节中,不仔细读 ...

还真是这样
想不出错就把手册都读遍
没那么多时间就只能试错
QQ图片20170828221640.png

从上边的图理解恒流源应该是AVDD供电
理论最大电压也应该是AVDD-xxxV
而内部参考电压才2.048V
在IDAC0零寄存器里也有IDAC开关
刚开始不清楚恒流源为什么一定要开参考电压

后来想了一下,应该是通过参考电压和内部电阻来确定输出的电流大小
这样想就合理了

开内部参考电压在手册的RTD例子里倒是有过介绍
只是全英文的手册真没那么多精力都看一遍
QQ图片20170828222250.png

点评

“想不出错就把手册都读遍,没那么多时间就只能试错” 试错所花费的时间很可能比通读一遍要多。  详情 回复 发表于 2017-8-29 07:37
虾扯蛋


回复

使用道具 举报

1万

TA的帖子

0

TA的资源

maychang

Rank: 6Rank: 6

发表于 2017-8-29 07:37:58 | 显示全部楼层
littleshrimp 发表于 2017-8-28 22:24
还真是这样
想不出错就把手册都读遍
没那么多时间就只能试错


从上边的图理解恒流源应该是AVDD供电 ...

“想不出错就把手册都读遍,没那么多时间就只能试错”
试错所花费的时间很可能比通读一遍要多。

点评

也不一定多 很多器件只要例程写的好 简单对照数据手册就能跑起来 没有例程就只好啃手册 想这些全英文的手册如果英语不好花很长时间看下来也未必能弄透  详情 回复 发表于 2017-8-29 14:31


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-8-29 10:46:18 | 显示全部楼层
所以说,先不要着急先程序或者配置寄存器。先通读datasheet,在保证硬件设计没有问题的情况下。还是多看看对寄存器的操作呢。

点评

没办法 英文不好 看手册是件很头疼的事  详情 回复 发表于 2017-8-29 14:32


回复

使用道具 举报

5077

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-8-29 14:31:29 来自手机 | 显示全部楼层
maychang 发表于 2017-8-29 07:37
“想不出错就把手册都读遍,没那么多时间就只能试错”
试错所花费的时间很可能比通读一遍要多。

也不一定多 很多器件只要例程写的好 简单对照数据手册就能跑起来 没有例程就只好啃手册 想这些全英文的手册如果英语不好花很长时间看下来也未必能弄透


回复

使用道具 举报

5077

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-8-29 14:32:31 来自手机 | 显示全部楼层
huaiqiao 发表于 2017-8-29 10:46
所以说,先不要着急先程序或者配置寄存器。先通读datasheet,在保证硬件设计没有问题的情况下。还是多看看 ...

没办法 英文不好 看手册是件很头疼的事

点评

这个还是要多啃,啃着啃着就好了(刚开始的时候会很浮躁,慢慢啃下来就好多了)。如果跳过有些章节,然后跑过去直接编程,来回折腾可叫费劲呢。。。。这次你就体会到了。  详情 回复 发表于 2017-8-29 15:08


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-8-29 15:08:58 | 显示全部楼层
littleshrimp 发表于 2017-8-29 14:32
没办法 英文不好 看手册是件很头疼的事

这个还是要多啃,啃着啃着就好了(刚开始的时候会很浮躁,慢慢啃下来就好多了)。如果跳过有些章节,然后跑过去直接编程,来回折腾可叫费劲呢。。。。这次你就体会到了。


回复

使用道具 举报

5

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-4-14 22:05:26 | 显示全部楼层
请教楼主,最近在调试ADS1248   做的3线RTD。初始化的时候配置寄存器都写成功了,恒流源也有输出。但是使用RDATA命令读取AD值,读出来都是0。不知道楼主在启动AD转换和读取AD值的时候是如何操作????

点评

这几天在外边 回去帮你看下 你也可以看看官方代码  详情 回复 发表于 2018-4-16 07:49


回复

使用道具 举报

5077

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2018-4-16 07:49:22 来自手机 | 显示全部楼层
loudianxin 发表于 2018-4-14 22:05
请教楼主,最近在调试ADS1248   做的3线RTD。初始化的时候配置寄存器都写成功了,恒流源也有输出。但是使用 ...

这几天在外边 回去帮你看下
你也可以看看官方代码


回复

使用道具 举报

5

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-4-16 12:00:32 | 显示全部楼层
本帖最后由 loudianxin 于 2018-4-16 12:11 编辑
littleshrimp 发表于 2018-4-16 07:49
这几天在外边 回去帮你看下
你也可以看看官方代码

好的   谢谢,今天在找官方代码看看,调一调
另外这是寄存器的配置
//寄存器配置
ADS1248_REG_DEF m_stADS1248CfgInfo = {
        .nMUX0                 = 0x01,        //MUX0
        .nVBIAS                  = 0x00,        //VBIAS  
        .nMUX1                 = 0x28,        //MUX1
        .nSYS0                 = 0x25,        //SYS0        4倍增益
        .nOFC0                 = 0x00,        //OCF0
        .nOFC1                 = 0x00,        //OCF1
        .nOFC2                 = 0x00,        //OCF2
        .nFSC0                 = 0x00,        //FSC0
        .nFSC1                 = 0x00,        //FSC1
        .nFSC2                 = 0x00,        //FSC2
        .nIDAC0                  = 0x06,        //IDAC0  1ma
        .nIDAC1             = 0x89,        //IDAC1  
        .nGPIOCFG        = 0x00,        //GPIOCFG
        .nGPIODIR        = 0x00,        //GPIODIR
        .nGPIODAT        = 0x00,        //GPIODAT
};



回复

使用道具 举报

5

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-4-17 15:33:12 | 显示全部楼层
littleshrimp 发表于 2018-4-16 07:49
这几天在外边 回去帮你看下
你也可以看看官方代码

问题解决了   程序都对。就是在初始化配置寄存器的时候吧FSC寄存器配置成0,导致满量程标定为0,所以读出来的数据都是0。本来想省事写一个配置结构体一次性写入ADS1248,结果出了这么一个麻烦。。。。谢谢你的回复


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-7-21 08:09 , Processed in 0.346784 second(s), 18 queries , Gzip On, Redis On.

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