何國鋒,劉宇紅
(貴州大學 大數據與信息工程學院,貴州 貴陽 550025)
基于SMBus協議的電池信息監(jiān)測系統
何國鋒,劉宇紅
(貴州大學 大數據與信息工程學院,貴州 貴陽 550025)
目前大部分智能電池都對外提供了SMBus協議接口。為了對智能電池的信息進行監(jiān)測,首先對SMBus協議的時序進行分析,然后通過MSP430處理器的硬件接口模擬協議,對以BQ3060電池信息管理芯片為核心的電池組進行命令寫入與數據讀取,實現了智能電池信息監(jiān)測系統,可以對電池的電量、溫度、電壓、電流等多種信息進行實時監(jiān)測。
SMBus;電池信息監(jiān)測;BQ3060
SMBus協議是 Intel公司(聯合其他公司)在 PC-I2C基礎上研發(fā)出來的系統管理總線協議。最初是為智能電池、充電電池和與其他系統通信的微控制器之間的通信鏈路而定義的[1],后來也被用來連接各種設備,包括電源相關設備、系統傳感器、EEPROM通信設備等。其被廣泛用于筆記本電腦上,檢測各元件狀態(tài)并更新硬件設置引腳。它為系統和電源管理這樣的任務提供了一條控制總線,使用 SMBus總線的系統,設備之間發(fā)送和接收消息都是通過 SMBus總線,而不是使用單獨的控制線,這樣可以節(jié)省設備的管腳數。隨后,Intel公司聯合其他公司在此基礎上創(chuàng)建了智能電池管理標準,SMBus成為在智能電池及低速率管理設備上被廣泛采用的協議標準。
SMBus由兩根總線,即串行數據線(SDA)和串行時鐘線(SCL)構成[2],主要用于主從系統。由于 SMBus是雙向通信,因此在設計電路時兩條線上都需要外接上拉電阻,數據可以在總線空閑時間進行傳輸。
1.1SMBus啟動和停止條件
在總線處于空閑狀態(tài)時,SMBus總線上的 SCL和SDA都被上拉電阻拉至高電平。此時,當SDA由高電平變?yōu)榈碗娖?,總線啟動SMBus協議傳輸。啟動條件產生后,總線就被視為忙的狀態(tài);當SCL為高電平時,SDA由低電平變?yōu)楦唠娖?,SMBus傳輸停止[3],停止條件發(fā)生一段時間后,總線再次被視為空閑狀態(tài)。啟動條件和停止條件總是由主設備產生,圖1為模擬SMBus協議啟動和停止的時序圖,S表示啟動條件,P表示停止條件。
圖1 SMBus協議啟動與停止信號
1.2數據的有效性
SDA線上的數據必須在時鐘的高電平周期保持穩(wěn)定,數據線上的電平只有在SCL線為低電平時才可以改變[3]。圖2為SMBus協議數據有效性的圖示。
1.3SMBus數據傳輸
圖3是SMBus數據傳輸協議時序圖,當SMBus啟動信號產生后,數據以串行方式進行傳輸,每次傳輸以8 bit(1 B)為一組,每次可發(fā)送的字節(jié)數不受限制,但是每個字節(jié)后必須跟一個響應位。數據以高字節(jié)在前、低字節(jié)在后的順序傳輸,第9位為應答位[2]。
總線上的所有器件都有一個唯一地址,并且都可以工作在接收或發(fā)送狀態(tài),構成了4種工作模式,即主發(fā)送、主接收、從發(fā)收、從接收[3]。SMBus總線還具有仲裁功能,保證同一時刻只有一個器件在控制總線。
圖2 SMBus數據有效性
圖3 SMBus協議數據傳輸
2.1主機系統實現
主機系統采用了以MSP430F149處理器為核心的開發(fā)板,MSP430是德州儀器公司推出的一款 16位、具有超低功耗芯片及精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor)[4],被廣泛用于智能便攜電子設備中。開發(fā)板上擁有較豐富的外設資源,同時集成了RS232模塊,可以將測得的數據信息等通過串口實時發(fā)送到上位機中,查看驗證結果。
2.2智能電池
目前大部分智能電池對外接口都遵循 SMBus協議標準,本設計采用的智能電池是一塊由4節(jié)鋰電池組成的智能電池組,采用德州儀器的BQ3060電源管理芯片進行電池管理。BQ3060芯片可以對最多4節(jié)電池構成的電池組進行管理,將普通電池組變成智能電池,并通過SMBus總線接口與處理器通信。
將MSP430處理器與智能電池以及其他外圍器件同時掛載到接有上拉電阻的SMBus總線上,如圖4所示。MSP430處理器為主機,總線上的其他設備充當從機。當啟動傳輸協議時,MSP430可以通過 SMBus總線獲得 4節(jié)鋰電池的相關信息。
圖4 MSP430主機與智能電池等外圍器件總線連接圖
3.1SMBus啟動
在初始時刻,總線處于空閑狀態(tài),數據線和時鐘線都被拉高,此時拉低數據線,SMBus啟動。下面是模擬SMBus協議的啟動代碼:
3.2SMBus停止
在時鐘線為高時,當數據線被拉高,SMBus停止。以下是模擬SMBus協議停止代碼:
3.3SMBus檢測應答
在數據傳輸的第9個時鐘,主機需要檢測總線上SDA的電平是否被拉低,如果規(guī)定的時鐘周期內未檢測到低電平,視為無應答,說明傳輸失??;如果檢測到低電平,說明從機成功接收到數據,可以繼續(xù)下一步傳輸。代碼如下:
3.4SMBus發(fā)送應答
當主機接收完從機發(fā)來的8 bit數據后,需要在第9個時鐘周期內做出應答,并且告訴從機是否繼續(xù)通信。如果繼續(xù)通信,則拉低SDA電平;如果希望終止通信,則拉高SDA上的電平。代碼如下:
3.5SMBus讀取字節(jié)
從SMBus總線上讀取字節(jié)按照從高位到低位的順序逐位讀取,編程時在時鐘為高時讀取到的值保存到變量中并返回。
3.6SMBus寫入字節(jié)
向SMBus總線上寫入字節(jié)時從高位到低位依次寫入,寫入完一個字節(jié)后將數據總線拉高。
3.7SMBus通信協議幀
使用SMBus協議對設備信息進行讀取時有統一的標準要求,圖5是SMBus設備間通信協議幀結構圖。最先傳輸的是啟動條件S,隨后發(fā)送第一幀數據,由7位設備地址DevAdd、1位寫標志W和1位應答Ack構成。第二幀由8位設備內的寄存器地址RegAdd和1位應答Ack構成,如要讀取電池的溫度,RegAdd則為溫度寄存器。其中前兩幀都是主設備向總線上寫信息,告訴了總線要寫入的設備地址,以及要獲得設備中哪個寄存器的內容。接下來要再次發(fā)送啟動信號S進行一次重啟。第三幀數據由 7位設備地址 DevAdd、1位讀標志位 R、1位應答Ack構成;第四幀由8位數據Data1和1位應答Ack構成;第五幀也由8位數據Data2和1位應答Ack構成。其中第三幀數據告訴了總線要對哪個設備進行讀取操作,第四幀和第五幀則由主機從總線上兩次讀取數據,得到Data1和 Data2,這兩個字節(jié)分別為讀取值的高8位和低8位。最后是一位停止信號P。
圖5 SMBus協議幀結構
將協議中包含的數據幀按照圖5格式進行打包,統一寫成函數以方便應用。代碼如下:
3.8主程序設計
主程序中最先要通過SMBus總線向智能電池發(fā)送命令,對BQ3060芯片進行初始化配置,然后調用SMBus_ReadAdd函數即可獲得電池相關信息,如電池電壓和相對電量 Reg地址分別為 0x09、0x0d,其他寄存器請參考芯片手冊。調用方法如下:
讀取字節(jié)時,SMBus_ReadAdd(0x09)&0x7FFF和SMBus_ ReadAdd(0x0d)&0x7F因為電壓返回值范圍是0~20 000 mV,電量狀態(tài)范圍為0~100%,為防止數據出錯,要對有效位進行選取,同時讀取數據后一定要進行延時操作,否則讀數結果會出現錯誤。
IAR EW for MSP430是IAR公司為TI公司的MSP430系列處理器開發(fā)的一款集成開發(fā)環(huán)境,可對工程進行有效管理、編譯、鏈接后生成目標文件,并結合 MSP專門的USB燒錄器進行程序下載。
通過MSP430F149開發(fā)板自帶的RS232模塊與筆記本USB口相連,MSP430將監(jiān)測到的電池信息通過Uart0口發(fā)送到串口助手,最開始測得的所有數值都存在錯誤,通過對程序進行分析,發(fā)現在使用 SMBus進行讀取數據時沒有設置一定的延時等待,加上延時函數后結果正常,但依然錯誤率很高。在查閱了BQ3060數據手冊后才發(fā)現電壓的有效值是 0~20 000 mV,電量的有效值是0~100%,每次需要對讀到的值進行有效位的提取,如SMBus_ReadAdd(0x09)&0x7FFF和 SMBus_ReadAdd(0x0d) &0x7F語句處理后,輸出結果正確,如圖6。
用電壓表測電池兩端的電壓為15.9 V,與系統的15 943 mV一致,室內空調顯示溫度為26℃,考慮到電池使用過程會發(fā)熱,因此溫度會比室溫高一些。通過檢測出來的數據可以看出,用SMBus協議可以很方便地對智能電池信息進行監(jiān)測,同時不需要處理器親自去檢測電池的各種信息,節(jié)省了處理器的時鐘,可以使處理器更多的時間用在算法、控制等處理上。
本文實現了一個使用SMBus協議對電池信息進行實時監(jiān)測的系統,系統準確監(jiān)測到電池電壓、電量、溫度等重要信息。在實際應用中,可以根據需要對電池的其他信息進行監(jiān)測,相關寄存器地址可以參考TI公司數據手冊。雖然使用以BQ3060為管理芯片的智能電池作為實驗平臺,但是系統適合于對所有使用SMBus協議的智能電池進行監(jiān)測,TI公司BQ系列電源管理芯片基本都支持SMBus協議,只需對設備地址、寄存器地址做相應改變就可達到通用的目的。
[1]路鐵生.系統管理總線(SMBus)與智能充電[J].電源世界,2011(8):36-39.
[2]陳濤,萬亞坤.基于智能電池系統的 SMBus總線研究及IP設計[J].中國集成電路.2008(11):48-51.
[3]吳珍毅.基于SMBus的智能鋰動力電池總線系統的實現[J].北京聯合大學學報,2012,26(4):15.
[4]郝建國.MSP430微控制器基礎和應用[M].北京:電子工業(yè)出版社,2014.
Battery information monitoring system based on SMBus protocol
He Guofeng,Liu Yuhong
(College of Big Data and Information Engineering,Guizhou University,Guiyang 550025,China)
Now most of smart batteries provide SMBus protocol interface for user.In order to monitor the information of the battery, the paper analyzed the timing of SMBus protocol at first,and then simulated the protocol through MSP430 processor′s hardware interface,to read data from or write commands to the battery pack based on power management chip BQ3060.At last a smart battery information monitoring system was realized,which could monitor batteries′capicity,temperature,voltage,current and other information in real time.
SMBus;battery information monitoring;BQ3060
TP277
A
10.16157/j.issn.0258-7998.2016.04.014
(2015-12-13)(
2015-10-30)
何國鋒(1988-),男,碩士研究生,主要研究方向:嵌入式通信系統、生物醫(yī)學信號處理。
劉宇紅(1963-),通信作者,男,教授,主要研究方向:嵌入式通信系統、語音信號及數字圖像處理,E-mail:liuyuhongyx@sina.com。
中文引用格式:何國鋒,劉宇紅.基于 SMBus協議的電池信息監(jiān)測系統[J].電子技術應用,2016,42(4):49-52.
英文引用格式:He Guofeng,Liu Yuhong.Battery information monitoring system based on SMBus protocol[J].Application of Electronic Technique,2016,42(4):49-52.