基于STM32單片機(jī)的數(shù)據(jù)記錄裝置設(shè)計(jì)
引言
本文針對(duì)電動(dòng)汽車研究的實(shí)際需求,設(shè)計(jì)一款數(shù)據(jù)記錄裝置,該數(shù)據(jù)記錄裝置是搭建在電池能量管理系統(tǒng)基礎(chǔ)上的,通過與能量管理系統(tǒng)通信,記錄電動(dòng)汽車實(shí)際運(yùn)行時(shí)電池的外部狀態(tài)(如:電池電壓、電流、溫度等),一方面為了研究電池的工作特性,另一方面為了對(duì)能量管理系統(tǒng)的工作情況做驗(yàn)證,為電動(dòng)汽車動(dòng)力電池的理論研究提供數(shù)據(jù)支持。
1 系統(tǒng)總體設(shè)計(jì)
本數(shù)據(jù)記錄裝置的設(shè)計(jì)包括硬件設(shè)計(jì)與軟件設(shè)計(jì)兩方面,軟件設(shè)計(jì)主要包括數(shù)據(jù)接收的編程以及數(shù)據(jù)存儲(chǔ)的編程,而硬件設(shè)計(jì)主要有幾個(gè)方面:主控芯片的選擇、復(fù)位功能的實(shí)現(xiàn)、電源模塊、實(shí)時(shí)時(shí)鐘、通信模塊以及SD卡連接等。主控芯片是控制系統(tǒng)的核心,它內(nèi)部所集成的模塊越多,就能省去更多的外部電路,使得電路的設(shè)計(jì)更加簡(jiǎn)捷方便。電源模塊用來滿足系統(tǒng)各部分對(duì)于不同電壓的需求。實(shí)時(shí)時(shí)鐘,用來準(zhǔn)確記錄系統(tǒng)時(shí)標(biāo)。選用SD卡作為存儲(chǔ)裝置以適應(yīng)系統(tǒng)海量數(shù)據(jù)存儲(chǔ)?;诂F(xiàn)在市場(chǎng)上的電動(dòng)汽車主要是CAN接口,所以本裝置用CAN進(jìn)行通信。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
根據(jù)其實(shí)際功能,本數(shù)據(jù)記錄裝置的硬件部分設(shè)計(jì)原理圖如圖2所示。
2硬件設(shè)計(jì)
2.1主控制芯片選擇選擇STM32F103RBT6芯片作為系統(tǒng)總控制器,STM32F103RBT6是意法半導(dǎo)體有限公司的一款高性能、低成本、低功耗的處理器,它使用高性能的32位的RISC內(nèi)核ARMCortex-M3,工作頻率為72MHz.它的價(jià)格較低,零售價(jià)大約12元左右。
2.2復(fù)位功能
STM32F103RBT內(nèi)置兩個(gè)看門狗,兩個(gè)看門狗設(shè)備(獨(dú)立看門狗和窗171看門狗)可用來檢測(cè)和解決由軟件錯(cuò)誤引起的故障,實(shí)現(xiàn)軟件復(fù)位;當(dāng)計(jì)數(shù)器達(dá)到給定的超時(shí)值時(shí),觸發(fā)一個(gè)中斷(僅適用于窗口型看門狗)或產(chǎn)生系統(tǒng)復(fù)位。STM32提供上電復(fù)位和掉電復(fù)位功能,給系統(tǒng)提供了更高的安全性、時(shí)間的精確性和使用的靈活性,使得程序運(yùn)行更加高效,內(nèi)置的復(fù)位功能可以滿足系統(tǒng)復(fù)位要求。
2.3實(shí)時(shí)時(shí)鐘
STM32F103RBT6中內(nèi)置RTC實(shí)時(shí)時(shí)鐘,實(shí)時(shí)時(shí)鐘是一個(gè)獨(dú)立的定時(shí)器。RTC模塊擁有一組連續(xù)計(jì)數(shù)的計(jì)數(shù)器,在相應(yīng)軟件配置下,可提供時(shí)鐘日歷的功能。修改計(jì)數(shù)器的值可以重新設(shè)置系統(tǒng)當(dāng)前的時(shí)間和日期。RTC模塊和時(shí)鐘配置系統(tǒng)(RCC-BDCR寄存器)處于后備區(qū)域,即在系統(tǒng)復(fù)位或從待機(jī)模式喚醒后,RTC的設(shè)置和時(shí)間維持不變。系統(tǒng)復(fù)位后,對(duì)后備寄存器和RTC的訪問被禁止,這是為了防止對(duì)后備區(qū)域(BKP)的意外寫操作。
當(dāng)主電源VDD掉電后,通過VBAT腳為實(shí)時(shí)時(shí)鐘(RTC)和備份寄存器提供電源,使用電池或其他電源連接到VBAT腳上,當(dāng)VDD斷電時(shí),可以保存?zhèn)浞菁拇嫫鞯膬?nèi)容和維持RTC的功能。VBAT腳為RTC、LSE振蕩器和PCI3至PCI5端13供電,可以保證當(dāng)主電源被切斷時(shí)RTC能繼續(xù)工作。切換到VBAT供電的開關(guān),由復(fù)位模塊中的掉電復(fù)位功能。
2.4電源模塊
電源模塊為整個(gè)系統(tǒng)提供電源,STM32單片機(jī)要求2.0-3.6V的操作電壓,RTC部分需要電池提供后備電源,在這里VBAT采用CRl220紐扣電池和VCC3.3V混合供電的方式,在有外部電源(VCC3.3V)時(shí),CRl220不給VBAT供電。而在外部電源斷開的時(shí)候,則有CRl220給VBAT供電。這樣VBAT總是有電的,以保證RTC的走時(shí)以及后備寄存器的內(nèi)容不丟失。單片機(jī)供電方面,采用5.OV電源通過AMS公司的AMSlll7電壓轉(zhuǎn)換芯片為單片機(jī)提供3 3V的工作電壓。
2與通信接口
目前電動(dòng)汽車能量管理系統(tǒng)主要應(yīng)用的數(shù)據(jù)接口為CAN接口。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的31939協(xié)議,同時(shí)主控芯片STM32內(nèi)置CAN控制器,只要外接CAN收發(fā)器就可以實(shí)現(xiàn)CAN通信。為了使系統(tǒng)具有盡可能的廣泛性,數(shù)據(jù)記錄裝置設(shè)計(jì)了CAN通訊接口適應(yīng)系統(tǒng)的需要。
2.6 SD卡模塊SD卡允許在兩種模式下工作,即SD模式和SPI模式。引腳定義如表1所示:
本裝置采用SPI模式,與STM32的SPll口進(jìn)行連接通信。
SD卡的SPI通信接口使其可以通過SPI通道進(jìn)行數(shù)據(jù)讀寫。從應(yīng)用的角度來看,采用SPI接口的好處在于,sTM32內(nèi)部自帶SPI控制器,不僅給開發(fā)上帶來方便,同時(shí)也降低了開發(fā)成本。
SPI接口的選用是在上電初始時(shí)向其寫入第一個(gè)命令時(shí)進(jìn)行的。
3軟件設(shè)計(jì)
軟件調(diào)試采用KEIL公司RealView MDK4 12,它包括了ULVision4集成開發(fā)環(huán)境與ReilView編譯器,自動(dòng)配置啟動(dòng)代碼。集成Flash燒寫模塊,強(qiáng)大的Simulation設(shè)備模擬,性能分析等功能。系統(tǒng)軟件部分主要包括數(shù)據(jù)接收和數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)接收部分用于與能量管理系統(tǒng)的通信,以CAN中斷接收的方式實(shí)現(xiàn)通信。在數(shù)據(jù)處理和存儲(chǔ)部分程序中,數(shù)據(jù)處理是對(duì)數(shù)據(jù)進(jìn)行處理轉(zhuǎn)換為常用的單位和格式,數(shù)據(jù)存儲(chǔ)部分負(fù)責(zé)將數(shù)據(jù)按一定結(jié)構(gòu)打包存儲(chǔ)。系統(tǒng)啟動(dòng)之時(shí),SD卡的初始化是非常重要的,只有進(jìn)行了正確的初始化,才能進(jìn)行后面的各項(xiàng)操作。在初始化過程中,SPI的時(shí)鐘不能太快,否則會(huì)造初始化失敗。在初始化成功后,應(yīng)盡量提高SPI的速率,在剛開始要先發(fā)送至少74個(gè)時(shí)鐘信號(hào)。
中斷接收流程圖如圖3所示。
數(shù)據(jù)存儲(chǔ)流程圖如圖4所示。
4結(jié)束語(yǔ)
本設(shè)計(jì)提出了一種基于STM32的數(shù)據(jù)存儲(chǔ)裝置的設(shè)計(jì)方案,成功實(shí)現(xiàn)了電動(dòng)汽車電池相關(guān)數(shù)據(jù)的存儲(chǔ),使用CAN通信保證了裝置應(yīng)用的廣泛性,用SD卡作為存儲(chǔ)介質(zhì),滿足了數(shù)據(jù)存儲(chǔ)容量以及速率上的要求,但同時(shí)仍有可以繼續(xù)改進(jìn)的地方,比如可以考慮增加_個(gè)USB口,使裝置可以直接接到電腦上查看,存儲(chǔ)和讀取都將更方便,但由于STM32的USB與CAN共用部分SRAM,需要將USB與CAN的運(yùn)行時(shí)間錯(cuò)開。