OLED INA226基本完成
This commit is contained in:
83
Header/ina226.h
Normal file
83
Header/ina226.h
Normal file
@@ -0,0 +1,83 @@
|
||||
#ifndef __INA226_H__
|
||||
#define __INA226_H__
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
#define INA226_USE_SOFT_IIC 0
|
||||
|
||||
#define INA226_NUM 1
|
||||
|
||||
#define INA226_READ_TIME_MS 1
|
||||
|
||||
#if (1==INA226_USE_SOFT_IIC)
|
||||
|
||||
#define INA226_SDA_PIN P24
|
||||
#define INA226_SCL_PIN P25
|
||||
#define INA226_SOFT_WAIT_TIME 5
|
||||
|
||||
#define INA226_SDA_LEVEL(x) (INA226_SDA_PIN = x)
|
||||
#define INA226_SCL_LEVEL(x) (INA226_SCL_PIN = x)
|
||||
#define INA226_SDA_READ() (INA226_SDA_PIN)
|
||||
|
||||
#else
|
||||
|
||||
#define INA226_IIC IIC_1
|
||||
#define INA226_HARD_WAIT_TIME 10
|
||||
|
||||
#endif
|
||||
|
||||
#define INA226_CONFIG_REG 0x00
|
||||
#define INA226_SHUNTVOT_REG 0x01
|
||||
#define INA226_BUSVOT_REG 0x02
|
||||
#define INA226_POWER_REG 0x03
|
||||
#define INA226_CURRENT_REG 0x04
|
||||
#define INA226_CALIBRATION_REG 0x05
|
||||
|
||||
#define INA226_DEF_ADDR 0x40
|
||||
#define INA226_DEF_MODE {0x44, 0x4F}
|
||||
#define INA226_DEF_CAL {0x0D, 0x1B}
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 addr;
|
||||
float max_current_A;
|
||||
float rshunt_mOhm;
|
||||
float vot_fix_k;
|
||||
float amp_fix_k;
|
||||
uint8 mode[2];
|
||||
} INA226_Config;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float c_lsb_mA;
|
||||
uint8 cal[2];
|
||||
} INA226_Calibration;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float voltage_V;
|
||||
float current_A;
|
||||
float power_W;
|
||||
float shunt_voltage_mV;
|
||||
float energy_J;
|
||||
float quantity_C;
|
||||
uint8 org_reg[4][2];
|
||||
float past_voltage_V[10];
|
||||
float past_current_A[10];
|
||||
} INA226_Result;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INA226_Config config;
|
||||
INA226_Calibration calibration;
|
||||
INA226_Result result;
|
||||
} INA226_t;
|
||||
|
||||
extern INA226_t ina226[INA226_NUM];
|
||||
|
||||
void INA226_Init(INA226_t *ina226, uint8 addr, uint8 mode[2], float max_current_A, float rshunt_mOhm, float amp_fix_k, float vot_fix_k);
|
||||
void INA226_Read(INA226_t *ina226);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user