又没有人知道为什么,是不是是我把输入弄错了,还是没配置对,把那个程序弄出来,大家看看
void ADS1115Config_A(u8 LCMD,u8 HCMD)//配置寄存器
{
u8 i=0;
u8 Initdata[4];
Initdata[0] = WR_REG; // μ??·0x90 ?÷?tADR?óμ? D′??′??÷
Initdata[1] = CONF_REG;// μ??·0x01 ???ò??????′??÷
Initdata[2] = HCMD; // μ??·0x64 ????×???×??ú
Initdata[3] = LCMD; // μ??·0xf0 ????×?μí×??ú
SCL_A1;
I2CStart_A();
for(i=0;i<4;i++)
{
I2CWriteByte_A(Initdata);
ADS1115_delay(10);
}
I2CStop_A();
}
/*******************************************************************
读和指向寄存器
********************************************************************/
u16 ReadAD_A(void)
{
u16 Data[2]={0,0};
SCL_A1;
I2CStart_A();
I2CWriteByte_A(WR_REG);//指向指向寄存器
I2CWriteByte_A(DATA_REG);
I2CStop_A();
SCL_A0;
SCL_A1;
I2CStart_A();
I2CWriteByte_A(RE_REG);//读
Data[0] = I2CReadByte_A();
Data[1] = I2CReadByte_A();
I2CStop_A();
Data[0] = Data[0]<<8 | Data[1];
return (Data[0]);//&0x7fff
}
在主函数中初始化时候
ADS1115Config_A(0xf0,0x64);
AINP = AIN3 and AINN = GND这个实在芯片手册中弄出来的,不知道什么意思
本帖最后由 dontium 于 2015-1-23 11:08 编辑
调通了,可是现在怎么将寄存器的值,转化成那个电压值呀
量化一下。比如外加1V时AD值时999,3V时是3000,那么AD值是2000是电压是多少啊?
这个好像说就是已经就是明文规定了的,就是寄存器的值*量程除以65535,不过怎么来的也不是很清楚
AD芯片肯定有测量范围,假如一片8位AD,假如最大测量范围o ~5V。实际电压=(AD/255)*5
也搞定了,他是内部基准的芯片,16位的嘛,然后就是转换就是4.096*2/65535,其中要不要多去几次平均滤波呀
关键是你要把那个IIC信号给对,那样以后你就可以直接从那个数据寄存器里面读数据了
请教您一个问题,跟你遇到的问题一样,如果只按手册上的配置输出的是7ffff啊,不知道怎么做了,后来你怎么做的?
请教您一个问题,跟你遇到的问题一样,如果只按手册上的配置输出的是7ffff啊,不知道怎么做了,后来你怎么做的?
这个芯片 不难,你看看 寄存器 是不是配置错误了,然后再看看代码是不是错误。 网上有现成的程序,比对一下那里出现了问题