999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32芯片的U盤/SD卡文件傳輸技術研究

2014-09-15 18:23:03劉智勇陳鵬飛宿磊廖廣蘭
現代電子技術 2014年18期

劉智勇+陳鵬飛+宿磊+廖廣蘭

摘 要: 基于STM32F107VCT6微控制器,在μC/OS?Ⅲ系統下針對U盤與SD卡之間的文件傳輸進行研究。控制器分別通過SPI串行總線和OTG接口與SD卡和U盤實現數據傳輸,控制系統通過FATFS文件系統將U盤的文件數據存入控制器的緩存之中,再將數據寫入SD卡,實現了U盤與SD卡之間的數據傳輸。實驗表明:該文件傳輸原理簡單、功能穩定,可廣泛應用于日常生活和工農業的小型嵌入式設備當中。

關鍵詞: STM32; μC/OS?Ⅲ; U盤; SD卡; 文件傳輸

中圖分類號: TP274.2 文獻標識碼: 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

隨著科技的發展,微控制器成本越來越低,性能越來越強大,這使得其應用越來越廣泛,遍及各個領域之中。由于控制器本身的存儲空間是非常有限的,因此通常自身不承擔存儲大量數據的任務,而由控制器的外設比如SD卡、U盤等存儲設備承擔。本文以ARM微控制器STM32F107VCT6作為系統的核心,針對SD卡、U盤外圍存儲設備的通信進行了研究,詳細分析了它們之間文件傳輸過程。

1 硬件設計

1.1 STM32F107VCT6

STM32F107VCT6是意法半導體公司(ST Microelectronics,ST)推出的一款STM32互聯型微控制器。該控制器集成了各種高性能工業標準接口,且STM32不同型號產品在引腳和軟件上具有完美的兼容性,可以輕松適應更多的應用。它包括10個定時器、2個12位A/D(模/數轉換器)、2個12位D/A(數/模轉換器)、2個I2C接口、5個USART接口和3個SPI端口和高質量數字音頻接口IIS,另外STM32F107擁有全速USB(OTG)接口,2路CAN2.0B接口,以及以太網10/100MAC模塊,可以滿足工業、醫療、自動化和家電市場等多種需求[1]。采用32位ARM Cortex?M3內核,最高運行頻率可達72 MHz。

1.2 SD卡接口電路設計

SD卡支持兩種接口訪問模式,即SDIO模式和SPI(Serial Peripheral Interface)模式。本次實驗采用的是SPI模式。SPI為串行外圍設備接口,是一種高速全雙工的通信總線,廣泛應用在ADC、LCD等設備與MCU間通信的場合,其通信模式如圖1所示。

圖1 SPI通信模式圖

圖1中SS(Slave Select)為片選信號線;SCK(Serial Clock)為時鐘信號線,由主通信設備產生;MOSI(Master Output, Slave Input)為主設備輸出/從設備輸入引腳;MISO(Master Input, Slave Output)主設備輸入/從設備輸出引腳。根據其通信模式設計其SD卡接口電路如圖2所示。

圖2 SD卡接口原理圖

圖2中SD_CS端為片選端口,DO、DI分別用來發送以及接受數據,SCLK為時鐘信號端口,VDD為電源端口,VSS以及GND為電源地。

1.3 USB接口電路設計

USB為通用串行總線,是電子設備中最常用的連接方式,由于它易于擴展、價格低廉、易于升級、速度快和支持熱插拔等優點被廣泛用于與PC相連的設備中。STM32F107VCT6含有一個USB 2.0 OTG全速接口,接口速率12 Mb/s,可以作為主機對外設進行操作。本實驗中采用的是USB的A型接口,接口原理圖如圖3所示。

圖3 USB接口原理圖

圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分數據線。

2 軟件設計

2.1 μC/OS?Ⅲ

