本帖最后由 liao6 于 2025-10-21 14:37 编辑
一、简介 通过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 } } }
|