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文库

相关推荐
Asa31928 分钟前
STM32-按键扫描配置
stm32·单片机·嵌入式硬件
嵌入式科普1 小时前
十三、从0开始卷出一个新项目之瑞萨RZN2L串口DMA接收不定长
c语言·stm32·瑞萨·e2studio·rzn2l
枯无穷肉16 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
不过四级不改名67716 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式科普17 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
云山工作室17 小时前
基于单片机的视力保护及身姿矫正器设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
不知火猪17 小时前
最新雷蛇鼠标键盘驱动Razer Synapse 4(雷云) 下载与安装
计算机外设·驱动·雷云·雷蛇驱动
艺术家天选20 小时前
STM32点亮LED灯
stm32·单片机·嵌入式硬件
向阳逐梦20 小时前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
小猪写代码21 小时前
STM32 水质水位检测项目 (调试模块)和(延时模块)
stm32·单片机·嵌入式硬件