0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32的便攜式BMP圖片解碼系統(tǒng)設(shè)計(jì)方案

電子設(shè)計(jì) ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師1 ? 2018-04-18 17:10 ? 次閱讀

在現(xiàn)代便攜式設(shè)備的應(yīng)用過(guò)程中,常常需要在系統(tǒng)中顯示一些圖片,而在各種圖片格式中,BMP又是最具代表性的一種圖片格式。

BMP是一種與硬件設(shè)備無(wú)關(guān)的圖像文件格式,使用非常廣泛。它采用位映射存儲(chǔ)格式,除了圖像深度可選以外,BMP文件的圖像深度可選1、4、8及24 bit.BMP文件存儲(chǔ)數(shù)據(jù)時(shí),圖像的掃描方式是按從左到右、從下到上的順序。

典型的BMP圖像文件由3部分組成:位圖文件頭數(shù)據(jù)結(jié)構(gòu),它包含BMP圖像文件的類型、顯示內(nèi)容等信息;位圖信息數(shù)據(jù)結(jié)構(gòu),它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。

ARM公司作為全球32位低功耗處理器設(shè)計(jì)領(lǐng)域的領(lǐng)導(dǎo)者,曾經(jīng)設(shè)計(jì)過(guò)很多高性能低功耗的處理器,廣泛應(yīng)用于各種便攜式手持系統(tǒng)中,意法半導(dǎo)體公司的STM32處理器采用ARM公司最新的V7體系架構(gòu)的內(nèi)核Cortex-M3,它的速度比ARM7快三分之一,功耗低四分之三,同時(shí)集成了分支預(yù)測(cè),單周期乘法,硬件除法等功能,大大提高了處理器的數(shù)據(jù)處理能力,同時(shí)采用最新的Thumb-2指令集,有效地降低了代碼的密度,提高了程序的執(zhí)行救率,通過(guò)對(duì)功耗和性能的分析,本文中采用的處理器為STM32F103RBT6,它可以實(shí)現(xiàn)最新的在應(yīng)用中編程,使得系統(tǒng)的軟件更新更加容易實(shí)現(xiàn),達(dá)到了性能和功耗的平衡,可以應(yīng)用于很多領(lǐng)域,如工業(yè)控制,溫度測(cè)量等。

1 系統(tǒng)的工作原理

本系統(tǒng)以STM32F103RBT6為核心,采用晶彩光電的AM240320TFT液晶模塊作為顯示器,完成對(duì)解碼后圖片的顯示,需要顯示的圖片存儲(chǔ)在SD卡中,處理器通過(guò)SPI方式讀取SD卡里面的圖片信息,由于STM32內(nèi)部RAM很小,不能作為整幅圖片的緩沖區(qū),所以本系統(tǒng)的設(shè)計(jì)過(guò)程中采用了用時(shí)間換空間的方式,即采用了邊解碼邊顯示的方法,省去了外部數(shù)據(jù)RAM,隨之而來(lái)的就是顯示的速度比直接調(diào)到內(nèi)存中要慢一些。

1.1 STM32F系列ARM微控制器簡(jiǎn)介

STM32F103RBT6使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72 MHz,內(nèi)置高速存儲(chǔ)器(高達(dá)128 K字節(jié)的閃存和20 K字節(jié)的SRAM),豐富的增強(qiáng)I/O端口和連接到兩條APB總線的外設(shè)。所有型號(hào)的器件都包含2個(gè)12位的ADC、3個(gè)通用16位定時(shí)器和一個(gè)PWM定時(shí)器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個(gè)I2C和SPI、3個(gè)USART、一個(gè)USB和一個(gè)CAN.供電電壓2.0~3.6 V,一系列的省電模式保證低功耗應(yīng)用的要求。

1.2 TFT液量顯示模塊簡(jiǎn)介