μC/OS?Ⅲ[2]是一個可裁剪、可固話、可剝奪型的實時內核,管理任務的數目不受限制,是由著名的μC/OS?Ⅱ發展而來,是第三代內核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優先級查表的硬件指令的32位CPU的嵌入式應用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實現高效的任務調度算法,而無須使用μC/OS?Ⅱ的軟件任務調度算法,而且μC/OS?Ⅲ支持時間片輪轉調度算法。從核心任務調度算法的改變來看,μC/OS?Ⅲ已經是一個全新的嵌入式RTOS內核。從μC/OS算起,該內核已有20余年應用史,在諸多應用領域得到了廣泛的認可。

2.2 FATFS文件系統

FATFS是面向小型嵌入式系統的一種通用FAT文件系統。它完全是由ANSI C語言編寫并且完全獨立于底層的I/O介質。因此它可以很容易移值到其他處理器當中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅動之后,把FATFS文件系統代碼移值到工程之中,就可以利用文件系統的各種函數對已經格式化的SD卡或者U盤進行讀/寫。

2.3 軟件工程的建立

本次研究所完成的內容是將儲存有一定文件的U盤熱插到開發板上的USB接口上時,系統會自動將U盤中的文件復制到連接在開發板上的SD卡當中。

軟件工程建立所用的集成開發編譯環境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當中,初始化后,通過μC/OS?Ⅲ的任務機制建立兩個任務,分別對SD卡以及USB接口進行初始化。還需要將對SD卡以及USB讀寫的函數放入到FATFS的底層函數中去,供上層函數調用,系統需要實時檢測是否有U盤連接上。系統程序流程圖如圖4所示。

圖4 系統程序流程圖

當設備檢測到有U盤插入時,系統會對USB設備進行枚舉操作,即USB主機通過一系列命令要求USB設備發送描述符信息,從而知道設備具有什么功能、屬于哪一類設備、要占用多少帶寬、使用哪類傳輸方式及數據量大小,只有主機確定了這些信息之后,設備才能真正的正常工作[4]。枚舉通過后USB設備會觸發名為OTG_FS_IRQHandler的中斷,在該中斷下最后會執行用戶應用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當中。文件傳輸過程如圖5所示。

實驗中將U盤中的文件數據通過FATFS系統代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統代碼將緩存中的數據寫入SD卡當中。該過程是雙向的,且一次傳輸的數據多少取決于緩存的大小。若是出現文件數據大于緩存的情況,系統也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內部的FLASH中。

圖5 文件傳輸過程圖

3 實驗結果與討論

本實驗中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環境下運行的所有圖像處理軟件都支持BMP圖像文件格式。實驗過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發板上。可以發現,SD卡中也存入了a.bmp位圖文件,成功實現了文件由U盤到SD卡的傳輸。

4 結 語

本文重點介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統下USB與SD卡的文件傳輸過程,描述了系統的硬件設計以及軟件設計流程。該傳輸過程簡單、穩定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統的文件傳輸,可應用于日常生活、農業以及工業中的各種中小型設備。

參考文獻

[1] 意法半導體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.

[2] [美] LABROSSE J J.嵌入式實時操作系統μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學出版社,2012.

[3] 劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013.

[4] 王川北,劉強.USB系統開發:基于ARM Cortex?M3[M].北京:北京航空航天大學出版社,2012.

