劉智勇+陳鵬飛+宿磊+廖廣蘭
摘 要: 基于STM32F107VCT6微控制器,在μC/OS?Ⅲ系統(tǒng)下針對U盤與SD卡之間的文件傳輸進(jìn)行研究。控制器分別通過SPI串行總線和OTG接口與SD卡和U盤實(shí)現(xiàn)數(shù)據(jù)傳輸,控制系統(tǒng)通過FATFS文件系統(tǒng)將U盤的文件數(shù)據(jù)存入控制器的緩存之中,再將數(shù)據(jù)寫入SD卡,實(shí)現(xiàn)了U盤與SD卡之間的數(shù)據(jù)傳輸。實(shí)驗(yàn)表明:該文件傳輸原理簡單、功能穩(wěn)定,可廣泛應(yīng)用于日常生活和工農(nóng)業(yè)的小型嵌入式設(shè)備當(dāng)中。
關(guān)鍵詞: STM32; μC/OS?Ⅲ; U盤; SD卡; 文件傳輸
中圖分類號: TP274.2 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2014)18?0107?03
Study on file transmission between U disk and SD card based on STM32 chip
LIU Zhi?yong, CHEN Peng?fei, SU Lei, LIAO Guang?lan
(State Key Laboratory of Digital Manufacturing Equipment and Technology, Huazhong University of Science and Technology, Wuhan 430074, China)
Abstract: The file transmission between U disk and SD card in the μC/OS?Ⅲsystem based on STM32F107VCT6 chip is studied in this paper. The controller achieves data transmission by SD card and U disk respectively through SPI serial bus and USB OTG interface. The control system saves the file data of U disk into the cache of controller itself by FATFS file system, and then writes the data into the SD card to realize the data transmission between USB and SD card. The file communication mode is simple and stable, and can be widely applied to small embedded devices used in daily life, agriculture and industry.
Keywords: STM32; μC/OS?Ⅲ; U disk; SD card; file transmission
隨著科技的發(fā)展,微控制器成本越來越低,性能越來越強(qiáng)大,這使得其應(yīng)用越來越廣泛,遍及各個(gè)領(lǐng)域之中。由于控制器本身的存儲空間是非常有限的,因此通常自身不承擔(dān)存儲大量數(shù)據(jù)的任務(wù),而由控制器的外設(shè)比如SD卡、U盤等存儲設(shè)備承擔(dān)。本文以ARM微控制器STM32F107VCT6作為系統(tǒng)的核心,針對SD卡、U盤外圍存儲設(shè)備的通信進(jìn)行了研究,詳細(xì)分析了它們之間文件傳輸過程。
1 硬件設(shè)計(jì)
1.1 STM32F107VCT6
STM32F107VCT6是意法半導(dǎo)體公司(ST Microelectronics,ST)推出的一款STM32互聯(lián)型微控制器。該控制器集成了各種高性能工業(yè)標(biāo)準(zhǔn)接口,且STM32不同型號產(chǎn)品在引腳和軟件上具有完美的兼容性,可以輕松適應(yīng)更多的應(yīng)用。它包括10個(gè)定時(shí)器、2個(gè)12位A/D(模/數(shù)轉(zhuǎn)換器)、2個(gè)12位D/A(數(shù)/模轉(zhuǎn)換器)、2個(gè)I2C接口、5個(gè)USART接口和3個(gè)SPI端口和高質(zhì)量數(shù)字音頻接口IIS,另外STM32F107擁有全速USB(OTG)接口,2路CAN2.0B接口,以及以太網(wǎng)10/100MAC模塊,可以滿足工業(yè)、醫(yī)療、自動(dòng)化和家電市場等多種需求[1]。采用32位ARM Cortex?M3內(nèi)核,最高運(yùn)行頻率可達(dá)72 MHz。
1.2 SD卡接口電路設(shè)計(jì)
SD卡支持兩種接口訪問模式,即SDIO模式和SPI(Serial Peripheral Interface)模式。本次實(shí)驗(yàn)采用的是SPI模式。SPI為串行外圍設(shè)備接口,是一種高速全雙工的通信總線,廣泛應(yīng)用在ADC、LCD等設(shè)備與MCU間通信的場合,其通信模式如圖1所示。
圖1 SPI通信模式圖
圖1中SS(Slave Select)為片選信號線;SCK(Serial Clock)為時(shí)鐘信號線,由主通信設(shè)備產(chǎn)生;MOSI(Master Output, Slave Input)為主設(shè)備輸出/從設(shè)備輸入引腳;MISO(Master Input, Slave Output)主設(shè)備輸入/從設(shè)備輸出引腳。根據(jù)其通信模式設(shè)計(jì)其SD卡接口電路如圖2所示。
圖2 SD卡接口原理圖
圖2中SD_CS端為片選端口,DO、DI分別用來發(fā)送以及接受數(shù)據(jù),SCLK為時(shí)鐘信號端口,VDD為電源端口,VSS以及GND為電源地。
1.3 USB接口電路設(shè)計(jì)
USB為通用串行總線,是電子設(shè)備中最常用的連接方式,由于它易于擴(kuò)展、價(jià)格低廉、易于升級、速度快和支持熱插拔等優(yōu)點(diǎn)被廣泛用于與PC相連的設(shè)備中。STM32F107VCT6含有一個(gè)USB 2.0 OTG全速接口,接口速率12 Mb/s,可以作為主機(jī)對外設(shè)進(jìn)行操作。本實(shí)驗(yàn)中采用的是USB的A型接口,接口原理圖如圖3所示。
圖3 USB接口原理圖
圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分?jǐn)?shù)據(jù)線。
2 軟件設(shè)計(jì)
2.1 μC/OS?Ⅲ
μC/OS?Ⅲ[2]是一個(gè)可裁剪、可固話、可剝奪型的實(shí)時(shí)內(nèi)核,管理任務(wù)的數(shù)目不受限制,是由著名的μC/OS?Ⅱ發(fā)展而來,是第三代內(nèi)核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優(yōu)先級查表的硬件指令的32位CPU的嵌入式應(yīng)用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實(shí)現(xiàn)高效的任務(wù)調(diào)度算法,而無須使用μC/OS?Ⅱ的軟件任務(wù)調(diào)度算法,而且μC/OS?Ⅲ支持時(shí)間片輪轉(zhuǎn)調(diào)度算法。從核心任務(wù)調(diào)度算法的改變來看,μC/OS?Ⅲ已經(jīng)是一個(gè)全新的嵌入式RTOS內(nèi)核。從μC/OS算起,該內(nèi)核已有20余年應(yīng)用史,在諸多應(yīng)用領(lǐng)域得到了廣泛的認(rèn)可。
2.2 FATFS文件系統(tǒng)
FATFS是面向小型嵌入式系統(tǒng)的一種通用FAT文件系統(tǒng)。它完全是由ANSI C語言編寫并且完全獨(dú)立于底層的I/O介質(zhì)。因此它可以很容易移值到其他處理器當(dāng)中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅(qū)動(dòng)之后,把FATFS文件系統(tǒng)代碼移值到工程之中,就可以利用文件系統(tǒng)的各種函數(shù)對已經(jīng)格式化的SD卡或者U盤進(jìn)行讀/寫。
2.3 軟件工程的建立
本次研究所完成的內(nèi)容是將儲存有一定文件的U盤熱插到開發(fā)板上的USB接口上時(shí),系統(tǒng)會(huì)自動(dòng)將U盤中的文件復(fù)制到連接在開發(fā)板上的SD卡當(dāng)中。
軟件工程建立所用的集成開發(fā)編譯環(huán)境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當(dāng)中,初始化后,通過μC/OS?Ⅲ的任務(wù)機(jī)制建立兩個(gè)任務(wù),分別對SD卡以及USB接口進(jìn)行初始化。還需要將對SD卡以及USB讀寫的函數(shù)放入到FATFS的底層函數(shù)中去,供上層函數(shù)調(diào)用,系統(tǒng)需要實(shí)時(shí)檢測是否有U盤連接上。系統(tǒng)程序流程圖如圖4所示。
圖4 系統(tǒng)程序流程圖
當(dāng)設(shè)備檢測到有U盤插入時(shí),系統(tǒng)會(huì)對USB設(shè)備進(jìn)行枚舉操作,即USB主機(jī)通過一系列命令要求USB設(shè)備發(fā)送描述符信息,從而知道設(shè)備具有什么功能、屬于哪一類設(shè)備、要占用多少帶寬、使用哪類傳輸方式及數(shù)據(jù)量大小,只有主機(jī)確定了這些信息之后,設(shè)備才能真正的正常工作[4]。枚舉通過后USB設(shè)備會(huì)觸發(fā)名為OTG_FS_IRQHandler的中斷,在該中斷下最后會(huì)執(zhí)行用戶應(yīng)用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當(dāng)中。文件傳輸過程如圖5所示。
實(shí)驗(yàn)中將U盤中的文件數(shù)據(jù)通過FATFS系統(tǒng)代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統(tǒng)代碼將緩存中的數(shù)據(jù)寫入SD卡當(dāng)中。該過程是雙向的,且一次傳輸?shù)臄?shù)據(jù)多少取決于緩存的大小。若是出現(xiàn)文件數(shù)據(jù)大于緩存的情況,系統(tǒng)也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內(nèi)部的FLASH中。
圖5 文件傳輸過程圖
3 實(shí)驗(yàn)結(jié)果與討論
本實(shí)驗(yàn)中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環(huán)境下運(yùn)行的所有圖像處理軟件都支持BMP圖像文件格式。實(shí)驗(yàn)過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發(fā)板上??梢园l(fā)現(xiàn),SD卡中也存入了a.bmp位圖文件,成功實(shí)現(xiàn)了文件由U盤到SD卡的傳輸。
4 結(jié) 語
本文重點(diǎn)介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統(tǒng)下USB與SD卡的文件傳輸過程,描述了系統(tǒng)的硬件設(shè)計(jì)以及軟件設(shè)計(jì)流程。該傳輸過程簡單、穩(wěn)定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統(tǒng)的文件傳輸,可應(yīng)用于日常生活、農(nóng)業(yè)以及工業(yè)中的各種中小型設(shè)備。
參考文獻(xiàn)
[1] 意法半導(dǎo)體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.
[2] [美] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學(xué)出版社,2012.
[3] 劉火良,楊森.STM32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[4] 王川北,劉強(qiáng).USB系統(tǒng)開發(fā):基于ARM Cortex?M3[M].北京:北京航空航天大學(xué)出版社,2012.
[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.
[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.
[7] 譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.
[8] 譚浩強(qiáng).C++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].2版.北京:清華大學(xué)出版社,2011.
[9] 劉波文,孫巖.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ經(jīng)典實(shí)例[M].北京:北京航空航天大學(xué)出版社,2012.
[10] 任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ原理及應(yīng)用[M].2版.北京:北京航空航天大學(xué)出版社,2009.
圖3 USB接口原理圖
圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分?jǐn)?shù)據(jù)線。
2 軟件設(shè)計(jì)
2.1 μC/OS?Ⅲ
μC/OS?Ⅲ[2]是一個(gè)可裁剪、可固話、可剝奪型的實(shí)時(shí)內(nèi)核,管理任務(wù)的數(shù)目不受限制,是由著名的μC/OS?Ⅱ發(fā)展而來,是第三代內(nèi)核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優(yōu)先級查表的硬件指令的32位CPU的嵌入式應(yīng)用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實(shí)現(xiàn)高效的任務(wù)調(diào)度算法,而無須使用μC/OS?Ⅱ的軟件任務(wù)調(diào)度算法,而且μC/OS?Ⅲ支持時(shí)間片輪轉(zhuǎn)調(diào)度算法。從核心任務(wù)調(diào)度算法的改變來看,μC/OS?Ⅲ已經(jīng)是一個(gè)全新的嵌入式RTOS內(nèi)核。從μC/OS算起,該內(nèi)核已有20余年應(yīng)用史,在諸多應(yīng)用領(lǐng)域得到了廣泛的認(rèn)可。
2.2 FATFS文件系統(tǒng)
FATFS是面向小型嵌入式系統(tǒng)的一種通用FAT文件系統(tǒng)。它完全是由ANSI C語言編寫并且完全獨(dú)立于底層的I/O介質(zhì)。因此它可以很容易移值到其他處理器當(dāng)中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅(qū)動(dòng)之后,把FATFS文件系統(tǒng)代碼移值到工程之中,就可以利用文件系統(tǒng)的各種函數(shù)對已經(jīng)格式化的SD卡或者U盤進(jìn)行讀/寫。
2.3 軟件工程的建立
本次研究所完成的內(nèi)容是將儲存有一定文件的U盤熱插到開發(fā)板上的USB接口上時(shí),系統(tǒng)會(huì)自動(dòng)將U盤中的文件復(fù)制到連接在開發(fā)板上的SD卡當(dāng)中。
軟件工程建立所用的集成開發(fā)編譯環(huán)境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當(dāng)中,初始化后,通過μC/OS?Ⅲ的任務(wù)機(jī)制建立兩個(gè)任務(wù),分別對SD卡以及USB接口進(jìn)行初始化。還需要將對SD卡以及USB讀寫的函數(shù)放入到FATFS的底層函數(shù)中去,供上層函數(shù)調(diào)用,系統(tǒng)需要實(shí)時(shí)檢測是否有U盤連接上。系統(tǒng)程序流程圖如圖4所示。
圖4 系統(tǒng)程序流程圖
當(dāng)設(shè)備檢測到有U盤插入時(shí),系統(tǒng)會(huì)對USB設(shè)備進(jìn)行枚舉操作,即USB主機(jī)通過一系列命令要求USB設(shè)備發(fā)送描述符信息,從而知道設(shè)備具有什么功能、屬于哪一類設(shè)備、要占用多少帶寬、使用哪類傳輸方式及數(shù)據(jù)量大小,只有主機(jī)確定了這些信息之后,設(shè)備才能真正的正常工作[4]。枚舉通過后USB設(shè)備會(huì)觸發(fā)名為OTG_FS_IRQHandler的中斷,在該中斷下最后會(huì)執(zhí)行用戶應(yīng)用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當(dāng)中。文件傳輸過程如圖5所示。
實(shí)驗(yàn)中將U盤中的文件數(shù)據(jù)通過FATFS系統(tǒng)代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統(tǒng)代碼將緩存中的數(shù)據(jù)寫入SD卡當(dāng)中。該過程是雙向的,且一次傳輸?shù)臄?shù)據(jù)多少取決于緩存的大小。若是出現(xiàn)文件數(shù)據(jù)大于緩存的情況,系統(tǒng)也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內(nèi)部的FLASH中。
圖5 文件傳輸過程圖
3 實(shí)驗(yàn)結(jié)果與討論
本實(shí)驗(yàn)中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環(huán)境下運(yùn)行的所有圖像處理軟件都支持BMP圖像文件格式。實(shí)驗(yàn)過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發(fā)板上??梢园l(fā)現(xiàn),SD卡中也存入了a.bmp位圖文件,成功實(shí)現(xiàn)了文件由U盤到SD卡的傳輸。
4 結(jié) 語
本文重點(diǎn)介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統(tǒng)下USB與SD卡的文件傳輸過程,描述了系統(tǒng)的硬件設(shè)計(jì)以及軟件設(shè)計(jì)流程。該傳輸過程簡單、穩(wěn)定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統(tǒng)的文件傳輸,可應(yīng)用于日常生活、農(nóng)業(yè)以及工業(yè)中的各種中小型設(shè)備。
參考文獻(xiàn)
[1] 意法半導(dǎo)體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.
[2] [美] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學(xué)出版社,2012.
[3] 劉火良,楊森.STM32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[4] 王川北,劉強(qiáng).USB系統(tǒng)開發(fā):基于ARM Cortex?M3[M].北京:北京航空航天大學(xué)出版社,2012.
[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.
[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.
[7] 譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.
[8] 譚浩強(qiáng).C++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].2版.北京:清華大學(xué)出版社,2011.
[9] 劉波文,孫巖.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ經(jīng)典實(shí)例[M].北京:北京航空航天大學(xué)出版社,2012.
[10] 任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ原理及應(yīng)用[M].2版.北京:北京航空航天大學(xué)出版社,2009.
圖3 USB接口原理圖
圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分?jǐn)?shù)據(jù)線。
2 軟件設(shè)計(jì)
2.1 μC/OS?Ⅲ
μC/OS?Ⅲ[2]是一個(gè)可裁剪、可固話、可剝奪型的實(shí)時(shí)內(nèi)核,管理任務(wù)的數(shù)目不受限制,是由著名的μC/OS?Ⅱ發(fā)展而來,是第三代內(nèi)核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優(yōu)先級查表的硬件指令的32位CPU的嵌入式應(yīng)用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實(shí)現(xiàn)高效的任務(wù)調(diào)度算法,而無須使用μC/OS?Ⅱ的軟件任務(wù)調(diào)度算法,而且μC/OS?Ⅲ支持時(shí)間片輪轉(zhuǎn)調(diào)度算法。從核心任務(wù)調(diào)度算法的改變來看,μC/OS?Ⅲ已經(jīng)是一個(gè)全新的嵌入式RTOS內(nèi)核。從μC/OS算起,該內(nèi)核已有20余年應(yīng)用史,在諸多應(yīng)用領(lǐng)域得到了廣泛的認(rèn)可。
2.2 FATFS文件系統(tǒng)
FATFS是面向小型嵌入式系統(tǒng)的一種通用FAT文件系統(tǒng)。它完全是由ANSI C語言編寫并且完全獨(dú)立于底層的I/O介質(zhì)。因此它可以很容易移值到其他處理器當(dāng)中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅(qū)動(dòng)之后,把FATFS文件系統(tǒng)代碼移值到工程之中,就可以利用文件系統(tǒng)的各種函數(shù)對已經(jīng)格式化的SD卡或者U盤進(jìn)行讀/寫。
2.3 軟件工程的建立
本次研究所完成的內(nèi)容是將儲存有一定文件的U盤熱插到開發(fā)板上的USB接口上時(shí),系統(tǒng)會(huì)自動(dòng)將U盤中的文件復(fù)制到連接在開發(fā)板上的SD卡當(dāng)中。
軟件工程建立所用的集成開發(fā)編譯環(huán)境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當(dāng)中,初始化后,通過μC/OS?Ⅲ的任務(wù)機(jī)制建立兩個(gè)任務(wù),分別對SD卡以及USB接口進(jìn)行初始化。還需要將對SD卡以及USB讀寫的函數(shù)放入到FATFS的底層函數(shù)中去,供上層函數(shù)調(diào)用,系統(tǒng)需要實(shí)時(shí)檢測是否有U盤連接上。系統(tǒng)程序流程圖如圖4所示。
圖4 系統(tǒng)程序流程圖
當(dāng)設(shè)備檢測到有U盤插入時(shí),系統(tǒng)會(huì)對USB設(shè)備進(jìn)行枚舉操作,即USB主機(jī)通過一系列命令要求USB設(shè)備發(fā)送描述符信息,從而知道設(shè)備具有什么功能、屬于哪一類設(shè)備、要占用多少帶寬、使用哪類傳輸方式及數(shù)據(jù)量大小,只有主機(jī)確定了這些信息之后,設(shè)備才能真正的正常工作[4]。枚舉通過后USB設(shè)備會(huì)觸發(fā)名為OTG_FS_IRQHandler的中斷,在該中斷下最后會(huì)執(zhí)行用戶應(yīng)用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當(dāng)中。文件傳輸過程如圖5所示。
實(shí)驗(yàn)中將U盤中的文件數(shù)據(jù)通過FATFS系統(tǒng)代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統(tǒng)代碼將緩存中的數(shù)據(jù)寫入SD卡當(dāng)中。該過程是雙向的,且一次傳輸?shù)臄?shù)據(jù)多少取決于緩存的大小。若是出現(xiàn)文件數(shù)據(jù)大于緩存的情況,系統(tǒng)也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內(nèi)部的FLASH中。
圖5 文件傳輸過程圖
3 實(shí)驗(yàn)結(jié)果與討論
本實(shí)驗(yàn)中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環(huán)境下運(yùn)行的所有圖像處理軟件都支持BMP圖像文件格式。實(shí)驗(yàn)過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發(fā)板上??梢园l(fā)現(xiàn),SD卡中也存入了a.bmp位圖文件,成功實(shí)現(xiàn)了文件由U盤到SD卡的傳輸。
4 結(jié) 語
本文重點(diǎn)介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統(tǒng)下USB與SD卡的文件傳輸過程,描述了系統(tǒng)的硬件設(shè)計(jì)以及軟件設(shè)計(jì)流程。該傳輸過程簡單、穩(wěn)定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統(tǒng)的文件傳輸,可應(yīng)用于日常生活、農(nóng)業(yè)以及工業(yè)中的各種中小型設(shè)備。
參考文獻(xiàn)
[1] 意法半導(dǎo)體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.
[2] [美] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學(xué)出版社,2012.
[3] 劉火良,楊森.STM32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[4] 王川北,劉強(qiáng).USB系統(tǒng)開發(fā):基于ARM Cortex?M3[M].北京:北京航空航天大學(xué)出版社,2012.
[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.
[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.
[7] 譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.
[8] 譚浩強(qiáng).C++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].2版.北京:清華大學(xué)出版社,2011.
[9] 劉波文,孫巖.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ經(jīng)典實(shí)例[M].北京:北京航空航天大學(xué)出版社,2012.
[10] 任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS?Ⅱ原理及應(yīng)用[M].2版.北京:北京航空航天大學(xué)出版社,2009.