基于STM32的BMP圖片解碼系統
摘要:設計了一種基于STM32處理器的便攜式BMP圖片解碼系統。在設計過(guò)程中采用了從SD卡中讀取編碼的同時(shí)同步解碼的方法,有效地減少了系統內存的消耗。完成了基于ARM最新Cortex-M3內核的處理器STM32的BMP解碼系統的硬件電路設計和軟件程序設計,實(shí)現了一個(gè)能在內存有限的片上系統中進(jìn)行BMP圖片解碼的系統。
關(guān)鍵詞:BMP圖片;ARM微控制器;STM32;SD卡
在現代便攜式設備的應用過(guò)程中,常常需要在系統中顯示一些圖片,而在各種圖片格式中,BMP又是最具代表性的一種圖片格式。
BMP是一種與硬件設備無(wú)關(guān)的圖像文件格式,使用非常廣泛。它采用位映射存儲格式,除了圖像深度可選以外,BMP文件的圖像深度可選1、4、8及24 bit。BMP文件存儲數據時(shí),圖像的掃描方式是按從左到右、從下到上的順序。
典型的BMP圖像文件由3部分組成:位圖文件頭數據結構,它包含BMP圖像文件的類(lèi)型、顯示內容等信息;位圖信息數據結構,它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。
ARM公司作為全球32位低功耗處理器設計領(lǐng)域的領(lǐng)導者,曾經(jīng)設計過(guò)很多高性能低功耗的處理器,廣泛應用于各種便攜式手持系統中,意法半導體公司的STM32處理器采用ARM公司最新的V7體系架構的內核Cortex-M3,它的速度比ARM7快三分之一,功耗低四分之三,同時(shí)集成了分支預測,單周期乘法,硬件除法等功能,大大提高了處理器的數據處理能力,同時(shí)采用最新的Thumb-2指令集,有效地降低了代碼的密度,提高了程序的執行救率,通過(guò)對功耗和性能的分析,本文中采用的處理器為STM32F103RBT6,它可以實(shí)現最新的在應用中編程,使得系統的軟件更新更加容易實(shí)現,達到了性能和功耗的平衡,可以應用于很多領(lǐng)域,如工業(yè)控制,溫度測量等。
1 系統的工作原理
本系統以STM32F103RBT6為核心,采用晶彩光電的AM240320TFT液晶模塊作為顯示器,完成對解碼后圖片的顯示,需要顯示的圖片存儲在SD卡中,處理器通過(guò)SPI方式讀取SD卡里面的圖片信息,由于STM32內部RAM很小,不能作為整幅圖片的緩沖區,所以本系統的設計過(guò)程中采用了用時(shí)間換空間的方式,即采用了邊解碼邊顯示的方法,省去了外部數據RAM,隨之而來(lái)的就是顯示的速度比直接調到內存中要慢一些。
1.1 STM32F系列ARM微控制器簡(jiǎn)介
STM32F103RBT6使用高性能的ARM Cortex-M3 32位的RISC內核,工作頻率為72 MHz,內置高速存儲器(高達128 K字節的閃存和20 K字節的SRAM),豐富的增強I/O端口和連接到兩條APB總線(xiàn)的外設。所有型號的器件都包含2個(gè)12位的ADC、3個(gè)通用16位定時(shí)器和一個(gè)PWM定時(shí)器,還包含標準和先進(jìn)的通信接口:多達2個(gè)I2C和SPI、3個(gè)USART、一個(gè)USB和一個(gè)CAN。供電電壓2.0~3.6 V,一系列的省電模式保證低功耗應用的要求。
1.2 TFT液量顯示模塊簡(jiǎn)介
TFT液晶顯示屏是薄膜晶體管型液晶顯示屏。TFT液晶為每個(gè)像素都設有一個(gè)半導體開(kāi)關(guān),每個(gè)像素都可以通過(guò)點(diǎn)脈沖直接控制,因而每個(gè)節點(diǎn)都相對獨立,并可以連續控制,不僅提高了顯示屏的反應速度,同時(shí)可以精確控制顯示色階,所以,TFT液晶的笆彩更真。本文中采用的TFT液晶屏分辨率位320x240,采用的控制芯片為ILI9320,自帶總大小為172 820(240x320x1818)的顯存,模塊的16位數據線(xiàn)與顯寸的對應關(guān)系為565方式,它支持多種控制輸入信號。本文中采用的是8080接口,通過(guò)IO模擬8080總線(xiàn)協(xié)議。
1.3 SD卡的特點(diǎn)
SD卡(Secure Digital Memory Card)中文翻譯為安全數碼卡,是一種基于半導體快閃記憶器的新一代記憶設備,它被廣泛應用于便攜式裝置,例如數碼相機、個(gè)人數碼助理(PDA)和多媒體播放器等。SD卡一般支持2種操作模式:SD卡模式和SPI模式,本系統的設計過(guò)程中采用SPI模式完成SD卡的讀寫(xiě)操作。
1.4 FAT文件系統簡(jiǎn)介
常用的文件系統有FAT12/16/32等,FAT12是最古老的文件系統,只能管理8 M左右的空間?,F在基本淘汰了。FAT16則可以管理2 G的空間(通過(guò)特殊處理也能管理2 G以上的空間),而FAT32則能管理到2 TB(2 048 GB)的空間。FAT32較FAT16的優(yōu)勢還在于FAT32采用了更小的簇,可以更有效的保存信息,而不會(huì )造成多的浪費。
本系統設計過(guò)程中采用了FAT32文件系統,它的主要組成部分如下:
MBR稱(chēng)為主引導記錄區,該區存儲了分區表等信息,位于SD卡的扇區0(物理扇區),在其分區信息里面記錄了DBR所在的位置,SD卡一般只會(huì )有一個(gè)分區,所以也就只要找到分區1的DBR所在位置就可以了。
DBR稱(chēng)為操作系統引導記錄區,如果沒(méi)有MBR,那么DBR就位于0扇區;如果有,則必須通過(guò)MBR區得到DBR所在的地址,然后讀出DBR信息。在DBR區,可以知道每個(gè)扇區所占用的字節數、每個(gè)簇的扇區數、FAT表的份數、每個(gè)FAT表的扇區敷、跟目錄簇號、FAT表1所在的扇區等一系列非常重要的信息。
FAT稱(chēng)為文件分配表(FAT表),一個(gè)卡上會(huì )存在2個(gè)FAT表,一個(gè)用作備份,一個(gè)使用。FAT表一般緊隨DBR,另一個(gè)FAT表則緊隨第一個(gè)FAT表,這樣只要知道了第一個(gè)FAT表的位置及大小,那么第二個(gè)FAT表的位置也就確定了。FAT表記錄了每個(gè)文件的位置和區域,是一種鏈式結構。
FDT稱(chēng)為文件根目錄表,這個(gè)區域固定為32個(gè)扇區,假設每個(gè)扇區為512個(gè)字節。那么根目錄下最多存放512個(gè)文件(假設都用短文件名存儲,每個(gè)短文件名占32個(gè)字節)。文件目錄表是另一個(gè)重要的部分,FAT文件系統中(僅以短文件名介紹),文件目錄項在目錄表下以32個(gè)字節的方式記錄。
2 系統硬件設計
2.1 供電部分電路設計
整個(gè)系統中的元件均為3.3 V器件。由于系統供電采用電池或者直流電源供電,通過(guò)三端穩壓芯片LM1117-3.3,為主控芯片STM32F103 RBT6供電,用二極管IN4007串接在電源正極,為系統提供電源反接保護。供電部分原理如圖1所示。
評論