应用代码(4)

您所在的位置:网站首页 高精度温度采集模块的作用 应用代码(4)

应用代码(4)

2024-03-14 17:45| 来源: 网络整理| 查看: 265

[1]ADS1110各个类型的地址

在这里插入图片描述

[2]配置寄存器:

在这里插入图片描述

bit7: 1-》单周期中:st/DRDY,写1开始转换,写入0无影响 1.1读取数据时,该位用来确认转换是否完成,0–寄存器中最新的数据 1–寄存器中的数据还在转换中 2-》在连续方式中:同样忽略写入的值, 2.1读取数据时,该位为0–还未被读取 1–已经被读取过 (寄存器中任意一位被读取就会置1)

[4]:SC 控制单周期转换(“1”)还是连续转换(“0”) [3:2]:DR 控制速率 在这里插入图片描述

[1:0]:控制增益设置 在这里插入图片描述

[3]:读取的方法

简单的说就是输入一个读(slave Addr+R)命令,直接会接受到3个字节,且期间I2C不需要发送restart命令 在这里插入图片描述

[4]:写寄存器的方法(配置配置寄存器)

在这里插入图片描述

[5]计算方式:

以PGA为2为例:(文档中的例程,其实16sps对应的应该是32768) 在这里插入图片描述

[6]电路

在这里插入图片描述

在这里插入图片描述

[7]运算方式

有偿源码和电路采集部分的电路图点我(例程为高精度的温度检测方案,精度为0.1摄氏度)

关于I2C的读写和配置:

#include "myiic.h" u16 WMC_CESHI_C = 0; void IIC_INIT(void) { IIC_CLK_SET_Q; IIC_SDA_SET_Q; SET_F3_IO; SET_F2_IO; } void IIC_STAR() { IIC_SDA_1; IIC_CLK_1; IIC_DELAY; IIC_SDA_0; IIC_DELAY; IIC_CLK_0; IIC_DELAY; } void IIC_STOP() { IIC_SDA_0; //IIC_CLK_0; IIC_DELAY; IIC_CLK_1; IIC_DELAY; IIC_SDA_1; IIC_DELAY; IIC_CLK_0; } u8 clock() { u16 i; IIC_CLK_0; IIC_SDA_1; IIC_CLK_1; IIC_DELAY; i = 5000; while(i--) { if(IIC_SDA_READ==0) { IIC_CLK_0; IIC_DELAY; IIC_DELAY; return 1; } } IIC_CLK_0; IIC_DELAY; return 0; } void ACK() { IIC_CLK_0; IIC_SDA_0; IIC_CLK_1; IIC_DELAY; IIC_CLK_0; IIC_DELAY; } void NACK() { IIC_CLK_0; IIC_SDA_1; IIC_CLK_1; IIC_DELAY; IIC_CLK_0; IIC_DELAY; } void IIC_W_Byte(u8 dat) { u8 i,dat_tmp; dat_tmp = dat; for(i=0;i IIC_SDA_1; } else { IIC_SDA_0; } dat_tmp IIC_CLK_0; IIC_DELAY; IIC_CLK_1; IIC_DELAY; dat_tmp IIC_STAR(); IIC_W_Byte(IIC_ADD_R); clock(); IIC_W_Byte(add); clock(); IIC_STOP(); } void ADS_RD_ADD(u16 *AD,u8 *peizhi) { u8 tmp1,tmp2; IIC_STAR(); IIC_W_Byte(IIC_ADD_R+1); clock(); tmp1 = IIC_R_Byte(); ACK(); tmp2 = IIC_R_Byte(); ACK(); *peizhi = IIC_R_Byte(); NACK(); IIC_STOP(); (*AD) = tmp1; (*AD) stAD1110.TimCnt = 0; //ST : 0=新数据 1=不新鲜 //SC : 0=连续 1=单次 //DR : 0=240SPS 1=60SPS 2=30SPS !!3=15SPS !! //PGA : !!0=1GAIN !! 1=2GAIN 2=4GAIN 3=8GAIN //#define ADS1110PEIZHI 0x8C// ST 0 0 SC DR1 DR0 PGA1 PGA0 ADS_WR_ADD(ADS1110PEIZHI); // 1 0 0 0 1 1 0 0 //s16 AD_Z_TMP[20]; //u8 AD_Z_CNT=0; //前一个参数是16位数据,会取16次,存放进数组中 //后一个参数是获取到的配置参数 ADS_RD_ADD((u16*)(AD_Z_TMP+AD_Z_CNT),&(stAD1110.peizhi)); if(++AD_Z_CNT>=16) //获取到了16次 { AD_Z_CNT = 0; Tmp = 0; for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3