我用一个120欧姆的电阻来测试ADS1248模块,打算选用内部参考,但是不知道怎么用,求指导。下面给出我的原理图
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用一个120欧姆的电阻来测试ADS1248模块,打算选用内部参考,但是不知道怎么用,求指导。下面给出我的原理图
按照你指示的做了,REFOUT能量到2.048V的电压。在此,我还有一个问题,我使用内部参考的话,PREFP0、PREFN0、PREFP1、PREFN1、这些引脚该怎么处理,需要接什么东西吗?
我的寄存器配置如下:
ADS1248WREG(ADS1248_REG_MUX0,0x01); //00000001,Bit7-6:传感器电流源检测不使用,Bit5-3:正输入为AIN0,Bit2-0:负输入为AIN1
//初始化MUX1多路复用控制寄存器
ADS1248WREG(ADS1248_REG_MUX1,0x30); //00110000,Bit7:启用内部晶振,Bit6-5:内部基准一直打开,Bit4-3:输入基准以板上为准,Bit2-0:普通模式
//延时等待10ms,等待内部基准稳定
Delay(6*DELAY_10ms);
//初始化VBIAS偏压寄存器
ADS1248WREG(ADS1248_REG_VBIAS,0x00); //00000000,Bit7-0:偏置电压选择关闭
//初始化IDAC1控制寄存器
ADS1248WREG(ADS1248_REG_IDAC1,0x8F);//10001111,Bit7-4:内部第一恒流源的连接ANO,Bit3-0:内部第二恒流源的关闭
//初始化IDAC0控制寄存器
ADS1248WREG(ADS1248_REG_IDAC0,0x06); //00000111,Bit7-4:只读,Bit3:DOUT功能 ,Bit2-0:1.5mA内部恒流源
//初始化SYS0系统控制寄存器
ADS1248WREG(ADS1248_REG_SYS0,0x7F); //01111111,Bit7:必须设置为0,Bit6-41:选择128倍增益,Bit3-0:选择2000SPS测量速度
ADS1248WREG(ADS1248_REG_GPIOCFG,0x09);
。
电阻通过AN0,AN1接入电路,如图所示,请看看有没有什么问题?我这样,读出来的数据完全不对
手册上没有所谓的PREFP0和PREFP1这些东西,外部参考输入引脚是REFP0/N0和REFP1/N1,如果启用内部基准,这些引脚可以悬空。
至于配置,没看懂。手册上一共有11个寄存器,地址从0x00到0x0A。从你的配置上,看不出来地址,寄存器的数目也不对。
所有的寄存器都要配置吗?感觉GPIO相关的寄存器不需要配置啊
你好,请我打开内部恒流源 IDAC,是不是只要配置寄存器就好了?硬件上还需要做什么吗?
内部恒流源可以通过写0x0A地址的[2:0]实现。启动这个功能,输入口会向前端电路注入电流,通过前端的电阻性负载转换成电压,详见手册图85。这个功能一般是用在温度检测的应用。
我的寄存器配置为: IDAC0:0x07,MUX0:0x01,MUX1:0x38,IDAC1:0x01,SYS0:0x5F,但是没有电流输出,请问是什么原因?接线图如下,我在J3元件的1、2脚接入了一个120欧姆的电阻,把寄存器配置写进去以后,电阻2端没有电压。确定配置已经写进去了
寄存器配置写进去了,但恒流源没有输出,电阻两端量不到电压,是什么情况?
帮帮忙吧,看看我哪里错了,没有参考电压输出,指令发出去好像没什么作用,也不知道发出去了没,读就更不用说了
#include "Ads1248.h"
//单片机是MSP430F1611 主时钟是 1M
/********************************************************************
函数名称:SPI1初始化
功 能:初始化SPI1
参 数:无
返回值 :无
********************************************************************/
void Init_Spi1(void)
{
unsigned int i;
P4OUT |= BIT6 + BIT4 + BIT1 + BIT0;
P4DIR |= BIT6 + BIT4 + BIT1 + BIT0;
P4DIR &= ~BIT5 ;
P5OUT |= BIT1 + BIT3;
P5DIR |= BIT1 + BIT3;
P5DIR &= ~BIT2 ;
for (i = 0xFF; i > 0; i--);
}
/********************************************************************
函数名称:发送数据
功 能:
参 数:
返回值 :
*********************************************************************/
void Spi3WriteByte(unsigned char Byte)
{
unsigned char i;
ADC_SPI_CLK_CLR ;
ADC_SPI_CLK_CLR ;
for(i=0;i<8;i++)
{
ADC_SPI_CLK_SET;
ADC_SPI_CLK_SET;
if(Byte&0x80)
{ADC_SPI_DIN_SET;}
else
{ADC_SPI_DIN_CLR;}
Byte=Byte<<1;
ADC_SPI_CLK_CLR;
ADC_SPI_CLK_CLR;
}
}
/********************************************************************
函数名称:读接收的数据
功 能:
参 数:
返回值 :接收数据
*********************************************************************/
unsigned char Spi3ReadByte(void)
{
unsigned char i,Byte=0;
ADC_SPI_CLK_CLR ;
ADC_SPI_CLK_CLR ;
for(i=0;i<8;i++)
{
ADC_SPI_CLK_SET;
ADC_SPI_CLK_SET;
Byte = (Byte<<1)|ADC_SPI_OUT;
ADC_SPI_CLK_CLR ;
ADC_SPI_CLK_CLR ;
}
return Byte;
}
/********************************************************************
函数名称:读接收的数据 long
功 能:
参 数:
返回值 :接收数据
*********************************************************************/
unsigned long int Spi3Read3Byte(void)
{
unsigned char i;
unsigned long int Byte3;
ADC_SPI_CLK_CLR;
ADC_SPI_CLK_CLR;
for(i=0;i<24;i++)
{
ADC_SPI_CLK_SET;
ADC_SPI_CLK_SET;
Byte3 = (Byte3<<1)|ADC_SPI_OUT;
ADC_SPI_CLK_CLR;
ADC_SPI_CLK_CLR;
}
return Byte3;
}
/********************************************************************
函数名称:读寄存器
功 能:
参 数:
返回值 :
*********************************************************************/
unsigned char ADS1248_ReadReg(unsigned char RegAddr)
{
unsigned char Readregs;
Spi3WriteByte(ADC_CMD_RREG + (RegAddr&0X0f));
Spi3WriteByte(0);
Readregs=Spi3ReadByte();
Spi3WriteByte(ADC_CMD_NOP);
return Readregs;
}
/********************************************************************
函数名称:写寄存器
功 能:
参 数:
返回值 :
*********************************************************************/
void ADS1248_WriteReg(unsigned char RegAddr,unsigned char Buffer)
{
Spi3WriteByte(ADC_CMD_WREG + (RegAddr&0x0f));
Spi3WriteByte(0);
Spi3WriteByte(Buffer);
}
void ADS1248_Init(void)
{
ADC_START_CLR;
ADC_SPI_CS_CLR;
ADC_RESET_CLR;
delay_ms(20);
ADC_RESET_SET;
delay_ms(20);
Spi3WriteByte(ADC_CMD_RESET); //初始化所有寄存器
delay_ms(5);
ADS1248_WriteReg(ADC_REG_MUX0,0x01);delay_ms(10);
ADS1248_WriteReg(ADC_REG_MUX1,0x30);delay_ms(1000);
ADS1248_WriteReg(ADC_REG_VBIAS,0x00);delay_ms(10);
ADS1248_WriteReg(ADC_REG_IDAC1,0xff);delay_ms(10);
ADS1248_WriteReg(ADC_REG_IDAC0,0x08);delay_ms(10);
ADS1248_WriteReg(ADC_REG_SYS0,0x0f);delay_ms(10);
}
/*---------------------------------------------------------
数据读取
---------------------------------------------------------*/
unsigned long int ADS1248_Read(void)
{
unsigned long int DataS;
Spi3WriteByte(ADC_CMD_RDATA);
DataS=Spi3Read3Byte();
Spi3WriteByte(ADC_CMD_NOP);
return DataS;
}
这是我的SPI程序:
unsigned char ADS1248SPI(unsigned char m)
{
unsigned char i,r=0;
unsigned short* pState0;//出口
unsigned short* pState1;//出口反校
pState0=(unsigned short*)0x202E0004;
pState1=(unsigned short*)0x202E0008;
for(i=0;i<8;i++)
{
sck_set(1);
r=r<<1;
Delay(100);
if(m & 0x80)
{
sdin_set(1);
}
else
{
sdin_set(0);
}
m = m<<1;
sck_set(0);
if(!(*pState1==0xbf))
{
r++;
}
Delay(100);
}
return r;
}
您好:
我把该寄存器设置成0x30 还是测不到REFOUT端的参考电压,您说的设置好还要启动,这个启动怎么启动?谢谢
您好:
我把该寄存器设置成0x30 还是测不到REFOUT端的参考电压,您说的设置好还要启动,这个启动怎么启动?谢谢