當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于STM32的BMP圖片解碼系統(tǒng)

摘要:設計了一種基于STM32處理器的便攜式BMP圖片解碼系統(tǒng)。在設計過程中采用了從SD卡中讀取編碼的同時同步解碼的方法,有效地減少了系統(tǒng)內(nèi)存的消耗。完成了基于ARM最新Cortex-M3內(nèi)核的處理器STM32的BMP解碼系統(tǒng)的硬件電路設計和軟件程序設計,實現(xiàn)了一個能在內(nèi)存有限的片上系統(tǒng)中進行BMP圖片解碼的系統(tǒng)。
關鍵詞:BMP圖片;ARM微控制器;STM32;SD卡

    在現(xiàn)代便攜式設備的應用過程中,常常需要在系統(tǒng)中顯示一些圖片,而在各種圖片格式中,BMP又是最具代表性的一種圖片格式。
    BMP是一種與硬件設備無關的圖像文件格式,使用非常廣泛。它采用位映射存儲格式,除了圖像深度可選以外,BMP文件的圖像深度可選1、4、8及24 bit。BMP文件存儲數(shù)據(jù)時,圖像的掃描方式是按從左到右、從下到上的順序。
    典型的BMP圖像文件由3部分組成:位圖文件頭數(shù)據(jù)結(jié)構(gòu),它包含BMP圖像文件的類型、顯示內(nèi)容等信息;位圖信息數(shù)據(jù)結(jié)構(gòu),它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。
    ARM公司作為全球32位低功耗處理器設計領域的領導者,曾經(jīng)設計過很多高性能低功耗的處理器,廣泛應用于各種便攜式手持系統(tǒng)中,意法半導體公司的STM32處理器采用ARM公司最新的V7體系架構(gòu)的內(nèi)核Cortex-M3,它的速度比ARM7快三分之一,功耗低四分之三,同時集成了分支預測,單周期乘法,硬件除法等功能,大大提高了處理器的數(shù)據(jù)處理能力,同時采用最新的Thumb-2指令集,有效地降低了代碼的密度,提高了程序的執(zhí)行救率,通過對功耗和性能的分析,本文中采用的處理器為STM32F103RBT6,它可以實現(xiàn)最新的在應用中編程,使得系統(tǒng)的軟件更新更加容易實現(xiàn),達到了性能和功耗的平衡,可以應用于很多領域,如工業(yè)控制,溫度測量等。

1 系統(tǒng)的工作原理
    本系統(tǒng)以STM32F103RBT6為核心,采用晶彩光電的AM240320TFT液晶模塊作為顯示器,完成對解碼后圖片的顯示,需要顯示的圖片存儲在SD卡中,處理器通過SPI方式讀取SD卡里面的圖片信息,由于STM32內(nèi)部RAM很小,不能作為整幅圖片的緩沖區(qū),所以本系統(tǒng)的設計過程中采用了用時間換空間的方式,即采用了邊解碼邊顯示的方法,省去了外部數(shù)據(jù)RAM,隨之而來的就是顯示的速度比直接調(diào)到內(nèi)存中要慢一些。
1.1 STM32F系列ARM微控制器簡介
    STM32F103RBT6使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72 MHz,內(nèi)置高速存儲器(高達128 K字節(jié)的閃存和20 K字節(jié)的SRAM),豐富的增強I/O端口和連接到兩條APB總線的外設。所有型號的器件都包含2個12位的ADC、3個通用16位定時器和一個PWM定時器,還包含標準和先進的通信接口:多達2個I2C和SPI、3個USART、一個USB和一個CAN。供電電壓2.0~3.6 V,一系列的省電模式保證低功耗應用的要求。
1.2 TFT液量顯示模塊簡介
    TFT液晶顯示屏是薄膜晶體管型液晶顯示屏。TFT液晶為每個像素都設有一個半導體開關,每個像素都可以通過點脈沖直接控制,因而每個節(jié)點都相對獨立,并可以連續(xù)控制,不僅提高了顯示屏的反應速度,同時可以精確控制顯示色階,所以,TFT液晶的笆彩更真。本文中采用的TFT液晶屏分辨率位320x240,采用的控制芯片為ILI9320,自帶總大小為172 820(240x320x1818)的顯存,模塊的16位數(shù)據(jù)線與顯寸的對應關系為565方式,它支持多種控制輸入信號。本文中采用的是8080接口,通過IO模擬8080總線協(xié)議。
