stm32驱动ads1220读取内部温度

STM32驱动ADS1220读取内部温度

最进使用ads1220做热电偶的实验,在读取芯片内部温度实验的时候卡了一天,明明看起来很简单却读不到自己想要的数据,后来认真读了一遍手册才找到原因,特此写下来记录。
ads1220驱动网上有很多链接,下载下来改改就行,很多都用的IO口模拟的SPI的接口,不过没有影响都可以使用,笔者使用的是stmf103的板子,连线正确即可,改好后往寄存器里写值读值就可以验证spi的时序是否正确。
重点来了,ads1220可以读取内部温度(接近室温),具体要怎么实现呢,将TS位寄存器写1,然后开启连续转换模式,然后定义一个long的参数,读数即可。

  hal_ads1220.setCm(ADS1220_CM_CW);                 
  hal_ads1220.setTs(ADS1220_TS_ENABLE);  
  tempval=hal_ads1220.readData();
  printf("%ld ",tempval);
  delay_ms(1000);

我在这后面加了一个延时,具体延时多少可以自己测试,一定要将下面的函数放在while循环里,多读几次才可以读出来,这里可能与数据输出速率有关,建议用串口输出,开始笔者使用debug调试,开始都是0XFFFFFF,就在这里卡了很长时间,以为程序有问题,后来用串口输出时,会有数据正常,但也会有数据不正常,具体原因还未找到(应该是数据输出速率的锅,后续程序再优化即可,重点是能读出温度!)输出具体如下:

串口输出数据
如图可以看到,抓取了很多数据才有一个正确的数据(861866),具体原因还未知,后续再慢慢找吧,将861866转为16进制然后再将其转化为24左对齐的数据,取高14位,根据手册转化为摄氏度即可,差不多27度左右,还是比较接近的。如果有老哥知道为什么输出会这样的,真心请教!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值