TFT液晶顯示屏是薄膜晶體管型液晶顯示屏。TFT液晶為每個(gè)像素都設(shè)有一個(gè)半導(dǎo)體開關(guān),每個(gè)像素都可以通過(guò)點(diǎn)脈沖直接控制,因而每個(gè)節(jié)點(diǎn)都相對(duì)獨(dú)立,并可以連續(xù)控制,不僅提高了顯示屏的反應(yīng)速度,同時(shí)可以精確控制顯示色階,所以,TFT液晶的笆彩更真。本文中采用的TFT液晶屏分辨率位320x240,采用的控制芯片為ILI9320,自帶總大小為172 820(240x320x1818)的顯存,模塊的16位數(shù)據(jù)線與顯寸的對(duì)應(yīng)關(guān)系為565方式,它支持多種控制輸入信號(hào)。本文中采用的是8080接口,通過(guò)IO模擬8080總線協(xié)議。

1.3 SD卡的特點(diǎn)

SD卡(Secure Digital Memory Card)中文翻譯為安全數(shù)碼卡,是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛應(yīng)用于便攜式裝置,例如數(shù)碼相機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體播放器等。SD卡一般支持2種操作模式:SD卡模式和SPI模式,本系統(tǒng)的設(shè)計(jì)過(guò)程中采用SPI模式完成SD卡的讀寫操作。

1.4 FAT文件系統(tǒng)簡(jiǎn)介

常用的文件系統(tǒng)有FAT12/16/32等,F(xiàn)AT12是最古老的文件系統(tǒng),只能管理8 M左右的空間?,F(xiàn)在基本淘汰了。FAT16則可以管理2 G的空間(通過(guò)特殊處理也能管理2 G以上的空間),而FAT32則能管理到2 TB(2 048 GB)的空間。FAT32較FAT16的優(yōu)勢(shì)還在于FAT32采用了更小的簇,可以更有效的保存信息,而不會(huì)造成多的浪費(fèi)。

本系統(tǒng)設(shè)計(jì)過(guò)程中采用了FAT32文件系統(tǒng),它的主要組成部分如下:

MBR稱為主引導(dǎo)記錄區(qū),該區(qū)存儲(chǔ)了分區(qū)表等信息,位于SD卡的扇區(qū)0(物理扇區(qū)),在其分區(qū)信息里面記錄了DBR所在的位置,SD卡一般只會(huì)有一個(gè)分區(qū),所以也就只要找到分區(qū)1的DBR所在位置就可以了。

DBR稱為操作系統(tǒng)引導(dǎo)記錄區(qū),如果沒(méi)有MBR,那么DBR就位于0扇區(qū);如果有,則必須通過(guò)MBR區(qū)得到DBR所在的地址,然后讀出DBR信息。在DBR區(qū),可以知道每個(gè)扇區(qū)所占用的字節(jié)數(shù)、每個(gè)簇的扇區(qū)數(shù)、FAT表的份數(shù)、每個(gè)FAT表的扇區(qū)敷、跟目錄簇號(hào)、FAT表1所在的扇區(qū)等一系列非常重要的信息。

FAT稱為文件分配表(FAT表),一個(gè)卡上會(huì)存在2個(gè)FAT表,一個(gè)用作備份,一個(gè)使用。FAT表一般緊隨DBR,另一個(gè)FAT表則緊隨第一個(gè)FAT表,這樣只要知道了第一個(gè)FAT表的位置及大小,那么第二個(gè)FAT表的位置也就確定了。FAT表記錄了每個(gè)文件的位置和區(qū)域,是一種鏈?zhǔn)浇Y(jié)構(gòu)。

FDT稱為文件根目錄表,這個(gè)區(qū)域固定為32個(gè)扇區(qū),假設(shè)每個(gè)扇區(qū)為512個(gè)字節(jié)。那么根目錄下最多存放512個(gè)文件(假設(shè)都用短文件名存儲(chǔ),每個(gè)短文件名占32個(gè)字節(jié))。文件目錄表是另一個(gè)重要的部分,F(xiàn)AT文件系統(tǒng)中(僅以短文件名介紹),文件目錄項(xiàng)在目錄表下以32個(gè)字節(jié)的方式記錄。

2 系統(tǒng)硬件設(shè)計(jì)

2.1 供電部分電路設(shè)計(jì)

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

圖1 系統(tǒng)供電部分原理圖

2.2 液晶顯示部分電路設(shè)計(jì)