1.3 SD卡的特點
    SD卡(Secure Digital Memory Card)中文翻譯為安全數(shù)碼卡,是一種基于半導體快閃記憶器的新一代記憶設備,它被廣泛應用于便攜式裝置,例如數(shù)碼相機、個人數(shù)碼助理(PDA)和多媒體播放器等。SD卡一般支持2種操作模式:SD卡模式和SPI模式,本系統(tǒng)的設計過程中采用SPI模式完成SD卡的讀寫操作。
1.4 FAT文件系統(tǒng)簡介
    常用的文件系統(tǒng)有FAT12/16/32等,F(xiàn)AT12是最古老的文件系統(tǒng),只能管理8 M左右的空間?,F(xiàn)在基本淘汰了。FAT16則可以管理2 G的空間(通過特殊處理也能管理2 G以上的空間),而FAT32則能管理到2 TB(2 048 GB)的空間。FAT32較FAT16的優(yōu)勢還在于FAT32采用了更小的簇,可以更有效的保存信息,而不會造成多的浪費。
    本系統(tǒng)設計過程中采用了FAT32文件系統(tǒng),它的主要組成部分如下:
    MBR稱為主引導記錄區(qū),該區(qū)存儲了分區(qū)表等信息,位于SD卡的扇區(qū)0(物理扇區(qū)),在其分區(qū)信息里面記錄了DBR所在的位置,SD卡一般只會有一個分區(qū),所以也就只要找到分區(qū)1的DBR所在位置就可以了。
    DBR稱為操作系統(tǒng)引導記錄區(qū),如果沒有MBR,那么DBR就位于0扇區(qū);如果有,則必須通過MBR區(qū)得到DBR所在的地址,然后讀出DBR信息。在DBR區(qū),可以知道每個扇區(qū)所占用的字節(jié)數(shù)、每個簇的扇區(qū)數(shù)、FAT表的份數(shù)、每個FAT表的扇區(qū)敷、跟目錄簇號、FAT表1所在的扇區(qū)等一系列非常重要的信息。
    FAT稱為文件分配表(FAT表),一個卡上會存在2個FAT表,一個用作備份,一個使用。FAT表一般緊隨DBR,另一個FAT表則緊隨第一個FAT表,這樣只要知道了第一個FAT表的位置及大小,那么第二個FAT表的位置也就確定了。FAT表記錄了每個文件的位置和區(qū)域,是一種鏈式結(jié)構(gòu)。
    FDT稱為文件根目錄表,這個區(qū)域固定為32個扇區(qū),假設每個扇區(qū)為512個字節(jié)。那么根目錄下最多存放512個文件(假設都用短文件名存儲,每個短文件名占32個字節(jié))。文件目錄表是另一個重要的部分,F(xiàn)AT文件系統(tǒng)中(僅以短文件名介紹),文件目錄項在目錄表下以32個字節(jié)的方式記錄。

2 系統(tǒng)硬件設計
2.1 供電部分電路設計
    整個系統(tǒng)中的元件均為3.3 V器件。由于系統(tǒng)供電采用電池或者直流電源供電,通過三端穩(wěn)壓芯片LM1117-3.3,為主控芯片STM32F103 RBT6供電,用二極管IN4007串接在電源正極,為系統(tǒng)提供電源反接保護。供電部分原理如圖1所示。

[!--empirenews.page--]
2.2 液晶顯示部分電路設計
    液晶顯示部分主要由微控制器STM32F103RBT6驅(qū)動AM240320LSTNQW-00H完成人機界面狀態(tài)的顯示,通過發(fā)送命令字,完成液晶模塊的初始化,完成對內(nèi)容的顯示,顯示部分的硬件電路接口圖如圖2所示。


2.3 SD卡讀寫部分的硬件設計
    處理器主機可以選擇SD卡模式和SPI模式中任意一種模式同SD卡通信,SD卡模式允許4線的高速數(shù)據(jù)傳輸。SPI模式允許簡單的通過SPI接口來和SD卡通信,這種模式同SD卡模式相比就是喪失了速度。通過讀取SD卡中的文件,識別出各個目錄下的圖片數(shù)據(jù),然后對數(shù)據(jù)進行解碼。驅(qū)動液晶完成圖片的顯示,SD卡接口部分電路如圖3所示。

[!--empirenews.page--]

