H2S stm32F407ZET stm32F407ZGT
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
H2S/backup/obolete/i2c_ads1115.c

162 lines
4.2 KiB

2 years ago
//i2c_ads1115.c
#include "i2c_ads1115.h"
#include <stdlib.h>
#include "i2c.h"
#include "main.h"
#include "elog.h"
/*
* ads1115_get_voltage_val( hi2c1, 0x00, CONFIG_REG_H, CONFIG_REG_L )
*/
extern I2C_HandleTypeDef hi2c1;
#define ADS1115_hi2c hi2c1
int ads1115_test(I2C_HandleTypeDef ads1115_I2cHandle)
{
ads1115_config_register(ads1115_I2cHandle, 0x00, CONFIG_REG_H, CONFIG_REG_L);
return 0;
}
/**
* @brief
* @param [in] ads1115_I2cHandle
* @param [in] pointADD -- 0x01
* @param [in] configH
* @param [in] configL
*
* @details
*/
void ads1115_config_register(I2C_HandleTypeDef ads1115_I2cHandle,uint8_t pointADD,uint8_t configH,uint8_t configL)
{
uint8_t reg_data[3]={pointADD,configH,configL};
log_i( "115 %d %d %d ", reg_data[0], reg_data[1], reg_data[2]);
while(HAL_I2C_Master_Transmit( &ads1115_I2cHandle, ADS1115_WRITE_ADDRESS, reg_data, 3, 2000 ) != HAL_OK)
{
if(HAL_I2C_GetError(&ads1115_I2cHandle) != HAL_I2C_ERROR_AF)
{
log_i( "ads1115 Config Register error!!!\r\n" );
}
}
}
int16_t ads1115_read_data(I2C_HandleTypeDef ads1115_I2cHandle)
{
int16_t data;
uint8_t rx_data[2]={0};
while( HAL_I2C_Master_Transmit( &ads1115_I2cHandle, ADS1115_WRITE_ADDRESS, 0x00, 1, 2000 ) != HAL_OK )
{
if(HAL_I2C_GetError(&ads1115_I2cHandle) != HAL_I2C_ERROR_AF)
{
log_i( "ads1115 convert Register error!!!\r\n" );
}
}
while( HAL_I2C_Master_Receive(&ads1115_I2cHandle, ADS1115_READ_ADDRESS, rx_data, 2, 2000) != HAL_OK )
{
if(HAL_I2C_GetError(&ads1115_I2cHandle) != HAL_I2C_ERROR_AF)
{
log_i( "ads1115 read data error!!!\r\n" );
}
}
data = rx_data[0]*256 + rx_data[1];
return data;
}
double ads1115_get_voltage_val( I2C_HandleTypeDef ads1115_I2cHandle, uint8_t pointADD, uint8_t configH, uint8_t configL)
{
double val;
int16_t ad_val;
double coeff_mv = 1000.0; /* 输出 毫伏*/
double coeff_v = 1000000.0; /* 输出 伏*/
// ads1115_config_register( ads1115_I2cHandle, pointADD, configH, configL );
// // HAL_Delay(10);
// osDelay(10);
// ad_val=ads1115_read_data( ads1115_I2cHandle );
// if( (ad_val==0x7FFF)|(ad_val==0X8000) )//是否超量程了
// {
// ad_val=0;
// log_i("over PGA\r\n");
// }
// switch( ( 0x0E&configH )>>1 )//量程对应的分辨率
// {
// case(0x00):
// val=(double)ad_val*187.5/coeff_mv;//
// break;
// case(0x01):
// val=(double)ad_val*125/coeff_mv;
// break;
// case(0x02):
// val=(double)ad_val*62.5/coeff_mv;
// break;
// case(0x03):
// val=(double)ad_val*31.25/coeff_mv;
// break;
// case(0x04):
// val=(double)ad_val*15.625/coeff_mv;
// break;
// case(0x05):
// val=(double)ad_val*7.8125/coeff_mv;
// break;
// }
return coeff_mv;
}
int ads1115_get ( I2C_HandleTypeDef ads1115_I2cHandle, uint8_t pointADD, uint8_t configH, uint8_t configL)
{
double val;
int16_t ad_val;
double coeff_mv = 1000.0; /* 输出 毫伏*/
double coeff_v = 1000000.0; /* 输出 伏*/
ads1115_config_register( ads1115_I2cHandle, pointADD, configH, configL );
// HAL_Delay(10);
osDelay(10);
ad_val=ads1115_read_data( ads1115_I2cHandle );
// if( (ad_val==0x7FFF)|(ad_val==0X8000) )//是否超量程了
// {
// ad_val=0;
// log_i("over PGA\r\n");
// }
// switch( ( 0x0E&configH )>>1 )//量程对应的分辨率
// {
// case(0x00):
// val=(double)ad_val*187.5/coeff_mv;//
// break;
// case(0x01):
// val=(double)ad_val*125/coeff_mv;
// break;
// case(0x02):
// val=(double)ad_val*62.5/coeff_mv;
// break;
// case(0x03):
// val=(double)ad_val*31.25/coeff_mv;
// break;
// case(0x04):
// val=(double)ad_val*15.625/coeff_mv;
// break;
// case(0x05):
// val=(double)ad_val*7.8125/coeff_mv;
// break;
// }
return ad_val;
}