Hands-On 基於 LKS32MC453 對 BSP AFE BM81710H 設備 ID 的讀取

關鍵字 :LKS32MC453BM81710HID

一、   概述

本文主要介紹基於 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 作者:紮根地下

更多資訊,請掃碼關注我們!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論