3 BMP圖片的解碼算法
3.1 BMP文件組成
    BMP文件由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)4部分組成。BMP文件頭數(shù)據(jù)結(jié)構(gòu)舍有BMP文件的類型、文件大小和位圖起始位置等信息,它占14個字節(jié)。BMP位圖信息頭數(shù)據(jù)用予說明位圖的尺寸等信息,它占40個字節(jié)。BMP顏色表用于說明位圖中的顏色,它有若干個表項,每一個表項定義一種顏色。位圖信息頭和顏色表組成位圖信息,位圖數(shù)據(jù)記錄了位圖的每一個像素值,記錄順序是在掃描行內(nèi)是從左到右,掃描行之間是從下到上,Windows規(guī)定一個掃描行所占的字節(jié)數(shù)必須是4的倍數(shù)(即以long為單位),不足的以0填充。
3.2 BMP圖片的讀取顯示算法
    首先根據(jù)讀取到的BMP圖片數(shù)據(jù)得到BMP的頭部信息,得到文件類型,大小和文件的起始位置,然后讀取BMP位圖信息頭,這里面記錄了圖片的格式的信息,如BMP圖片的寬度和高度,以及每個像素所占的位數(shù),下面舉例來說明BMP圖片的解碼過程。
    常用的BMP圖片格式有24位真彩圖,16位圖,和32位圖,解碼過程略有不同,下面分別介紹,首先是24位圖,當根據(jù)BMP的頭文件信息得到數(shù)據(jù)的起始地址之后,從起始地址開始讀數(shù)據(jù),假設每次讀入512字節(jié),由于AM240320TFT采用16位的565方式顯示,即就是說需要把每個像素所占的24位致?lián)?,也就?個字節(jié),轉(zhuǎn)換為16位的數(shù)據(jù),即2個字節(jié),這里以前3個字節(jié)為例來說明解碼算法:
   
    其中codor為需要提供給液晶顯示器每個像素點的顏色值,tmp_color為解碼過程中的臨時變量,數(shù)組temp存儲24位格式的像素值。同樣也可以解碼16位顏色圖和32位顏色圖,解碼16位顏色圖的算法比較簡單,只需要解出連續(xù)的兩個值然后組合成16位的565格式的顏色值送到液晶顯示,其解碼算法如下:
   
    在32位圖的解碼過程中需要注意一個問題,就是32位圖中實際上只使用了24位存儲像素值,也就是32位中的前3位,最后一位沒有存儲像素值信息,所以在解碼的過程中只需要解碼前3位,將第4位跳過,具體解碼算法如下:
   
3.3 STM32解碼并顯示BMP圖片程序
    在BMP圖片解碼過程中,有兩種方式:一種是將BMP圖片數(shù)據(jù)從外部SD卡中調(diào)入內(nèi)存中,從內(nèi)存中解碼,解碼后將圖片數(shù)據(jù)顯示在TFT屏上;第二種方式是一邊從SD卡中讀數(shù)據(jù)一邊解碼顯示,兩種方式各有優(yōu)缺點。第一種方式的優(yōu)點是由于整個解碼過程全部在內(nèi)存中進行,所以解碼的速度比較快,顯示圖片的速度快。由于一般處理器內(nèi)部RAM都是有限的,而這種方式對RAM的消耗特別大,所以采用這種方式需要外擴SRAM。第二種方式是從SD卡總邊讀取邊解碼,例如一般FAT32文件簇的大小都是512字節(jié),所以可以以簇為單位來讀取圖片信息,然后顯示接著讀取下一簇,這種方式的缺點是,由于SD卡的SPI方式速度較慢,解碼一張320x240的圖片大概需要1s,但是這種方式對系統(tǒng)的內(nèi)存消耗比較低,比較適合于沒有外部RAM的系統(tǒng)。本系統(tǒng)中,采用第二種方式進行解碼顯示,STM32采用外部8 MHz的晶振作為輸入時鐘,內(nèi)部鎖相環(huán)將時鐘倍頻到72 MHz作為系統(tǒng)時鐘,采用GPIO口模擬8080時序并行驅(qū)動2.8寸TFT屏,屏幕分辨率為320x240,處理器首先完成各種外設初始化,接著初始化FAT文件系統(tǒng),然后從SD卡中讀取一簇的數(shù)據(jù),解碼顯示,接著讀取下一簇。整個程序的流程圖如圖4所示。



4 結(jié)論
    本文采用了基于ARM的Cortex-M3內(nèi)核STM32,它基于最新ARMv7架構(gòu),設計了一個BMP圖片解碼系統(tǒng),完成了在2.8寸TFT屏上解碼并顯示BMP圖片,通過讀取SD卡中的圖片數(shù)據(jù),邊讀取邊解碼顯示,實現(xiàn)了在內(nèi)存有限的處理器中的BMP圖片的解碼算法。

本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