液晶顯示部分主要由微控制器STM32F103RBT6驅(qū)動(dòng)AM240320LSTNQW-00H完成人機(jī)界面狀態(tài)的顯示,通過(guò)發(fā)送命令字,完成液晶模塊的初始化,完成對(duì)內(nèi)容的顯示,顯示部分的硬件電路接口圖如圖2所示。

圖2 系統(tǒng)液晶接口原理圖

2.3 SD卡讀寫部分的硬件設(shè)計(jì)

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

圖3 SD卡接口原理圖

3 BMP圖片的解碼算法

3.1 BMP文件組成

BMP文件由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)4部分組成。BMP文件頭數(shù)據(jù)結(jié)構(gòu)舍有BMP文件的類型、文件大小和位圖起始位置等信息,它占14個(gè)字節(jié)。BMP位圖信息頭數(shù)據(jù)用予說(shuō)明位圖的尺寸等信息,它占40個(gè)字節(jié)。BMP顏色表用于說(shuō)明位圖中的顏色,它有若干個(gè)表項(xiàng),每一個(gè)表項(xiàng)定義一種顏色。位圖信息頭和顏色表組成位圖信息,位圖數(shù)據(jù)記錄了位圖的每一個(gè)像素值,記錄順序是在掃描行內(nèi)是從左到右,掃描行之間是從下到上,Windows規(guī)定一個(gè)掃描行所占的字節(jié)數(shù)必須是4的倍數(shù)(即以long為單位),不足的以0填充。

3.2 BMP圖片的讀取顯示算法

首先根據(jù)讀取到的BMP圖片數(shù)據(jù)得到BMP的頭部信息,得到文件類型,大小和文件的起始位置,然后讀取BMP位圖信息頭,這里面記錄了圖片的格式的信息,如BMP圖片的寬度和高度,以及每個(gè)像素所占的位數(shù),下面舉例來(lái)說(shuō)明BMP圖片的解碼過(guò)程。

常用的BMP圖片格式有24位真彩圖,16位圖,和32位圖,解碼過(guò)程略有不同,下面分別介紹,首先是24位圖,當(dāng)根據(jù)BMP的頭文件信息得到數(shù)據(jù)的起始地址之后,從起始地址開始讀數(shù)據(jù),假設(shè)每次讀入512字節(jié),由于AM240320TFT采用16位的565方式顯示,即就是說(shuō)需要把每個(gè)像素所占的24位致?lián)?,也就?個(gè)字節(jié),轉(zhuǎn)換為16位的數(shù)據(jù),即2個(gè)字節(jié),這里以前3個(gè)字節(jié)為例來(lái)說(shuō)明解碼算法:

其中codor為需要提供給液晶顯示器每個(gè)像素點(diǎn)的顏色值,tmp_color為解碼過(guò)程中的臨時(shí)變量,數(shù)組temp存儲(chǔ)24位格式的像素值。同樣也可以解碼16位顏色圖和32位顏色圖,解碼16位顏色圖的算法比較簡(jiǎn)單,只需要解出連續(xù)的兩個(gè)值然后組合成16位的565格式的顏色值送到液晶顯示,其解碼算法如下:

在32位圖的解碼過(guò)程中需要注意一個(gè)問(wèn)題,就是32位圖中實(shí)際上只使用了24位存儲(chǔ)像素值,也就是32位中的前3位,最后一位沒(méi)有存儲(chǔ)像素值信息,所以在解碼的過(guò)程中只需要解碼前3位,將第4位跳過(guò),具體解碼算法如下:

3.3 STM32解碼并顯示BMP圖片程序

