一、简介
通过STM32G070配置IIC协议,读取智融SW35xx的电流,读取之前需先配置ADC读取的数据类型,再进行读取。
二、IIC配置
配置的是硬件IIC2,标准模式,100KHZ。
三、IIC读写
#define SW3526_IIC_ADDR 0x3C //IIC地址 7位
#define SW3526_IIC_R_ADDR 0x79 //读地址
#define SW3526_IIC_W_ADDR 0x78 //写地址
#define SW3526_REG_ADC_COFIG 0x3A
#define SW3526_REG_R_ADC_H8 0x3B
#define SW3526_REG_R_ADC_L4 0x3C
void pri_sw3526_iic_dischrg_cur(void)
{
static uint16_t su16Sw3526ReadDatCnt = 0;
if(HAL_GPIO_ReadPin(USB_EN_GPIO_Port,USB_EN_Pin) == GPIO_PIN_SET)
{
su16Sw3526ReadDatCnt++;
if(su16Sw3526ReadDatCnt == 1000)
{
su16Sw3526ReadDatCnt = 0;
HAL_I2C_Mem_Write(&hi2c2,SW3526_IIC_W_ADDR,SW3526_REG_ADC_COFIG,I2C_MEMADD_SIZE_8BIT,&g_su8SW3526AdcOutType,1,1000);
HAL_I2C_Mem_Read(&hi2c2,SW3526_IIC_R_ADDR,SW3526_REG_R_ADC_H8,I2C_MEMADD_SIZE_8BIT,&g_stuTypePortCurDat.m_u8Sw3526CurAdcH8Bit,1,1000);
HAL_I2C_Mem_Read(&hi2c2,SW3526_IIC_R_ADDR,SW3526_REG_R_ADC_L4,I2C_MEMADD_SIZE_8BIT,&g_stuTypePortCurDat.m_u8Sw3526CurAdcL4Bit,1,1000);
g_stuTypePortCurDat.m_u16Sw3526DischrgCur = (g_stuTypePortCurDat.m_u8Sw3526CurAdcH8Bit << 4) | g_stuTypePortCurDat.m_u8Sw3526CurAdcL4Bit;
g_stuTypePortCurDat.m_u16Sw3526DischrgCur = g_stuTypePortCurDat.m_u16Sw3526DischrgCur * 25 / 10; //µ¥Î»mA
}
}
}