Hands-On 基于 LKS32MC453 对 BSP AFE BM81710H 设备 ID 的读取

一、   概述

本文主要介绍基于 LKS32MC453 MCU 对 BSP AFE BM81710H 设备 ID 读取的Handson操作。

硬件平台:WPI-PES_BMS V1.1 板,WPI-LPCLINK2 Debugger_V1.0 板

软件平台:Keil uVision5, LKS32MC45x_PeripDemo_v2.9          

二、BM81710H ID 寄存器

如图1可知,BM81710H ID寄存器   分为 ID寄存器1和2,ID 1寄存器地址为0x00,ID 2 寄存器地址为0x01,读取BM81710H ID的值,只需通过软件配置,使LKS32MC453 MCU 与BSP AFE BM81710H进行 I2C通讯,读取ID1、ID2寄存器即可。

▲ 图2 BM81710H_User_Manual _V1.0

三、软件配置

3.1 Demo函数概述

  • main函数:程序依次进行了系统时钟初始化(选用 96MHZ);UART 初始化(波特率设为 115200 用于后续打印数据);使能 BM81710H wake up 引脚高电平以唤醒默认关机的芯片;延时函数初始化,延时 70ms 等待芯片内部稳定;I2C GPIO 及驱动参数初始化;读取BM81710H ID寄存器1、2的值,并通过UART 打印到UART串口助手上。
int main(void)

{

             uint16_t ID_Buffer[2];

                SystemInit();                                         // 系统时钟初始化,96MHZ系统时钟

                Host_UART_Init(115200);               // UART 初始化,波特率115200HZ

                BM81710H_WakeUp_GPIO_HighLevel(); // BM81710H上电默认进入关机模式,使能 WakeUp 引脚高电平,进行唤醒

                delay_init(96);                                                          // 延时函数初始化

                delay_ms(70);                                                           // 延时70ms,BM81710H唤醒后需 70ms系统内部系统稳定

          I2C_GPIO_Init();                                             // I2c 引脚初始化

                I2C_Driver_Init(I2C0,200000);                          // I2c 配置初始化,波特率 200KHZ
             read_word(SLV_ADDR, OP_HWID1,ID_Buffer);     // 读取 ID 寄存器 1 的值

          read_word(SLV_ADDR, OP_HWID2, &ID_Buffer[1]);// 读取 ID 寄存器 2 的值

           printf("ID寄存器 1=%x \r\n",ID_Buffer[0]);           // 打印 ID 寄存器 1 的值

             printf("ID寄存器 2=%x \r\n",ID_Buffer[1]);           // 打印 ID 寄存器 2 的值

                while(1)

                {

                }      

}​

SystemInit():程序对系统时钟进行了初始化,系统时钟选用96MHZ。

Host_UART_Init(115200):对UART进行初始化,为了后续使用UART将17串电池电压数据打印到UART串口助手上。

BM81710H_WakeUp_GPIO_HighLevel():因为BM81710H上电默认进入关机状态,使能BM81710H wake up引脚高电平,用来唤醒芯片。

delay_init(96):延时函数初始化。

delay_ms(70):延时70ms,目的是BM81710H唤醒后需等待70ms内部系统稳定。

I2C_GPIO_Init():I2C GPIO,详见博文,Hands-On 基于 LKS32MC453 对 I2C 软件配置进行介绍。

I2C_Driver_Init(I2C0,200000):I2C 驱动参数初始化,详见博文,Hands-On 基于 LKS32MC453 对 I2C 软件配置进行介绍。

read_word(SLV_ADDR, OP_HWID1,ID_Buffer):用来读取 ID 寄存器 1 的值。

read_word(SLV_ADDR, OP_HWID2, &ID_Buffer[1]):用来读取 ID 寄存器 2 的值。

四、实验现象

4.1 操作步骤:

如下图所示,绿色板为 LKS32MC453 MCU 搭载 AFE BM81710H 实物板,黄色板为 SWD 程序烧录板。硬件连接好,接下来烧录程序,程序实现 MCU 使能 wake up 引脚高电平,唤醒 BM81710H,等待 70ms 使 BM81710H 内部系统稳定,MCU 与 BM81710H 进行 I2C 通讯,调用读取 BM81710H ID1、ID2 寄存器函数,并将获取的 ID1、ID2 的值通过 UART 打印到 UART 串口助手上。

▲ 图 3 WPI-LPCLINK2 Debugger_V1.0 板连接WPI PES_BMSV1.1板

4.2 串口助手接收到ID1 和ID2的值:

▲ 图 4 来自开源串口助手 开源电子网: www.openedv.com

五、总结

如上所述,为LKS32MC453 MCU 对 BSP AFE BM81710H 设备 ID 读取的Handson操作。如果有问题,可以发送邮件atu.sh@wpi-group.com与我们联系。

六、参考文献

(1)  LKS32MC45x_User_Manual_v1.53

(2)  BM81710H_User_Manual _V1.0

(3) 串口助手:XCOM V2.0 (开源电子网: www.openedv.com

(4) SDK:LKS32MC45x_PeripDemo_v2.9     

歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:扎根地下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值