數據緩沖區(qū)的劃分ISP1362內部有4KB的數據緩沖區(qū),可劃分為4部分以供USB的四種傳輸方式使用。其中同步傳輸為雙緩沖,占用ISTL0和ISTL1,一般二者大小是一樣的。中斷傳輸占用INTL。控制傳輸和塊傳輸共用ATL。分別通過HcISTLBufferSize、HcINTLBufferSize和HcATLBufferSize來設置ISTL、INTL和ATL的大小。中斷的設定這里的中斷并不是指USB中的中斷傳輸,而是傳統意義上的硬件中斷。如果不使用中斷,則應該將其關閉,具體操作為將HcuPIn
數據緩沖區(qū)的劃分
ISP1362內部有4KB的數據緩沖區(qū),可劃分為4部分以供
USB的四種傳輸方式使用。其中同步傳輸為雙緩沖,占用ISTL0和ISTL1,一般二者大小是一樣的。中斷傳輸占用INTL。控制傳輸和塊傳輸共用ATL。分別通過HcISTLBufferSize 、HcINTLBufferSize和HcATLBufferSize 來設置ISTL、INTL和ATL的大小。
中斷的設定
這里的中斷并不是指USB中的中斷傳輸,而是傳統意義上的硬件中斷。如果不使用中斷,則應該將其關閉,具體操作為將HcuPInterruptEnable置0,而 HcInterruptDisable中所有位都置1。
ATL 緩沖的設定
控制傳輸是任何USB設備都有的
數據傳輸類型,而在ISP1362中,它占用的是ATL緩沖區(qū),因此對ATL 緩沖的設定是必不可少的。具體的操作是設置以下幾個寄存器:HcATLPTDSkipMap、HcATLLastPTD、HcATLBlkSize、HcATLPTDD
oneThresholdCount和HcATLPTDDoneThresholdTimeOut。
其它相關寄存器
ISP1362還有一些關于硬件的設置,比如端口設定以及過流保護等。除此之外,還需要確定一個幀所發(fā)送的最大數據量等信息,這些操作通過設定HcHardwareConfiguration和HcFmInterval兩個寄存器完成。
讀取U盤
U盤在使用USB傳輸時使用的是塊傳輸方式,操作相對比較復雜。除了最基本的USB協議之外,還需要實現許多其它相關協議,比如Mass Storage、Bulk-Only、SCSI-2、UFI等。但對USB接口芯片ISP1362而言,需要完成的僅是按照協議規(guī)定進行數據的傳送。
相關描述符和設置
U盤一般使用Mass Storage協議進行通信。然而在使用Mass Storage協議通信之前,應首先關注傳輸協議和U盤的端點描述符。
Mass Storage中的傳輸協議常用Bulk_Only,然而在這種傳輸方式下又可分
多種指令集,而U盤常用SCSI指令集。 Bulk_Only的傳輸方式在通信時應首先讀取端點描述符來獲取Bulk_In和Bulk_Out這兩個端點號,之后才能進行USB的正常通信。
FAT文件系統
由于現在U盤的容量普遍較大,對U盤的操作往往都是按塊來進行的,其大小一般均為
512B。但實際U盤上的數據是以文件系統的方式來存儲的,目前U盤常用的文件系統有FAT1**FAT32。而這兩種文件系統在很多內容方面都是相同的,因此,在實際訪問中可以對其簡單的區(qū)分,然后分別進行不同的操作,就能實現對不同文件系統的U盤進行訪問,提高通用性。
播放
MP3文件
播放一個MP3文件需要經過以下幾個環(huán)節(jié):解析U盤的文件系統,獲取MP3文件的信息,從U盤中讀取指定的MP3文件,將文件中的數據送至AT89C51SND1C內嵌的MP3解碼器,解碼后的數據經音頻輸出接口調整格式后輸出兩個聲道的串行數據,再經過
DAC芯片CS4330將數字信號轉換為模擬信號,最后經集成運放
MC33202將信號放大輸出。