在BMP圖片解碼過(guò)程中,有兩種方式:一種是將BMP圖片數(shù)據(jù)從外部SD卡中調(diào)入內(nèi)存中,從內(nèi)存中解碼,解碼后將圖片數(shù)據(jù)顯示在TFT屏上;第二種方式是一邊從SD卡中讀數(shù)據(jù)一邊解碼顯示,兩種方式各有優(yōu)缺點(diǎn)。第一種方式的優(yōu)點(diǎn)是由于整個(gè)解碼過(guò)程全部在內(nèi)存中進(jìn)行,所以解碼的速度比較快,顯示圖片的速度快。由于一般處理器內(nèi)部RAM都是有限的,而這種方式對(duì)RAM的消耗特別大,所以采用這種方式需要外擴(kuò)SRAM.第二種方式是從SD卡總邊讀取邊解碼,例如一般FAT32文件簇的大小都是512字節(jié),所以可以以簇為單位來(lái)讀取圖片信息,然后顯示接著讀取下一簇,這種方式的缺點(diǎn)是,由于SD卡的SPI方式速度較慢,解碼一張320x240的圖片大概需要1s,但是這種方式對(duì)系統(tǒng)的內(nèi)存消耗比較低,比較適合于沒(méi)有外部RAM的系統(tǒng)。本系統(tǒng)中,采用第二種方式進(jìn)行解碼顯示,STM32采用外部8 MHz的晶振作為輸入時(shí)鐘,內(nèi)部鎖相環(huán)將時(shí)鐘倍頻到72 MHz作為系統(tǒng)時(shí)鐘,采用GPIO口模擬8080時(shí)序并行驅(qū)動(dòng)2.8寸TFT屏,屏幕分辨率為320x240,處理器首先完成各種外設(shè)初始化,接著初始化FAT文件系統(tǒng),然后從SD卡中讀取一簇的數(shù)據(jù),解碼顯示,接著讀取下一簇。整個(gè)程序的流程圖如圖4所示。

圖4 BMP解碼流程圖

