2019-07-21 01:02发布
爱奔跑的IT 发表于 2017-7-7 16:44 你好,很感谢你的代码,我的用的是LTC2942器件地址为7bits的0x64,加上以为读写位后也是0XC8,电压寄存器 ...
ADS1993 发表于 2017-7-7 16:58 LTC2943_WriteByte(0x01,0xFC); 你要先根据你的需求 设置 0x01寄存器中的 内容
爱奔跑的IT 发表于 2017-7-10 08:56 你好,我重新设置了一下没能成功,能否发一下您的核心代码借鉴一下,刚开始搞这块不是很懂,谢谢了,
最多设置5个标签!
https://item.taobao.com/item.htm ... amp;id=545506536384
LTC2943_WriteByte(0x01,0xFC);
你要先根据你的需求 设置 0x01寄存器中的 内容
特别是
B[7:6] ADC Mode 这个是 模式选择
默认是 不工作的 [00] Sleep
说明书 说的很详细
最好先确认 初始化 是否成功,先读取 0x01 里面的数值 看看 是不是 默认值
你好,我重新设置了一下没能成功,能否发一下您的核心代码借鉴一下,刚开始搞这块不是很懂,谢谢了,shubaoj@foxmail.com
1.首先确定 硬件 连接 没问题
2.确定 IIC 通讯 初始化 成功,可以用逻辑分析仪 看一下 时序。
我用的 硬件 IIC
先初始化IIC 然后 设置 0x01; LTC2943_WriteByte(0x01,0xFC);
然后
double D_DC_V=0.;
D_DC_V = GET_LTC2943_voltage();
就可以读取数据了
[mw_shl_code=c,true]/************************************************
函数名称 :GET_LTC2943_mAh
功 能 :返回 电池容量
参 数 :
resistor : 外接电阻 阻值 单位欧姆
prescalar : M 的 分频 设置值
返 回 值 : 浮点数 数值 mAh
作 者 :
*************************************************/
float GET_LTC2943_mAh(float resistor, uint16_t prescalar)
// The function converts the 16-bit RAW adc_code to mAh
{
uint8_t adc_code_M;
uint8_t adc_code_L;
uint16_t adc_code;
float mAh_charge;
LTC2943_ReadByte(LTC2943_ACCUM_CHARGE_MSB_REG, &adc_code_M);
LTC2943_ReadByte(LTC2943_ACCUM_CHARGE_LSB_REG, &adc_code_L);
adc_code = (((adc_code_M << 8) & 0xFF00)) + ((adc_code_L)&(0X00FF));
mAh_charge = 1000*(float)(adc_code*LTC2943_CHARGE_lsb*prescalar*50E-3)/(resistor*4096);
return(mAh_charge);
}
/************************************************
函数名称 : LTC2943_code_to_voltage
功 能 : 返回 电池 电压
参 数 :
返 回 值 : 浮点数 数值 V
作 者 :
*************************************************/
double GET_LTC2943_voltage(void)
// The function converts the 16-bit RAW adc_code to Volts
{
uint8_t adc_code_M;
uint8_t adc_code_L;
uint16_t adc_code;
double voltage;
LTC2943_ReadByte(LTC2943_VOLTAGE_MSB_REG , &adc_code_M);
LTC2943_ReadByte(LTC2943_VOLTAGE_LSB_REG , &adc_code_L);
adc_code = (((adc_code_M << 8) & 0xFF00)) + ((adc_code_L)&(0X00FF));
voltage = ((double)adc_code/(65535))*LTC2943_FULLSCALE_VOLTAGE;
return(voltage);
}
/************************************************
函数名称 :GET_LTC2943_current
功 能 :返回 当前 电流值
参 数 :
resistor : 外接电阻 阻值 单位欧姆
返 回 值 :
作 者 :
*************************************************/
float GET_LTC2943_current(float resistor)
// The function converts the 16-bit RAW adc_code to Amperes
{
uint8_t adc_code_M;
uint8_t adc_code_L;
uint16_t adc_code;
float current;
LTC2943_ReadByte(LTC2943_CURRENT_MSB_REG , &adc_code_M);
LTC2943_ReadByte(LTC2943_CURRENT_LSB_REG , &adc_code_L);
adc_code = (((adc_code_M << 8) & 0xFF00)) + ((adc_code_L)&(0X00FF));
current = (((float)adc_code-32767)/(32767))*((float)(LTC2943_FULLSCALE_CURRENT)/resistor);
return(current);
}
/************************************************
函数名称 :GET_LTC2943kelvin_temperature
功 能 :返回 当前温度值
参 数 :
返 回 值 :浮点数 数值 K
作 者 :
*************************************************/
float GET_LTC2943kelvin_temperature(void)
// The function converts the 16-bit RAW adc_code to Kelvin
{
uint8_t adc_code_M;
uint8_t adc_code_L;
uint16_t adc_code;
float temperature;
LTC2943_ReadByte(LTC2943_TEMPERATURE_MSB_REG , &adc_code_M);
LTC2943_ReadByte(LTC2943_TEMPERATURE_LSB_REG , &adc_code_L);
adc_code = (((adc_code_M << 8) & 0xFF00)) + ((adc_code_L)&(0X00FF));
temperature = adc_code*((float)(LTC2943_FULLSCALE_TEMPERATURE)/65535);
return(temperature);
}
/************************************************
函数名称 :GET_LTC2943_temperature
功 能 :返回 当前温度值
参 数 :
返 回 值 :浮点数 数值 ℃
作 者 :
*************************************************/
float GET_LTC2943_temperature(void)
// The function converts the 16-bit RAW adc_code to Celcius
{
uint8_t adc_code_M;
uint8_t adc_code_L;
uint16_t adc_code;
float temperature;
LTC2943_ReadByte(LTC2943_TEMPERATURE_MSB_REG , &adc_code_M);
LTC2943_ReadByte(LTC2943_TEMPERATURE_LSB_REG , &adc_code_L);
adc_code = (((adc_code_M << 8) & 0xFF00)) + ((adc_code_L)&(0X00FF));
temperature = (adc_code*((float)(LTC2943_FULLSCALE_TEMPERATURE/65535))) - 273.15;
return(temperature);
}
[/mw_shl_code]
一周热门 更多>