网站建设零基础自学视频教程深圳网络公司网站
网站建设零基础自学视频教程,深圳网络公司网站,wordpress实名,企业网站建设图片本文采用资源下载链接#xff0c;含完整工程代码
MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档#xff0c;实际项目中使用代码#xff0c;稳定可靠资源-CSDN文库 简介
MAX17058/MAX17059 IC是微小的锂离子(Li )在手持和便携式设备的电池电量计。MAX170…本文采用资源下载链接含完整工程代码
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连接线正确千万注意不要时钟和数据线接反了。 软件设计
管脚定义
管脚配置的宏定义如下
#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的输入输出模式。
这两种方式我都使用过也都可以使用。这里采用第一类做法
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通信正确。
主函数
/******************************************************************************
* 函数名称 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文库
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90282.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!