尊敬的先生:
请帮助我解决这个问题。
现在、我将处理 ADS1248、以便使用 RTD 传感器读取温度、我将使用以下 随附的代码和 ADS1248驱动程序头文件。
我的原理图详细信息:-
原理图具有以下内容:-
--------------------------
AVDD = 5V (通过10uF 电容器证明输入电压为5V)
AVSS = GND
DVDD = 3.3V
DGND = GND
CURRNET Sources = IEXC1和 IEXC2
模拟输入= AIN0和 AIN1
基准电阻= 1.2k Ω
我将 Rref 更改为1.2k Ω、因为在 ADS1248数据表 中、Vref 应低于 AVDD 的1/2 Vs (第10.2.4.4节)。
电压和电流、我将获得:-
----------------------------------------------------
连接 RTD 传感器之前(三个端子(A、B、C)为开路):-
点"A"处的电压和电流= 5.031v 和0.992mAmp
点"B"处的电压和电流= 5.030v 和0.993mAmp
点"C"处的电压和电流= 0v 和0mAmp
Rref = 0.0v 时的电压
用100欧姆连接 RTD 传感器后(意味着 B 和 C 端子短接且端子 A 开路、然后连接 RTD 传感器):-
点"A"处的电压和电流= 2.401v 和1.827mAmp
点"B"处的电压和电流= 2.398v 和1.827mAmp
点"C"处的电压和电流= 2.398v 和1.833mAmp
Rref = 2.398v 时的电压(Vref = AVDD/2=>5/2=>2.5V)
按照如下代码设置 ADS1248的所有寄存器后、我将读取输出代码、如下所示
output_code = ADS1248_RDATA ();
但是、每次我获得相同的值(output_code = 16777215)时、手动将 RTD 传感器从100欧姆更改为150欧姆。 输出无变化。
如果更改 RTD 传感器电阻值,则在 A 点、B 点、C 点处不影响电压。
源代码:-
----------------------------------------------------------------------
main.c:-
------
VOLTAGE_REFEND(); Data_RATE (); SetChannel();//AIN0用于+VE (AINP);/AINP1用于-VE (AINN) SetGain (); SetDRDYMode (); SetIntRef (); Test_WRITE_IDAC0 (); Test_WRITE_EXAC1_EXC1_IDEXC2 (); /*------------------ */ void volte_reference (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_2_MUX1);//0x42; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_INT_REF0;//0x20;//选择内部基准并在内部连接到 REFP0和 REFN0输入引脚 while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void Data_Rate (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_3_SYS0);// 0x43;/////txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_DR_20;//0x22;// 增益= 4,数据速率= 20sps while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*--------------- */ void SetChannel (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_0_MUX0);//0x40;//// txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_AINP0;//0x01;// AIN0 while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; DelayMicroSeconds (10000); CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_0_MUX0);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_AINN1;//AIN1 while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- */ void SetGain (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_3_SYS0);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_GAIN_4; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void SetDRDYMode (void) { CHIPSELECT = 0; DelayMicroSeconds (1); SPIEN = 1; TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_10_IDAC0);//0x4A;//// txdata; IDAC 寄存器 while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_DRDY_OFF;//0x06;// DRDY/OUT 引脚充当输出引脚和1000RO MICRO AMP 电流 while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void SetIntRef (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_2_MUX1);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_INT_VREF_ON; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void Test_write_IDAC0 (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_10_IDAC0);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_IDAC_1000; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void Test_write_IDAC1_EXC1 (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_11_IDAC1);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_IDAC1_EXT1; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- // void Test_write_IDAC1_EXC2 (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_WREG | ADS1248_11_IDAC1);//txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = ADS1248_IDAC1_EXT2; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*-->------------------- */ void ADS1248_Reset (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT = ADS1248_CMD_RESET; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; // RESET_PIN = 0; //DelayMicroSeconds (1); //reset_PIN = 1; // DelayMicroSeconds (1); }/*--------------- // void Test_write_IDAC1_EXC1_EXC2 (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT = 0x4B;//(ADS1248_CMD_WREG | ADS1248_11_IDAC1); while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x89;对于 EXC1和 EXC2为/0x89、对于 AIN3和 AIN2为0x32 while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*--------- */ void interrupts_Init (void) { EA = 1; //启用全局中断 EIE1 |= 0x01;//启用串行外设接口(SPI0)中断。启用由 SPIF 标志(SPI0CN.7)生成的中断请求 // EIP1 |= 0x01;// SPI0中断设置为高优先 级 Ex0 = 1;//启用外部中断0 = 1;//触发中断 PXINT0 = 1;//下降沿 //INT0为高优先 级}/*------------------------------------------------------- // void ADS1248_SYNC (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT = ADS1248_CMD_SYNC; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*--------------- // void ADS1248_SDATAC (void) { CHIPSELECT = 0; DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT = ADS1248_CMD_SDATAC; while (TXBSY); TXBSY |= 0; DelayMicroSeconds (1); CHIPSELECT = 1; } /*--------------- // unsigned char ADS1248ReceiveByte (void) { unsigned char result = 0; while (TXBSY);//确保 TX 缓冲区 TXBSY 中没有任何内容|=0; SPI0DAT = 0xFF;//发送 NOP 来启动 SCLK while (TXBSY);//等待直到所有数据被发送(接收) TXBSY |=0; 结果= SPI0DAT;//捕获接收缓冲区并返回结果 返回结果; }-->----------------- // unsigned char ADS1248_RREG (void) { CHIPSELECT = 0; //DelayMicroSeconds (1); TXBSY |= 0; SPI0DAT =(ADS1248_CMD_RREG | ADS1248_10_IDAC0);// txdata; while (TXBSY); TXBSY |= 0; SPI0DAT = 0x01; while (TXBSY); TXBSY |= 0; SPI0DAT = 0xFF; while (TXBSY); TXBSY |= 0; //DelayMicroSeconds (1); CHIPSELECT = 1; 返回 SPI0DAT; } /*------------------ */ unsigned long int ADS1248_RDATA (void) { unsigned char var; unsigned long int result; char res[3]; CHIPSELECT = 0; Delayms (1);//DelayMicroSeconds (1); VAR = SPI0_Write (ADS1248_CMD_RDATA); //读取数据(一旦 res[0]= ADS1248ReceiveByte (); res[1]= ADS1248ReceiveByte (); res[2]= ADS1248ReceiveByte (); var = ADS1248ReceiveByte (); 如果 没有其他命令等待 Delayms (1)、可发送//A NOP 以强制 DOUT/DRDY 处于高电平;// DelayMicroSeconds (1); CHIPSELECT = 1; 结果= 0x00; 结果=(res[0]& 0xFF);//must & 0xFF 否则随机错误发生 结果=(结果<< 8); 结果=结果|(res[1]& 0xFF); 结果=(结果<< 8); 结果=结果|(res[2]& 0xFF); return( result );}
------------------------------------------------------------------------
ADS1248.h:-
--------
#ifndef __ADS1248_H
#define __ADS1248_H
//#define USE_INTER_VREF
/*错误返回值*/
#define ADS1248_NO_ERROR 0
#define ADS1248_ERROR -1
/*命令定义*/
//系统控制
#define ADS1248_CMD_WAKEUP 0x00
#define ADS1248_CMD_SLEEP 0x03
#define ADS1248_CMD_SYNC 0x05
#define ADS1248_CMD_RESET 0x07
#define ADS1248_CMD_NOP 0xFF
//数据读取
#define ADS1248_CMD_RDATA 0x13
#define ADS1248_CMD_RDATAC 0x15
#define ADS1248_CMD_SDATAC 0x17
//读取寄存器
#define ADS1248_CMD_RREG 0x20
//写入寄存器
#define ADS1248_CMD_WREG 0x40
//校准
#define ADS1248_CMD_SYSOCAL 0x60
#define ADS1248_CMD_SYSGCAL 0x61
#define ADS1248_CMD_SELFOCAL 0x62
/* ADS1248寄存器定义*/
#define ADS1248_0_MUX0 0x00
#define ADS1248_1_VBIAS 0x01
#define ADS1248_2_MUX1 0x02
#define ADS1248_3_SYS0 0x03
#define ADS1248_4_OFC0 0x04
#define ADS1248_5_OFC1 0x05
#define ADS1248_6_OFC2 0x06
#define ADS1248_7_FSC0 0x07
#define ADS1248_8_FSC1 0x08
#define ADS1248_9_FSC2 0x09
#define ADS1248_10_IDAC0 0x0A
#define ADS1248_11_IDAC1 0x0B
#define ADS1248_12_GPIOCFG 0x0C
#define ADS1248_13_GPIODIR 0x0D
#define ADS1248_14_GPIODAT 0x0E
/* ADS1248寄存器0 (MUX0)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// BCS[1:0]| MUX_SP[2:0]| MUX_SN[2:0]
//
//定义 BCS (烧毁电流源)
#define ADS1248_BCS_OFF 0x00
#define ADS1248_BCS_500nA 0x40
#define ADS1248_BCS_2uA 0x80
#define ADS1248_BCS_10uA 0xC0
//定义正多路复用器输入通道
#define ADS1248_AINP0 0x00
#define ADS1248_AINP1 0x08
#define ADS1248_AINP2 0x10
#define ADS1248_AINP3 0x18
#define ADS1248_AINP4 0x20
#define ADS1248_AINP5 0x28
#define ADS1248_AINP6 0x30
#define ADS1248_AINP7 0x38
//定义负多路复用器输入通道
#define ADS1248_AINN0 0x00
#define ADS1248_AINN1 0x01
#define ADS1248_AINN2 0x02
#define ADS1248_AINN3 0x03
#define ADS1248_AINN4 0x04
#define ADS1248_AINN5 0x05
#define ADS1248_AINN6 0x06
#define ADS1248_AINN7 0x07
/* ADS1248寄存器1 (VBIAS)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// VBIAS[7:0]
//
#define ADS1248_VBIAS_OFF 0x00
#define ADS1248_VBIAS0 0x01
#define ADS1248_VBIAS1 0x02
#define ADS1248_VBIAS2 0x04
#define ADS1248_VBIAS3 0x08
#define ADS1248_VBIAS4 0x10
#define ADS1248_VBIAS5 0x20
#define ADS1248_VBIAS6 0x40
#define ADS1248_VBIAS7 0x80
/* ADS1248寄存器2 (MUX1)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// CLKSTAT | VREFCON[1:0]| REFSELT[1:0]| MUXCAL_[2:0]
//
//定义内部基准
#define ADS1248_INT_VREF_OFF 0x00
#define ADS1248_INT_VREF_ON 0x20
#define ADS1248_INT_VREF_CONV 0x40
//定义参考选择
#define ADS1248_REF0 0x00
#define ADS1248_REF1 0x08
#define ADS1248_INT 0x10
#define ADS1248_INT_REF0 0x18
//定义系统监视器
#define ADS1248_MEAS_NORM 0x00
#define ADS1248_MEAS_OFFSET 0x01
#define ADS1248_MEAS_GAIN 0x02
#define ADS1248_MEAS_TEMP 0x03
#define ADS1248_MEAS_REF1 0x04
#define ADS1248_MEAS_REF0 0x05
#define ADS1248_MEAS_AVDD 0x06
#define ADS1248_MEAS_DVDD 0x07
/* ADS1248寄存器3 (SYS0)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// 0 | PGA[2:0]| DOOR[3:0]
//
//定义增益
#define ADS1248_GAIN_1 0x00
#define ADS1248_GAIN_2 0x10
#define ADS1248_GAIN_4 0x20
#define ADS1248_GAIN_8 0x30
#define ADS1248_GAIN_16 0x40
#define ADS1248_GAIN_32 0x50
#define ADS1248_GAIN_64 0x60
#define ADS1248_GAIN_128 0x70
//定义数据速率
#define ADS1248_DR_5 0x00
#define ADS1248_DR_10 0x01
#define ADS1248_DR_20 0x02
#define ADS1248_DR_40 0x03
#define ADS1248_DR_80 0x04
#define ADS1248_DR_160 0x05
#define ADS1248_DR_320 0x06
#define ADS1248_DR_640 0x07
#define ADS1248_DR_1000 0x08
#define ADS1248_DR_2000 0x09
/* ADS1248寄存器4 (OFC0)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// OFC0[7:0]
//
/* ADS1248寄存器5 (OFC1)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// OFC1[7:0]
//
/* ADS1248寄存器6 (OFC2)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// OFC2[7:0]
//
/* ADS1248寄存器7 (FSC0)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// FSC0[7:0]
//
/* ADS1248寄存器8 (FSC1)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// FSC1[7:0]
//
/* ADS1248寄存器9 (FSC2)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// FSC2[7:0]
//
/* ADS1248寄存器 A (IDAC0)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// ID[3:0]| DRDY_MODE | IMAG[2:0]
//
//在 DOUT 上定义 DRDY 模式
#define ADS1248_DRDY_OFF 0x00
#define ADS1248_DRDY_ON 0x08
//定义 IDAC 幅度
#define ADS1248_IDAC_OFF 0x00
#define ADS1248_IDAC_50 0x01
#define ADS1248_IDAC_100 0x02
#define ADS1248_IDAC_250 0x03
#define ADS1248_IDAC_500 0x04
#define ADS1248_IDAC_750 0x05
#define ADS1248_IDAC_1000 0x06
#define ADS1248_IDAC_1500 0x07
/* ADS1248寄存器 B (IDAC1)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// I1DIR[3:0]| I2DIR[3:0]
//
//定义 IDAC1输出
#define ADS1248_IDAC1_A0 0x00
#define ADS1248_IDAC1_A1 0x10
#define ADS1248_IDAC1_A2 0x20
#define ADS1248_IDAC1_A3 0x30
#define ADS1248_IDAC1_A4 0x40
#define ADS1248_IDAC1_A5 0x50
#define ADS1248_IDAC1_A6 0x60
#define ADS1248_IDAC1_A7 0x70
#define ADS1248_IDAC1_EXT1 0x80
#define ADS1248_IDAC1_EXT2 0x90
#define ADS1248_IDAC1_OFF 0xF0
//定义 IDAC2输出
#define ADS1248_IDAC2_A0 0x00
#define ADS1248_IDAC2_A1 0x01
#define ADS1248_IDAC2_A2 0x02
#define ADS1248_IDAC2_A3 0x03
#define ADS1248_IDAC2_A4 0x04
#define ADS1248_IDAC2_A5 0x05
#define ADS1248_IDAC2_A6 0x06
#define ADS1248_IDAC2_A7 0x07
#define ADS1248_IDAC2_EXT1 0x08
#define ADS1248_IDAC2_EXT2 0x09
#define ADS1248_IDAC2_OFF 0x0F
/* ADS1248寄存器 C (GPIOCFG)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// IOCFG[7:0]
//
//定义 GPIO (0模拟;1 GPIO)
#define ADS1248_GPIO_0 0x01
#define ADS1248_GPIO_1 0x02
#define ADS1248_GPIO_2 0x04
#define ADS1248_GPIO_3 0x08
#define ADS1248_GPIO_4 0x10
#define ADS1248_GPIO_5 0x20
#define ADS1248_GPIO_6 0x40
#define ADS1248_GPIO_7 0x80
/* ADS1248寄存器 D (GPIODIR)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// IODIR.[7:0]
//
//定义 GPIO 方向(0输出;1输入)
#define ADS1248_IO_0 0x01
#define ADS1248_IO_1 0x02
#define ADS1248_IO_2 0x04
#define ADS1248_IO_3 0x08
#define ADS1248_IO_4 0x10
#define ADS1248_IO_5 0x20
#define ADS1248_IO_6 0x40
#define ADS1248_IO_7 0x80
/* ADS1248寄存器 E (GPIODAT)定义*/
//位7 |位6 |位5 |位4 |位3 |位2 |位1 |位0
///----------------------------------------------
// IOIDAT[7:0]
//
#define ADS1248_OUT_0 0x01
#define ADS1248_OUT_1 0x02
#define ADS1248_OUT_2 0x04
#define ADS1248_OUT_3 0x08
#define ADS1248_OUT_4 0x10
#define ADS1248_OUT_5 0x20
#define ADS1248_OUT_6 0x40
#define ADS1248_OUT_7 0x80
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
void ADS1248_GPIO_Init (void);
void ADS1248_SPI_Init (void);
静态 unsigned char ADS1248_SPI_SendByte (unsigned char outByte);
int ADS1248WaitForDataReady (int Timeout);
void ADS1248ReadRegister (int StartAddress、int NumRegs、unsigned * pData);//读取寄存器(NumReg 是读取的寄存器总数)
void ADS1248WriteRegister (int StartAddress、int NumReg、unsigned * pData);//对寄存器进行写操作(NumReg 是写入的寄存器总数)
//void ADS1248WriteSequence (int StartAddress、int NumReg、unsigned * pData);//写入寄存器(NumReg 是写入的寄存器总数)
void ADS1248SendRDATAC (void);//连续读取数据模式
void ADS1248SendSDATAC (void);//停止连续读取数据模式
void ADS1248SendSYSOCAL (void);//系统偏移校准
void ADS1248SendSYSGCAL (void);//系统增益校准
void ADS1248SendSELFOCAL (void);//自偏移校准
/*寄存器设置值命令*/
//与 MUX0相关
int ADS1248SetBurnOutSource (int Burnout);
内部 ADS1248SetChannel (内部 PMUX、内部 vMux);// PMUX (0=AINP。 1=AINN);vMux (多路复用器通道选择值)
//与 VBIAS 相关
int ADS1248SetBias (unsigned char vBias);
//与 MUX1相关
int ADS1248SetIntRef (int sRef);
int ADS1248SetVoltageReference (int VoltageRef);
int ADS1248SetSystemMonitor (int Monitor);
//与 SYS0相关
int ADS1248SetGain (int gain);
int ADS1248SetDataRate (int datarate);
//与 OFC 相关(3个寄存器)
int ADS1248SetOFC (long RegOffset);
//与 FSC 相关(3个寄存器)
INT ADS1248SetFSC (Long RegGain);
//与 IDAC0相关
INT ADS1248SetDRDYMode (int DRDYMode);
int ADS1248SetCurrentDACOutput (int CurrentOutput);
//与 IDAC1相关
int ADS1248SetIDACRouting (int IDACroute、int IDACdir);// IDACRoute (0 = I1DIR、1 = I2DIR)
//与 GPIOCFG 相关
int ADS1248SetGPIOConfig (unsigned char cData);
//与 GPIODIR 相关
int ADS1248SetGPIODir (unsigned char cData);
//与 GPIODAT 相关
int ADS1248SetGPIO (unsigned char cData);
/*寄存器获取值命令*/
//与 MUX0相关
int ADS1248GetBurnOutSource (void);
int ADS1248GetChannel (int cMux);
//与 VBIAS 相关
unsigned char ADS1248GetBias (void);
//与 MUX1相关
int ADS1248GetCLKSTAT (void);
int ADS1248GetIntRef (void);
int ADS1248GetVoltageReference (void);
int ADS1248GetSystemMonitor (void);
//与 SYS0相关
int ADS1248GetGain (void);
int ADS1248GetDataRate (void);
//与 OFC 相关(3个寄存器)
long ADS1248GetOFC (void);
//与 FSC 相关(3个寄存器)
长 ADS1248GetFSC (空);
//与 IDAC0相关
//int ADS1248GetID (void);
int ADS1248GetDRDYMode (void);
int ADS1248GetCurrentDACOutput (void);
//与 IDAC1相关
INT ADS1248GetIDACRouting (int WhichOne);// IDACRoute (0 = I1DIR、1 = I2DIR)
//与 GPIOCFG 相关
unsigned char ADS1248GetGPIOConfig (void);
//与 GPIODIR 相关
unsigned char ADS1248GetGPIODir (void);
//与 GPIODAT 相关
unsigned char ADS1248GetGPIO (void);
/*其他命令*/
INT ADS1248RDATACRead (void);//直接根据 RDATAC 模式(写入 NOP)和32个 SCLK 读取数据
int ADS1248RDATARead (void);
void Delay1us (void);
void Delay10us (void);
void Delay200us (void);
void Delay10ms (void);
void Delay20ms (void);
void ADS1248SendSYSNC (void);
void ADS1248SendRDATA (void);
void ADS1248_Reset (void);
unsigned char Ads_Calibrate (unsigned int gain);
#endif
原理图:-
--------------
因此、请参阅我的问题向我提供 建议我使用数据表添加了 ADS1248数据表、使用数据表添加了基本 RTD 传感器、我获得了将输出代码转换为电阻器、然后将电阻器转换为温度的公式。
1) 1) ADS1248如何在内部将模拟数据转换为数字形式?
2) 2)是否必须校准数字数据才能获得正确的输出代码?
请帮帮我。 我自一个月以来一直在挣扎。
提前感谢、
此致、
黄色