[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發與應用[M].北京:清華大學出版社,2011.

[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.

[7] 譚浩強.C++程序設計[M].北京:清華大學出版社,2007.

[8] 譚浩強.C++程序設計題解與上機指導[M].2版.北京:清華大學出版社,2011.

[9] 劉波文,孫巖.嵌入式實時操作系統μC/OS?Ⅱ經典實例[M].北京:北京航空航天大學出版社,2012.

[10] 任哲.嵌入式實時操作系統μC/OS?Ⅱ原理及應用[M].2版.北京:北京航空航天大學出版社,2009.

圖3 USB接口原理圖

圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分數據線。

2 軟件設計

2.1 μC/OS?Ⅲ

μC/OS?Ⅲ[2]是一個可裁剪、可固話、可剝奪型的實時內核,管理任務的數目不受限制,是由著名的μC/OS?Ⅱ發展而來,是第三代內核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優先級查表的硬件指令的32位CPU的嵌入式應用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實現高效的任務調度算法,而無須使用μC/OS?Ⅱ的軟件任務調度算法,而且μC/OS?Ⅲ支持時間片輪轉調度算法。從核心任務調度算法的改變來看,μC/OS?Ⅲ已經是一個全新的嵌入式RTOS內核。從μC/OS算起,該內核已有20余年應用史,在諸多應用領域得到了廣泛的認可。

2.2 FATFS文件系統

FATFS是面向小型嵌入式系統的一種通用FAT文件系統。它完全是由ANSI C語言編寫并且完全獨立于底層的I/O介質。因此它可以很容易移值到其他處理器當中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅動之后,把FATFS文件系統代碼移值到工程之中,就可以利用文件系統的各種函數對已經格式化的SD卡或者U盤進行讀/寫。

2.3 軟件工程的建立

本次研究所完成的內容是將儲存有一定文件的U盤熱插到開發板上的USB接口上時,系統會自動將U盤中的文件復制到連接在開發板上的SD卡當中。

軟件工程建立所用的集成開發編譯環境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當中,初始化后,通過μC/OS?Ⅲ的任務機制建立兩個任務,分別對SD卡以及USB接口進行初始化。還需要將對SD卡以及USB讀寫的函數放入到FATFS的底層函數中去,供上層函數調用,系統需要實時檢測是否有U盤連接上。系統程序流程圖如圖4所示。

圖4 系統程序流程圖

當設備檢測到有U盤插入時,系統會對USB設備進行枚舉操作,即USB主機通過一系列命令要求USB設備發送描述符信息,從而知道設備具有什么功能、屬于哪一類設備、要占用多少帶寬、使用哪類傳輸方式及數據量大小,只有主機確定了這些信息之后,設備才能真正的正常工作[4]。枚舉通過后USB設備會觸發名為OTG_FS_IRQHandler的中斷,在該中斷下最后會執行用戶應用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當中。文件傳輸過程如圖5所示。

實驗中將U盤中的文件數據通過FATFS系統代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統代碼將緩存中的數據寫入SD卡當中。該過程是雙向的,且一次傳輸的數據多少取決于緩存的大小。若是出現文件數據大于緩存的情況,系統也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內部的FLASH中。

圖5 文件傳輸過程圖

3 實驗結果與討論

本實驗中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環境下運行的所有圖像處理軟件都支持BMP圖像文件格式。實驗過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發板上。可以發現,SD卡中也存入了a.bmp位圖文件,成功實現了文件由U盤到SD卡的傳輸。

4 結 語

本文重點介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統下USB與SD卡的文件傳輸過程,描述了系統的硬件設計以及軟件設計流程。該傳輸過程簡單、穩定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統的文件傳輸,可應用于日常生活、農業以及工業中的各種中小型設備。

參考文獻

[1] 意法半導體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.

[2] [美] LABROSSE J J.嵌入式實時操作系統μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學出版社,2012.

[3] 劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013.

[4] 王川北,劉強.USB系統開發:基于ARM Cortex?M3[M].北京:北京航空航天大學出版社,2012.

[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發與應用[M].北京:清華大學出版社,2011.

[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.

[7] 譚浩強.C++程序設計[M].北京:清華大學出版社,2007.

[8] 譚浩強.C++程序設計題解與上機指導[M].2版.北京:清華大學出版社,2011.

[9] 劉波文,孫巖.嵌入式實時操作系統μC/OS?Ⅱ經典實例[M].北京:北京航空航天大學出版社,2012.

[10] 任哲.嵌入式實時操作系統μC/OS?Ⅱ原理及應用[M].2版.北京:北京航空航天大學出版社,2009.

圖3 USB接口原理圖

圖中VBUS為5 V電源線,GND為電源地線,而D-和D+組合成一組差分數據線。

2 軟件設計

2.1 μC/OS?Ⅲ

μC/OS?Ⅲ[2]是一個可裁剪、可固話、可剝奪型的實時內核,管理任務的數目不受限制,是由著名的μC/OS?Ⅱ發展而來,是第三代內核。μC/OS?Ⅲ針對以ARM Cortex為代表的新一代CPU,面向帶有可用于優先級查表的硬件指令的32位CPU的嵌入式應用。μC/OS?Ⅲ允許利用這類高端CPU的特殊硬件指令來實現高效的任務調度算法,而無須使用μC/OS?Ⅱ的軟件任務調度算法,而且μC/OS?Ⅲ支持時間片輪轉調度算法。從核心任務調度算法的改變來看,μC/OS?Ⅲ已經是一個全新的嵌入式RTOS內核。從μC/OS算起,該內核已有20余年應用史,在諸多應用領域得到了廣泛的認可。

2.2 FATFS文件系統

FATFS是面向小型嵌入式系統的一種通用FAT文件系統。它完全是由ANSI C語言編寫并且完全獨立于底層的I/O介質。因此它可以很容易移值到其他處理器當中,如8051,PIC,AVR,SH,Z80,H8,ARM等[3]。在配置了SD卡以及USB的驅動之后,把FATFS文件系統代碼移值到工程之中,就可以利用文件系統的各種函數對已經格式化的SD卡或者U盤進行讀/寫。

2.3 軟件工程的建立

本次研究所完成的內容是將儲存有一定文件的U盤熱插到開發板上的USB接口上時,系統會自動將U盤中的文件復制到連接在開發板上的SD卡當中。

軟件工程建立所用的集成開發編譯環境為keil MDK4.12,再將μC/OS?Ⅲ移值到工程當中,初始化后,通過μC/OS?Ⅲ的任務機制建立兩個任務,分別對SD卡以及USB接口進行初始化。還需要將對SD卡以及USB讀寫的函數放入到FATFS的底層函數中去,供上層函數調用,系統需要實時檢測是否有U盤連接上。系統程序流程圖如圖4所示。

圖4 系統程序流程圖

當設備檢測到有U盤插入時,系統會對USB設備進行枚舉操作,即USB主機通過一系列命令要求USB設備發送描述符信息,從而知道設備具有什么功能、屬于哪一類設備、要占用多少帶寬、使用哪類傳輸方式及數據量大小,只有主機確定了這些信息之后,設備才能真正的正常工作[4]。枚舉通過后USB設備會觸發名為OTG_FS_IRQHandler的中斷,在該中斷下最后會執行用戶應用程序USBH_MSC_Application,在該程序下將U盤中文件拷貝到SD當中。文件傳輸過程如圖5所示。

實驗中將U盤中的文件數據通過FATFS系統代碼讀取到STM32F107主芯片的緩存之中,然后再通過FATFS系統代碼將緩存中的數據寫入SD卡當中。該過程是雙向的,且一次傳輸的數據多少取決于緩存的大小。若是出現文件數據大于緩存的情況,系統也能完成拷貝,但拷貝后的文件并不完整。故定義緩存的大小對文件的傳輸過程是非常重要的。程序編寫完成后通過J?LINK將程序燒寫入STM32芯片內部的FLASH中。

圖5 文件傳輸過程圖

3 實驗結果與討論

本實驗中定義了3 KB的緩存,選用了1.93 KB的BMP圖片文件(a.bmp)。BMP(Bitmap?File)圖形文件是Windows采用的圖形文件格式,在Windows環境下運行的所有圖像處理軟件都支持BMP圖像文件格式。實驗過程是將圖片a.bmp并拷貝到U盤,再將U盤插入開發板上。可以發現,SD卡中也存入了a.bmp位圖文件,成功實現了文件由U盤到SD卡的傳輸。

4 結 語

本文重點介紹了基于STM32F107VCT6主芯片在μC/OS?Ⅲ系統下USB與SD卡的文件傳輸過程,描述了系統的硬件設計以及軟件設計流程。該傳輸過程簡單、穩定,充分利用了STM32F107系列芯片的OTG接口功能,適用于小型嵌入式系統的文件傳輸,可應用于日常生活、農業以及工業中的各種中小型設備。

參考文獻

[1] 意法半導體.STM32F107參考手冊[EB/OL].[2011?08?09].http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1564/PF221020.

[2] [美] LABROSSE J J.嵌入式實時操作系統μC/OS?Ⅲ[M].宮輝,譯.北京:北京航空航天大學出版社,2012.

[3] 劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013.

[4] 王川北,劉強.USB系統開發:基于ARM Cortex?M3[M].北京:北京航空航天大學出版社,2012.

[5] 喻金錢,喻斌.STM32F系列ARM Cortex?M3核微控制器開發與應用[M].北京:清華大學出版社,2011.

[6] 佚名.STM32神舟IV號用戶手冊[EB/OL].[2012?05?13].http://www.armjishu.com.

[7] 譚浩強.C++程序設計[M].北京:清華大學出版社,2007.

[8] 譚浩強.C++程序設計題解與上機指導[M].2版.北京:清華大學出版社,2011.

[9] 劉波文,孫巖.嵌入式實時操作系統μC/OS?Ⅱ經典實例[M].北京:北京航空航天大學出版社,2012.

[10] 任哲.嵌入式實時操作系統μC/OS?Ⅱ原理及應用[M].2版.北京:北京航空航天大學出版社,2009.

主站蜘蛛池模板: 性视频久久| 国产亚洲成AⅤ人片在线观看| 久久一级电影| 中国黄色一级视频| 人人爽人人爽人人片| 亚洲精品在线观看91| 成人在线欧美| 亚洲资源在线视频| 国产精品无码AV片在线观看播放| 亚洲日本一本dvd高清| 午夜免费视频网站| 国产剧情一区二区| 亚洲永久视频| 亚洲大学生视频在线播放| 久久综合五月| 19国产精品麻豆免费观看| 超薄丝袜足j国产在线视频| 在线观看国产精品第一区免费| 五月婷婷综合网| 女人18毛片久久| 亚洲有无码中文网| 国产一区二区丝袜高跟鞋| 成年A级毛片| 国产在线欧美| 国产日韩AV高潮在线| 国产精品永久不卡免费视频| 精品国产www| 欧美日韩久久综合| 中国一级毛片免费观看| 久久这里只精品国产99热8| 天堂中文在线资源| 青青草综合网| 欧美综合成人| 国产麻豆91网在线看| 毛片三级在线观看| 亚洲综合经典在线一区二区| 影音先锋丝袜制服| 久久国产精品77777| 欧美国产在线一区| 99伊人精品| 97超碰精品成人国产| 她的性爱视频| 97在线国产视频| 亚洲一区二区三区国产精品| 日韩欧美综合在线制服| 亚洲综合婷婷激情| 97国产在线视频| 久久久久夜色精品波多野结衣| 99re热精品视频国产免费| 激情午夜婷婷| 精品国产免费观看| 国产色爱av资源综合区| 久久男人资源站| 伊人久久婷婷| 欧美日韩中文国产| 国产在线日本| 99精品免费欧美成人小视频| 亚洲第一在线播放| 亚洲国产欧美自拍| 亚洲床戏一区| 国产网站一区二区三区| 欧美午夜网| 国产欧美精品一区二区 | 欧美中文字幕一区二区三区| 久久国产亚洲偷自| 亚洲免费黄色网| 国产啪在线| 五月婷婷综合色| av午夜福利一片免费看| 国产另类乱子伦精品免费女| 国产亚洲精品97AA片在线播放| 午夜视频www| 亚洲男人在线| 亚洲高清在线天堂精品| 国产在线拍偷自揄观看视频网站| 亚洲大学生视频在线播放| 亚洲精品自在线拍| 国产在线观看人成激情视频| 亚洲中文字幕在线一区播放| 国产精品观看视频免费完整版| 亚洲美女操| 91亚瑟视频|