4 結(jié)論

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8967

    瀏覽量

    365059
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352511
  • 便攜設(shè)備
    +關(guān)注

    關(guān)注

    1

    文章

    505

    瀏覽量

    41183
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    便攜式無(wú)線解碼耳放(DAC/AMP)

    隨著音樂(lè)和音頻的數(shù)字化普及,越來(lái)越多的用戶希望在各種場(chǎng)合下享受高質(zhì)量的音頻體驗(yàn)。而便攜式無(wú)線解碼耳放(DAC/AMP)就是為了滿足這一需求而設(shè)計(jì)的。傳統(tǒng)的有線耳機(jī)和耳放雖然能夠提供高質(zhì)量的音頻
    的頭像 發(fā)表于 08-09 17:46 ?879次閱讀
    <b class='flag-5'>便攜式</b>無(wú)線<b class='flag-5'>解碼</b>耳放(DAC/AMP)

    激光除銹機(jī)便攜式價(jià)格

    ,成本更低,工作環(huán)境更安全。一、激光除銹機(jī)便攜式的原理我們的激光除銹機(jī)便攜式使用高頻短脈沖激光作為工作介質(zhì)的清潔解決方案。特定波長(zhǎng)的高能光束被銹蝕層、油漆層、污染層
    的頭像 發(fā)表于 06-07 16:12 ?388次閱讀
    激光除銹機(jī)<b class='flag-5'>便攜式</b>價(jià)格

    便攜式手提設(shè)備設(shè)計(jì)方案:475-便攜式手提RapidIO協(xié)議光纖發(fā)包測(cè)試儀

    便攜式手提RapidIO 協(xié)議光纖發(fā)包儀,以RapidIO收發(fā)卡和X86主板為基礎(chǔ),構(gòu)建便攜式的手提設(shè)備。
    的頭像 發(fā)表于 05-20 15:33 ?276次閱讀
    <b class='flag-5'>便攜式</b>手提設(shè)備<b class='flag-5'>設(shè)計(jì)方案</b>:475-<b class='flag-5'>便攜式</b>手提RapidIO協(xié)議光纖發(fā)包測(cè)試儀

    便攜式手提測(cè)試設(shè)備設(shè)計(jì)方案471—便攜式手提Camera Link 模擬源測(cè)試設(shè)備

    便攜式手提CameraLink模擬源測(cè)試設(shè)備,以PCIe的Camera link 播出卡和X86主板為基礎(chǔ),構(gòu)建便攜式的手提設(shè)備。 便攜式手提Camera Link 模擬源測(cè)試設(shè)備
    的頭像 發(fā)表于 05-10 11:37 ?399次閱讀
    <b class='flag-5'>便攜式</b>手提測(cè)試設(shè)備<b class='flag-5'>設(shè)計(jì)方案</b>471—<b class='flag-5'>便攜式</b>手提Camera Link 模擬源測(cè)試設(shè)備

    請(qǐng)問(wèn)解碼bmp圖片時(shí)是否可以使用dma2d功能 ?

    請(qǐng)教下,解碼bmp圖片時(shí)是否可以使用dma2d功能 ? 具體描述如下: 沒(méi)有使用 emWin 就是先讀取整副 bmp 的數(shù)據(jù),之后解碼
    發(fā)表于 04-30 06:39

    使用emwin解碼bmp圖片,為什么放大顯示不行?

    請(qǐng)教下,使用 emwin 解碼 bmp 圖片,圖片 1:1 及縮小顯示都沒(méi)有問(wèn)題,唯獨(dú)放大顯示不行 ? 使用emwin 版本如下: emwin v5.40 keil argb -ot
    發(fā)表于 04-29 06:00

    便攜式電源系統(tǒng)的電池認(rèn)證

    電子發(fā)燒友網(wǎng)站提供《便攜式電源系統(tǒng)的電池認(rèn)證.pdf》資料免費(fèi)下載
    發(fā)表于 11-17 09:42 ?0次下載
    <b class='flag-5'>便攜式</b>電源<b class='flag-5'>系統(tǒng)</b>的電池認(rèn)證

    基于STM32便攜式生命體征監(jiān)護(hù)儀設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于STM32便攜式生命體征監(jiān)護(hù)儀設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-13 10:32 ?5次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>便攜式</b>生命體征監(jiān)護(hù)儀設(shè)計(jì)

    便攜式醫(yī)療監(jiān)控系統(tǒng)面臨的設(shè)計(jì)挑戰(zhàn)

    電子發(fā)燒友網(wǎng)站提供《便攜式醫(yī)療監(jiān)控系統(tǒng)面臨的設(shè)計(jì)挑戰(zhàn).doc》資料免費(fèi)下載
    發(fā)表于 11-10 09:48 ?0次下載
    <b class='flag-5'>便攜式</b>醫(yī)療監(jiān)控<b class='flag-5'>系統(tǒng)</b>面臨的設(shè)計(jì)挑戰(zhàn)

    基于RJM8L151S的便攜式消毒機(jī)解決方案

    基于RJM8L151S的便攜式消毒機(jī)解決方案
    的頭像 發(fā)表于 11-06 16:44 ?454次閱讀
    基于RJM8L151S的<b class='flag-5'>便攜式</b>消毒機(jī)解決<b class='flag-5'>方案</b>

    便攜式ECG方案介紹

    近年來(lái),中國(guó)心血管病患病率及死亡率仍處于上升階段,而實(shí)時(shí)的便攜式心電監(jiān)測(cè)能夠及時(shí)地發(fā)現(xiàn)異常心電信號(hào),提醒人們提前就醫(yī),避免危險(xiǎn)病情的發(fā)生,因此近年來(lái)心電監(jiān)測(cè)市場(chǎng)十分火熱。TI在心電監(jiān)測(cè)領(lǐng)域耕耘多年
    發(fā)表于 10-27 11:35

    基于STM32便攜式體檢裝置設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于STM32便攜式體檢裝置設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 10:04 ?5次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>便攜式</b>體檢裝置設(shè)計(jì)

    基于嵌入便攜式B超軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于嵌入便攜式B超軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-12 10:24 ?0次下載
    基于嵌入<b class='flag-5'>式</b>的<b class='flag-5'>便攜式</b>B超軟件<b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)與實(shí)現(xiàn)

    便攜式心電監(jiān)護(hù)儀采集系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《便攜式心電監(jiān)護(hù)儀采集系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-11 10:22 ?2次下載
    <b class='flag-5'>便攜式</b>心電監(jiān)護(hù)儀采集<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    一種超低功耗便攜式高斯計(jì)的設(shè)計(jì)方案

    引言高斯計(jì)是用于測(cè)量磁場(chǎng)的儀器,在采礦、冶金、磁性材料生產(chǎn)等領(lǐng)域有著廣泛的應(yīng)用。目前國(guó)內(nèi)的便攜式高斯計(jì)產(chǎn)品存在一個(gè)重大缺點(diǎn)——電池壽命短,通常為20一50 h.正常使用情況下,幾天時(shí)間就需要更換電池
    發(fā)表于 10-10 06:52