MAX17058_MAX17059 STM32 iic 驱动设计

本文采用资源下载链接,含完整工程代码

MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档,实际项目中使用代码,稳定可靠资源-CSDN文库

简介

MAX17058/MAX17059 IC是微小的锂离子(Li +)在手持和便携式设备的电池电量计。MAX17058工作在单节Li +电池和两节Li +在一系列MAX17059。插入电池,IC的去抖初始电压测量,以提高初始SOC估计,让他们在位于系统侧。SOC和电压的信息访问,使用I2C接口。该集成电路可在一个微小的0.9毫米x1.7毫米,8焊球晶片级封装(WLP)或采用2mm×2mm的8引脚TDFN封装。

数据手册中相关的关键信息如下:

典型用法

寄存器一览表

器件地址

IIC时序

硬件设计

但对于MCU只需要连接IIC的两个管脚即可,也可以将低电量报警管脚使用起来,实际使用项目没有使用,这里连接STMF107RC PB10 PB11

这里根据实际要调试的板子进行设计,一般需要逐步保证电源、调试接口、MCU与MAX17058/MAX17059连接线正确(千万注意不要时钟和数据线接反了)。

软件设计

管脚定义

管脚配置的宏定义如下:

cpp 复制代码
#define MAX17058_SDA_PIN                 GPIO_Pin_11                  /* PB.11 */
#define MAX17058_SDA_GPIO_PORT           GPIOB                       /* GPIOB */
#define MAX17058_SDA_GPIO_CLK            RCC_APB2Periph_GPIOB
#define MAX17058_SCL_PIN                 GPIO_Pin_10                  /* PB.10 */
#define MAX17058_SCL_GPIO_PORT           GPIOB                       /* GPIOB */
#define MAX17058_SCL_GPIO_CLK            RCC_APB2Periph_GPIOB

管脚初始化

很多攻城狮使用IIC读取读取器件时候,非常喜欢使用IO模拟的方式。对初始化IIC使用管脚的初始化主要有两类

一类:将SDA、SCL初始化为GPIO_Mode_Out_OD(普通开漏输出),后面操作IIC管脚时序的时候,就不需要配置SDA的输入输出模式了。

一类:将SDA、SCL初始化为GPIO_Mode_Out_PP(通用推免输出),后面操作IIC管脚时序的时候,就需要配置SDA的输入输出模式。

这两种方式我都使用过,也都可以使用。这里采用第一类做法

cpp 复制代码
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(MAX17058_SDA_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = MAX17058_SDA_PIN | MAX17058_SCL_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(MAX17058_SDA_GPIO_PORT, &GPIO_InitStructure);

调试方法

一般iic调试过程,会去读器件ID/版本号之类的保证和手册上说的值一样,这样我们初步判定IIC时序没有问题,这里我们读取

我这里实际读取值是0x0012,应该是每个批次芯片的版本寄存器设置还不太一样,不过每次读取都是0x0012也说明IIC通信没有问题。

类似电量检测芯片,还可以读取电池电压,然后对比用万用表测量出来的电压,如果一致,则说明IIC通信正确。

主函数

cpp 复制代码
/******************************************************************************
* 函数名称: main
* 功能描述: 测试max1705x电量电压读取
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 
* 修改日期      版本号      修改人     修改内容
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
* 2013/02/22    V1.0.0.0       
******************************************************************************/
INT32S main (void)
{
	unsigned int soc, vcel, i;
	BSP_Init();        // 系统初始化	
	while(1)//测试读写max1705x
	{		
		if(max17058_read_reg(MAX17058_SOC_ADRR, &soc) != I2C_R_BIT_SUCCESS)//电量读取
		{
			//IIC读错误
		}
		if(max17058_read_reg(MAX17058_VCELL_ADRR, &vcel) != I2C_R_BIT_SUCCESS)//电压读取
		{
			//IIC读错误
		}		
		if(max17058_read_reg(MAX17058_VERSION_ADDR, &vcel) != I2C_R_BIT_SUCCESS)//版本读取
		{
			//IIC读错误
		}			
		i = 10000;
		while (i != 0){
			i--; 
		}
	}

	return (0);
}

本文采用资源下载链接,含完整工程代码

MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档,实际项目中使用代码,稳定可靠资源-CSDN文库

相关推荐
richxu2025100121 分钟前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
Deitymoon2 小时前
STM32——外部中断按键控制led
stm32·单片机·嵌入式硬件
czwxkn3 小时前
7STM32(stdl)flash内部闪存
stm32·单片机·嵌入式硬件
咕噜咕噜啦啦3 小时前
STlink下载程序
stm32·单片机
Deitymoon4 小时前
STM32——串口中断接收
stm32·单片机·嵌入式硬件
Deitymoon6 小时前
STM32——串口通信发送数据
stm32·单片机·嵌入式硬件
czwxkn7 小时前
8STM32(stdl)低功耗模式
stm32·单片机·嵌入式硬件
czwxkn7 小时前
9STM32(stdl)看门狗
stm32·单片机·嵌入式硬件
LCG元9 小时前
STM32实战:基于STM32F103的SPI通信驱动W25Qxx Flash存储
stm32·单片机·嵌入式硬件
iCxhust9 小时前
led_pattern = (led_pattern << 1) | (led_pattern >> 7)执行顺序
stm32·单片机·嵌入式硬件·51单片机·微机原理