freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于單片機的u盤數(shù)據(jù)傳輸裝置設計論文-在線瀏覽

2025-05-01 10:23本頁面
  

【正文】 CH375 芯片內部集成了 PLL 倍頻器、主從 USB 接口 SIE、數(shù)據(jù)緩沖區(qū)、被 動并行接口、異步串行接口、命令解釋器、控制傳輸?shù)膮f(xié)議處理器、通用的固件程序等。 主從 USB 接口 SIE是 USB主機方式和 USB設備方式的一體式 SIE,用于完成物理的 USB數(shù)據(jù)接收和發(fā)送,自動處理位跟蹤和同步、 NRZI編碼和解碼、位填充、并行數(shù)據(jù)與串行數(shù)據(jù)之間的轉換、CRC數(shù)據(jù)校驗、事務握手、出錯重試、 USB 總線狀態(tài)檢測等。 被動并行接口用于與 外部單片機 /DSP/MCU 交換數(shù)據(jù)。 命令解釋器用于分析并執(zhí)行外部單片機 /DSP/MCU 提交的各種命令。 通用的固件程序包含兩組:一組用于 USB 設備方式,自動處理 USB默認端點 0 的各種標準事務等;另一組用于 USB 主機方式,自動處理 MassStorage 海量存儲設備的專用通訊協(xié)議。 CH375 的端點 0、 2 只用于 USB 設備方式,在 USB 主機方式下只需要用到主機端點。 USB 設備的端點號可以是 0~ 15,兩個方向最多支持 31 個端點, USB 設備的包長度可以是 0~ 64 字節(jié)。如果 USB 存儲設備不符合上述要求,則需要外部單片機通過控制傳輸以及 ISSUE_TOKEN 命令或者 ISSUE_TKN_X命令自行處理相關通訊協(xié)議。 單片機通過 8 位并口對 CH375 芯片進行讀寫,所有操作都是由一個命令碼、若干個輸入數(shù)據(jù)和若干個輸出數(shù)據(jù)組成,部分命令不需要輸入數(shù)據(jù),部分命令沒有輸出數(shù)據(jù)。 CH375芯片專門用于處理 USB 通訊,在檢測到 USB 總線的狀態(tài)變化時或者命令執(zhí)行完成 后, CH375以中斷方式通知單片機進行處理。由于 CH375 不僅是一個通用的 USBHOST 硬件接口芯片,還內置了相關的固件程序,包含了上圖左邊的 3 個層次(標為灰色部分),所以實際的單片機程序只需要處理 FAT 文件系統(tǒng)層,并且即使這一層也可以由 CH375 的 U 盤文件級子程序庫實現(xiàn)。由于計算機將USB 存儲設備組織為文件系統(tǒng),為了方便單片機通過 USB移動存儲設備與計算機之間交換數(shù)據(jù),單片機也可以將 USB 存儲設備組織為文件系統(tǒng),也就是處理上圖左邊的最頂層。 CH375 的 U 盤文件級子程序庫具有以下特性:支持常用的 FAT1 FAT16 和 FAT32 文件系統(tǒng),磁盤容量可達 100GB 以上,支持多級子目錄,支持 格式的大寫字母和中文文件名,可以支持小寫字母或者長文件名,支持文件打開、新建、刪除、讀寫以及搜索等。以普通的 MCS51 單片機為例,文件系統(tǒng)的全部子程序有 4KB 到 8KB 代碼,并且需要大約 80 字節(jié)的內部 RAM 和 512 字節(jié)的外部 RAM 作為緩 沖區(qū)。 圖 5 串口版 U盤模塊正反外觀圖 在串口方式下,單片機與模塊的 P2 端口相連接,只需要使用高 8 腳(第 9 腳到第 16腳),其余引腳可以不連接。 模塊的串口是 1 位起始位、 8 位數(shù)據(jù)位、 1位停止位的異步串口,串口的通訊波特率可以在功能配置時設定,如果未設定那么默認是 4800bps(與晶體 X2 的頻率有關),單片機系統(tǒng)可以根據(jù)需要通過 CMD_BaudRate 命令設定更高的波特率。 4+1 線串口是指 GND、 SIN、 SOUT、 STA和可選的 INT, P2 引腳定義如下: 圖 6 模塊引腳定義圖 為了節(jié)約單片機的 I/O 引腳,模塊還支持三線制串口,在這種方式下,單片機與模塊之間只需要連接 SIN 和 SOUT 兩根信號線及公共地線,單片機通過串口發(fā)送兩個同步碼字節(jié)( 57H、 ABH)代替原來向模塊的 STA引腳提供的啟動信號,實現(xiàn)與模塊的命令同步。 圖 7 TTL電平轉 RS232電平經行通信的串口模塊電路圖 圖 8 串口版模塊與單片機之間的電路連接圖 圖 9 單片機系統(tǒng)串口與 RS232借口連接電路圖 圖 10 單片機系統(tǒng)和模塊之間連接的實物圖 六,軟件設計 為了使上位 PC 機能夠直接讀取該讀寫器寫入 U 盤的數(shù)據(jù),數(shù)據(jù)存儲按照 FAT32 文件管理方式存儲,其中涉及 USB 和 UFI 協(xié)議以及 FAT32 文件存儲格式。 控制數(shù)據(jù)用于在 USB 接入總線時對其進行配置,其他的驅動軟件可以根據(jù)具體的應用來選擇使用控制傳輸,這種數(shù)據(jù)傳輸不會丟失數(shù)據(jù)。 由設備自發(fā)產生的數(shù)據(jù)傳輸是中斷數(shù)據(jù)傳輸,這類數(shù)據(jù)傳輸可以由 USB 設備在任意時刻發(fā)起,而且 USB 總線以不低于設備說明的速率進行傳輸。 BULK_ONLY 和 UFI 協(xié)議 USB 設備分為 5 大類,即顯示器、通信設備、音頻設備、人機輸入和海量存儲。海量存儲類的規(guī)范中包括 4 個獨立的子規(guī)范,即 CBI 傳輸、BulkOnly 傳輸、 ATA 命令塊、 UFI 命令規(guī)范。 后兩個協(xié)議定義了存儲介質的操作命令, ATA 協(xié)議用于硬盤, UFI 協(xié)議則針對 USB 移動存儲, U盤讀寫器的設計遵循BulkOnly 傳輸協(xié)議和 UFI 命令規(guī)范。 BulkOnly 事務以主機向設備發(fā)送 CBW( Command Block Warp)包,并以建立相應的數(shù)據(jù)傳輸開始的,設備接收到 CBW 包,檢查并解釋它,試圖滿足主機的要求,并通過 CSW( Command State Wrap)包向主機返回狀態(tài)信 息。 CBW包結構如圖所示,各域含義如下: 圖 10 CBW包結構 1)命令塊包標識。 2)命令塊標記。 3)數(shù)據(jù)傳輸長度。 4)命令塊標旗。 5)邏輯單元號。 6) CBWCB 長度,定義了 CBWCB 的有效長度,合法值為 116。由設備執(zhí)行的命令,由 設備解釋。設備收到 CBW 包解析處理后將通過 B ulkIn 端點發(fā)送一個 CSW 包。 CSW 包的標記,表明這是一個 CSW 包,這個域的值為 53425355H。次域的值域 CBW 包的命令塊標記相同。實際數(shù)據(jù)傳輸量與 CBW 包中規(guī)定的數(shù)據(jù)傳輸長度的差值。 UFI 是針對 USB 移動存儲而制定的命令塊協(xié)議,它規(guī)定了主機和設備進行信息交換所使用的命令塊、數(shù)據(jù)和狀態(tài)信息, BulkOnly 傳輸協(xié)議定義了傳輸這些信息的方法,其中 UFI 命令塊是封裝在 CBW 包中的 CBWCB,設備通過讀取 CBWCB 確定具體要執(zhí)行何種操作命令(如讀命令),如何完成這個命令(如從閃存的哪個地址讀,需要讀取的長度),設備將命令的執(zhí)行狀態(tài)封裝成 CSW 返回給主機。指明所需要執(zhí)行的操作命令; 2)邏輯單元號。 3)邏輯塊地址。 4)傳輸長度,指明請求傳輸?shù)臄?shù)據(jù)量,通常以 扇區(qū) 作單位,但是有幾個命令是以 字節(jié) 作單位的,對于這些命令,傳輸長度域可以以不同的名字標識,若此域的值為 0,則表面沒有數(shù)據(jù)需要傳輸。 6)分配長度,指明主機已經分配的用于返回數(shù)據(jù)的最大字節(jié)長度,若此值為 0,則表明沒有數(shù)據(jù)需要傳輸。磁盤的管理是以扇區(qū)為單位的,而移動存儲設備則是以塊為單位的, FAT 將塊映射成扇區(qū) ,原理相同, FAT 將磁盤空間以一定數(shù)目的扇區(qū)為單位進行劃分,這樣的單位成為簇 。所以以簇為單位而不以扇區(qū)為單位進行磁盤的分配,是因為當區(qū)分容量較大時,采用 512 字節(jié)的扇區(qū)管理,會增加 FAT 表的項數(shù)和大文件存取的消耗,使文件系統(tǒng)效率不高。DBR 的第一部分是一個 x86 跳轉指令、廠商標志和操作系 統(tǒng)版本號,接下來的從偏移 0x0B 開始的是一段描述能夠使可執(zhí)行引導代碼找到相關參數(shù)的消息,通常稱之為 BPB。 BPB 中記錄了扇區(qū)大小、簇的扇區(qū)數(shù)、保留扇區(qū)數(shù)、 FAT 表大小和文件系統(tǒng)類型等重要參數(shù),用于文件的索引和定位計算。各模塊之間相互協(xié)調調用,共同完成對 U 盤文件的讀寫創(chuàng)建。 中斷處理模塊是在中斷喚醒后根據(jù)中斷類型進入不同功能子模塊的,也是整個軟件系統(tǒng)的核心部分。 串口或并口數(shù)據(jù)接收流程如圖所示。從最初的選題,開題到查資料、設計電路,編寫程序直到完成設計。 通過這次實踐,我了解了單片機讀寫 U 盤的用途及工作原理,熟悉了單片機讀 寫 U 盤的設計步驟,鍛煉了工程設計實踐能力,培養(yǎng)了自己獨立設計能力。 通過這次科研立項收獲很多,比如學會了查找相關資料相關標準,分析數(shù)據(jù),提高了自己的電路設計和程序設計的能力,懂得了許多經驗公式的獲得是前人不懈努力的結果。 但是這次科研立項也暴露出自己專業(yè)基礎的很多不足之處。這次科研立 項是對自己到現(xiàn)在為止大學所學的一次大檢閱,使我明白自己知識還很淺薄,雖然大學生活已經過了一大半,但是自己的求學之路還很長,以后更應該在有限的大學生活學習中,努力的學習好專業(yè)文化知識和動手能力,同時也要提高自己各方面的綜合素質,努力使自己成為一個對社會有所貢獻的人。即可實現(xiàn)單片機以字節(jié)對 U盤讀和寫的功能。 unsigned char idata TempBuffer[20]。 sbitLED_OUT = P0^4。 voidmDelaymS( unsigned char delay ) { unsigned char i, j, c。 i != 0。 j != 0。 for ( j = 200。 j ) c += 3。 SBUF = c。 } unsigned char mRecvByte( )/* 從 CH375模塊接收一個字節(jié)數(shù)據(jù) */ { unsigned char c。 c = SBUF。 return( c )。 mSendByte( SER_SYNC_CODE1 )。 mSendByte( cmd )。 RI = 0。 i != len。 } while ( 1 ) { status = mRecvByte()。 LED_OUT = 0。 do { [ j ] = mRecvByte( )。 } while ( i )。 } else if ( status == USB_INT_DISK_READ || status == USB_INT_DISK_WRITE || status == USB_INT_DISK_RETRY ) { break。 break。 } voidmStopIfError( unsigned char iError )/*錯誤檢測函數(shù) */ { unsigned char led。 led=0。1。 led^=1。 unsigned short count。 mDelaymS( 500 )。 LED_OUT = 0。 mDelaymS( 100 )。 SCON = 0x50。 TMOD = 0x20。/* , 4800bps */ TR1 = 1。 mStopIfError( i )。 mDelaymS( 100 )。 LED_OUT = 0。 i 5。 if ( ExecCommand( CMD_DiskReady, 0 ) == ERR_SUCCESS ) break。 i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN )。 if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) /* 找不到文件或者出錯 */ { } else { mStopIfError( i )。 i = ExecCommand( CMD_ByteRead, 1 )。 TempLength = 。 = 0。 mStopIfError( i )。 i = ExecCommand( CMD_FileCreate, MAX_PATH_LEN )。 pStr = Note:這個程序是以字節(jié)為單位進行 U盤文件讀寫的示例程序 ,首先從原文件中讀出前 20個字符 ,然后寫到本說明的后面: 。 while ( count ) { if ( count sizeof( ) ) i = count。 /* 數(shù)據(jù)較多 ,分多次寫入 */ count = i。 pStr += i。 i = ExecCommand( CMD_ByteWrite, 1+i )。 } memcpy( , TempBuffer, TempLength )。 /* 將原文件中的 20個字節(jié)的數(shù)據(jù)添加到新文件的末尾 */ i = ExecCommand( CMD_ByteWrite, 1+TempLength
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1