• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種簡(jiǎn)易數(shù)碼相框的設(shè)計(jì)

      2011-01-22 03:35:48丁鑫蕾劉一清
      關(guān)鍵詞:相框扇區(qū)數(shù)碼

      丁鑫蕾,劉一清,余 奔

      (華東師范大學(xué),上海 200241)

      一種簡(jiǎn)易數(shù)碼相框的設(shè)計(jì)

      丁鑫蕾,劉一清,余 奔

      (華東師范大學(xué),上海 200241)

      為應(yīng)對(duì)數(shù)碼相框成本較高的問(wèn)題,介紹了一種簡(jiǎn)易數(shù)碼相框的設(shè)計(jì),實(shí)現(xiàn)從SD卡讀取bmp圖片文件并在TFT液晶屏上顯示的功能。本設(shè)計(jì)成本低,具有很高的實(shí)用價(jià)值。

      數(shù)碼相框;SD 卡;STM32;μCOS-II;FATFS

      本文介紹一種簡(jiǎn)單、低成本的數(shù)碼相框的設(shè)計(jì),它可以幻燈片式地瀏覽SD卡中的bmp格式的照片。

      1 硬件電路

      該數(shù)碼相框的硬件平臺(tái)以32 bit STM32系列的處理器STM32F103ZET6為核心,外圍電路主要包括一個(gè)2.8英寸的TFT液晶模塊、1個(gè)SD卡插座、5個(gè)LED燈和2個(gè)按鍵。硬件系統(tǒng)如圖1所示。

      系統(tǒng)關(guān)鍵器件的電路原理圖如圖2所示。STM32系列MCU基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用而設(shè)計(jì)的ARM Cortex-M3內(nèi)核,包括了STM32F103增強(qiáng)型系列和STM32F101基本型系列。本設(shè)計(jì)使用的是增強(qiáng)型系列的高端型號(hào)STM32F103ZET6,其最高主頻可以達(dá)到72 MHz,內(nèi)置512 KB的閃存以及64 KB的SRAM。同時(shí)其外設(shè)資源豐富,包括并行LCD接口(FSMC)、12 通道DMA 控制器、定時(shí)器、ADC、DAC、SDIO、I2C、SPI、USB、UART 等[1]??梢哉f(shuō),它完全超越了同價(jià)位的8 bit或者16 bit單片機(jī)的性能,而又不像一般32 bit處理器那樣價(jià)格昂貴。

      本設(shè)計(jì)使用了一個(gè)帶有通用并行接口(FSMC)的2.8英寸TFT液晶模塊,這種液晶模塊很常見,而且價(jià)格便宜,另外還有3.2英寸甚至更大的尺寸可供選擇。STM32F103ZET6通過(guò)一個(gè)SPI接口與SD卡座連接,以便于控制和簡(jiǎn)化程序,而且對(duì)于靜態(tài)圖片,SPI的傳輸速度已足夠。另外,還有用于調(diào)試的2個(gè)按鍵和5個(gè)LED。

      2 軟件設(shè)計(jì)

      2.1 移植FATFS文件系統(tǒng)

      FATFS文件系統(tǒng)是一種完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專為小型嵌入式系統(tǒng)而設(shè)計(jì),用標(biāo)準(zhǔn)C語(yǔ)言編寫,很方便移植[2]。本設(shè)計(jì)移植的FATFS版本為R0.07e,它支持 FAT12、FAT16和 FAT32,由于不涉及多個(gè)存儲(chǔ)介質(zhì),因此,本設(shè)計(jì)僅移植了其簡(jiǎn)化版本Tiny-FATFS,其占用內(nèi)存更少,只需要大約1 KB RAM。FATFS具有三層結(jié)構(gòu),如圖3所示。

      應(yīng)用層為用戶提供了一系列接口函數(shù),只需要簡(jiǎn)單的調(diào)用即可,而無(wú)需理會(huì)復(fù)雜的FAT協(xié)議。移植過(guò)程中,需要使用者修改的是底層接口(包括存儲(chǔ)介質(zhì)讀寫接口和供給文件創(chuàng)建修改時(shí)間的實(shí)時(shí)時(shí)鐘)。

      Tiny-FATFS 包含 5 個(gè)文件,分別是 tff.c、tff.h、diskio.c、diskio.h和integer.h,移植之前首先要編寫初始化和讀寫SD卡的SPI接口代碼。代碼主要包括SD_Init()、SD_ReadSingleBlock()、SD_ReadMultiBlock()、SD_WriteSingle Block()、SD_WriteMultiBlock()函數(shù),而這些代碼將在diskio.c中被調(diào)用。移植FATFS文件過(guò)程:

      (1)準(zhǔn)備好SPI讀寫SD卡的代碼后就可以修改diskio.c了,實(shí)際上只需要編寫6個(gè)接口函數(shù):

      ①存儲(chǔ)媒介初始化函數(shù):DSTATUS disk_initialize(BYTE drv)。由于存儲(chǔ)媒介是SD卡,所以實(shí)際上是對(duì)SD卡的初始化。drv是存儲(chǔ)媒介號(hào)碼,由于Tiny-FATFS只支持一個(gè)存儲(chǔ)媒介,所以drv應(yīng)恒為0。執(zhí)行無(wú)誤返回0,錯(cuò)誤返回非 0。

      ②狀態(tài)檢測(cè)函數(shù):DSTATUS disk_status(BYTE drV)。檢測(cè)是否支持當(dāng)前的存儲(chǔ)媒介,對(duì)Tiny-FATFS來(lái)說(shuō),只要drv為 0,就認(rèn)為支持,然后返回 0。

      ③讀扇區(qū)函數(shù):DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE.count)。在 SD 卡讀接口函數(shù)的基礎(chǔ)上編寫,*buff存儲(chǔ)已經(jīng)讀取的數(shù)據(jù),sector是開始讀的起始扇區(qū),count是需要讀的扇區(qū)數(shù)。1個(gè)扇區(qū)為512 B。執(zhí)行無(wú)誤返回0,錯(cuò)誤返回非0。

      ④寫扇區(qū)函數(shù):DRESULT disk_write(BYTE drv,const BYTE*buff,DWORD sector,BYTE count)。 在 SD 卡 寫 接口函數(shù)的基礎(chǔ)上編寫,*buff存儲(chǔ)要寫入的數(shù)據(jù),sector是開始寫的起始扇區(qū),count是需要寫的扇區(qū)數(shù)。1個(gè)扇區(qū)為512 B。執(zhí)行無(wú)誤返回0,錯(cuò)誤返回非0。

      ⑤存儲(chǔ)媒介控制函數(shù):DRESULT disk_ioctl(BYTE drv,BYTE ctrl,VoiI*buff)。 ctrl是控制代碼,*buff存儲(chǔ)或接收控制數(shù)據(jù)。可以在此函數(shù)里編寫自己需要的功能代碼,如獲得存儲(chǔ)媒介的大小、檢測(cè)存儲(chǔ)媒介的上電與否,存儲(chǔ)媒介的扇區(qū)數(shù)等。如果是簡(jiǎn)單的應(yīng)用,也可以不用編寫,返回0即可。

      ⑥D(zhuǎn)WORD get_fattime(Void)。本設(shè)計(jì)未涉及到文件的創(chuàng)建和修改,因此實(shí)時(shí)時(shí)鐘部分未編寫,直接返回一個(gè)32 bit無(wú)符號(hào)整數(shù)即可。

      (2)對(duì)Tiny-FATFS進(jìn)行配置,主要是修改tff.h和diskio.h。在diskio.h中,只需要配置一項(xiàng):使能或者使能只讀屬性。由于本設(shè)計(jì)只涉及到SD卡的讀操作,因此定義使能只讀屬性:#define_READONLY1。這樣可以裁減掉關(guān)于寫SD卡的那部分代碼,從而使文件系統(tǒng)更精簡(jiǎn)。

      在tff.h中,需要對(duì)整個(gè)文件系統(tǒng)做全面的配置,包括:

      ①#define_MCU_ENDIAN 1。STM32是小端模式,選擇1。

      ②#define_FS_READONLY 1。使能只讀操作,去掉寫操作,節(jié)省空間。

      ③#define_FS_MINIMIZE 3。設(shè)為3表示使用最基本的FATFS函數(shù),最大限度節(jié)省空間。

      ④#define_USE_STRFUNC 0。禁用字符串函數(shù)功能。

      ⑤#define_USE_FORWARD 0。禁用forward功能。

      ⑥#define_FAT321。支持FAT32文件系統(tǒng)。

      ⑦#define_USE_FSINFO 1。支持FAT32磁盤信息獲取。

      ⑧#define_USE_SJIS 0。禁用shift-JIS碼。

      ⑨#define_USE_NTFLAG 1。對(duì)文件名大小寫敏感。

      到此為止,F(xiàn)ATFS的移植就全部完成了。

      編寫一段程序測(cè)試FATFS是否移植成功。以1 s的間隔循環(huán)讀取SD卡中的bmp格式圖片并顯示,main函數(shù)的流程如圖4所示。

      需要說(shuō)明的是,為了便于循環(huán)讀圖,SD卡中存儲(chǔ)的bmp格式圖片被刻意用數(shù)字編號(hào)來(lái)命名(如:1.bmp~n.bmp),這樣,在程序中只需要簡(jiǎn)單處理文件名就可以按順序讀取圖片了。

      通常 bmp圖片都是 24位顏色深度的(即 RGB=8:8:8),而本設(shè)計(jì)使用的TFT液晶是16位顏色深度的(即RGB=5:6:5),因此在程序中需要作轉(zhuǎn)換處理才能正常顯示。轉(zhuǎn)換程序代碼如下:

      由于bmp圖片是最簡(jiǎn)單的圖片格式,不涉及解碼處理,因此大大簡(jiǎn)化了程序設(shè)計(jì)。

      2.2 在μCOS-II平臺(tái)上加載FATFS文件系統(tǒng)

      FATFS的加載比其他一些嵌入式文件系統(tǒng)要簡(jiǎn)單[4],只需要在工程中加入tff.c和diskio.c這兩個(gè)文件即可。需要注意的是,在tff.h中有以下4個(gè)函數(shù):

      專家共識(shí)推薦:原位癌的存在與否對(duì)疾病的預(yù)后及后續(xù)治療有直接影響,同時(shí)基于膀胱腫瘤的多中心性及易復(fù)發(fā)性,建議電切時(shí)對(duì)符合條件的患者行膀胱或前列腺部尿道多點(diǎn)活檢。

      這4個(gè)函數(shù)與stdio.h中定義的函數(shù)有沖突,需要將其刪除。

      此外,tff.h中還定義了一個(gè)EOF,也與stdio.h中的定義有沖突,只需把它重命名即可(如EOFF)。

      2.3 在μCOS-II平臺(tái)上編寫任務(wù)函數(shù)

      定義三個(gè)任務(wù)以實(shí)現(xiàn)數(shù)碼相框功能:

      其中,TaskStart的優(yōu)先級(jí)最高,在main函數(shù)中,初始化μCOS-II后即被創(chuàng)建:

      負(fù)責(zé)初始化目標(biāo)板、SD卡和LCD,并創(chuàng)建任務(wù)Task1,同時(shí)處理按鍵USER_BUTTON_1。當(dāng)按下USER_BUTTON_1時(shí),刪除任務(wù)Task2,其流程如圖5所示。

      Task2任務(wù)則只負(fù)責(zé)執(zhí)行流水燈程序,即循環(huán)依次點(diǎn)亮5個(gè)LED,其優(yōu)先級(jí)最低。

      3 測(cè)試結(jié)果

      本設(shè)計(jì)的實(shí)驗(yàn)平臺(tái)是STM32紅牛開發(fā)板,實(shí)物效果圖如圖6所示。

      實(shí)驗(yàn)結(jié)果表明,μCOS-II+FATFS方案實(shí)現(xiàn)的數(shù)碼相框工作穩(wěn)定,開機(jī)后μCOS-II加載成功即開始循環(huán)讀取SD卡中的bmp圖片并在TFT屏上顯示。圖片間的切換是簡(jiǎn)單的拉幕式切換,間隔為5 s(可調(diào)),經(jīng)長(zhǎng)時(shí)間觀察,無(wú)讀取失敗、掉幀、花屏等問(wèn)題,每張圖片都是完美展示。根據(jù)測(cè)試程序的設(shè)計(jì),按下USER_BUTTON_2按鍵則流水燈任務(wù)被創(chuàng)建,5個(gè)LED燈開始以走馬燈的形式循環(huán)點(diǎn)亮;與此同時(shí),圖片讀取和顯示未受到任何影響,證明μCOS-II的任務(wù)調(diào)度機(jī)制穩(wěn)定可靠。再按下USER_BUTTON_1,則流水燈任務(wù)被刪除,LED停止動(dòng)作。

      本設(shè)計(jì)基本實(shí)現(xiàn)了數(shù)碼相框的功能,其設(shè)計(jì)的硬件極其簡(jiǎn)單,相比于一些基于高端32 bit MCU(如 ARM)的方案[5],成本要低得多。相比于一些簡(jiǎn)單的讀圖顯示程序,本設(shè)計(jì)基于嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II,在穩(wěn)定性和可擴(kuò)展性上都具有優(yōu)勢(shì)。另外,STM32性能優(yōu)越,可以很流暢地運(yùn)行μCOS-II和FATFS系統(tǒng),也能夠驅(qū)動(dòng)QVGA甚至更高分辨率的TFT液晶屏,這是同價(jià)位8 bit或16 bit單片機(jī)所不能比擬的[6]。本設(shè)計(jì)還有需要改進(jìn)的地方,如增加JPEG解碼、增強(qiáng)文件名支持、改進(jìn)幻燈切換方式以及添加其他功能等。

      [1]王永虹,徐煒,郝立平.STM32系列 ARM Cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.

      [2]洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統(tǒng)FATFS Module[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(1):29-31.

      [3]任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.

      [4]王命延,余愛(ài)軍.一種加載在 μCOS-II內(nèi)核上的嵌入式文件系統(tǒng)[J].南昌大學(xué)學(xué)報(bào),2005,29(2):197-199.

      [5]王偉能,吳爍宇,陳弟虎,等.基于S3C2410和Qt/Embedded的數(shù)碼相框設(shè)計(jì)[J].微計(jì)算機(jī)信息,2009,25(6-2):81-83.

      [6]鄭友勝.μCOS-II在 C51中的應(yīng)用設(shè)計(jì)[J].中小企業(yè)科技,2007(1):126-127.

      Design of a simple digital photo frame

      Ding Xinlei,Liu Yiqing,Yu Ben

      (East China Normal University,Shanghai 200241,China)

      To deal with the high cost of the digital photo frame,this article introduccd a design of a simple digital photo frame which can read a bmp picture file from SD card and display it on the TFT LCD screen.The low-cost program has a very high practical value.

      digital photo frame;SD card;STM32;μCOS-II;FATFS

      TP368

      A

      1674-7720(2011)03-0015-03

      2010-09-07)

      丁鑫蕾,女,1986年生,碩士研究生,主要研究方向:高速電路設(shè)計(jì)與視頻圖像處理。

      猜你喜歡
      相框扇區(qū)數(shù)碼
      分階段調(diào)整增加扇區(qū)通行能力策略
      南北橋(2022年2期)2022-05-31 04:28:07
      相框
      幼兒100(2021年15期)2021-05-26 06:21:54
      Naim Audio Uniti Nova數(shù)碼播放/放大器一體機(jī)
      相框
      小狐貍相框
      沙灘相框
      童話世界(2018年23期)2018-08-23 09:13:12
      U盤故障排除經(jīng)驗(yàn)談
      數(shù)碼暗房
      基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
      重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)
      台东市| 大冶市| 兴安县| 白沙| 新余市| 泌阳县| 斗六市| 民乐县| 班戈县| 新宾| 桃江县| 鸡东县| 湖北省| 新蔡县| 穆棱市| 民勤县| 博湖县| 马鞍山市| 龙里县| 柳江县| 平和县| 衡东县| 房产| 江安县| 陇南市| 新干县| 唐河县| 哈尔滨市| 宁南县| 房产| 郓城县| 河东区| 昭平县| 莲花县| 拉萨市| 广灵县| 阿城市| 明水县| 通城县| 颍上县| 合阳县|