• 
    

    
    

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

      基于AT89C51SND1C單片機MP3播放器的U盤模塊設計

      2014-03-14 01:20:36謝冬季繆賢浩
      湖北理工學院學報 2014年6期
      關鍵詞:程序模塊存儲芯片U盤

      謝冬季,繆賢浩

      (湖北理工學院 計算機學院,湖北 黃石 435003)

      隨著電子工業(yè)的蓬勃發(fā)展,計算機技術也逐步快速發(fā)展起來,尤其是微型單片機技術的發(fā)展,使人們?nèi)粘I罡臃奖?大到工業(yè)控制,小到家用電器都有單片機的影子[1],MP3播放器也不例外。采用AT89C51SND1C單片機和存儲芯片K9F5608設計MP3播放器的U盤模塊,后期可以根據(jù)需要進一步擴展MP3播放器模塊。本設計是將USB接口與電腦連接,通過電腦完成K9F5608存儲芯片的讀寫操作,最終實現(xiàn)U盤的存儲功能。

      1 硬件系統(tǒng)設計

      硬件系統(tǒng)由AT89C51SND1C單片機、Flash K9F5608存儲芯片、RS232調(diào)試接口、USB接口和電源穩(wěn)壓升壓電路組成。AT89C51SND1C芯片包括MP3音頻解碼器、音頻輸出接口、通用串行總線接口、外插閃存卡接口、IDE/ATAH接口、串行外設接口、雙線控制器、A/D控制器接口等模塊[2]。其中AT89C51SND1C單片機包含了通用串行總線接口模塊,因此大大簡化了U盤模塊設計的難度,為后期擴展MP3功能提供了條件;而Flash K9F5608存儲芯片是非線性Nand Flash芯片,只有8位復位線,硬件接口比較簡單,因此減小了電路設計的復雜度。綜合考慮以上因素,本設計選用上述硬件系統(tǒng)實現(xiàn)存儲模塊的功能[3]。

      主控電路如圖1所示。主控電路實現(xiàn)控制存儲芯片的讀寫以及USB通信。其中USBD+、USBD-引腳是USB接口的數(shù)據(jù)線,AD0~AD7引腳與存儲芯片IO口相連。

      圖1 主控電路

      存儲電路如圖2所示。圖2中AD0到AD7為8位地址復用線,可分時傳輸?shù)刂罚瑫r其也是數(shù)據(jù)傳輸線路,與AT89C51SND1C控制器中的AD0~AD7 相連接。FCLE為指令鎖存允許線,F(xiàn)ALE為地址鎖存允許線,F(xiàn)CE為芯片啟用線,nRD為讀激活線,nWR為寫激活線。

      圖2 存儲電路

      2 軟件系統(tǒng)設計

      軟件系統(tǒng)共分為4個模塊:主控程序模塊、UART通信模塊、U盤控制程序模塊和Flash讀寫模塊。

      2.1 主控程序模塊

      主控程序模塊是通過檢測USB_INS(P3.4) 的電平來決定是否執(zhí)行U盤功能以及是否進行對U盤程序的初始化工作,之后開始循環(huán)執(zhí)行對應的功能。主控程序流程圖如圖3所示。

      圖3 主控程序流程圖

      2.2 UART通信模塊

      UART通信模塊是常規(guī)的經(jīng)典設計模塊,主要用于程序調(diào)試時幫助設計者了解程序的運行狀態(tài)[4]。

      2.3 U盤控制程序模塊

      USB存儲的工作流程如下:插入U盤后,USB主機發(fā)出USB標準請求,USB設置相應的返回設備描述符等,主機獲取設備相關信息后開始配置,U盤被主機確定為Bulk-Only的存儲設備,再進入Bulk-Only傳輸模式,U盤控制程序流程圖如圖4所示。U盤控制程序具體實現(xiàn)步驟如下:

      1)首先對單片機的USB硬件進行設置,其中包括時鐘設置和使能USB部件設置。然后設置2個批量傳輸端點,對FIFO緩沖區(qū)進行復位操作,允許相應端點中斷。

      2)對AT89C51SND1C單片機的USBADDR寄存器中的FEN位初始化置為1,允許其對默認地址的配置過程進行響應。開始進入配置階段,配置階段即主機向設備索取各種描述符的過程。

      3)當設備收到主機的請求后,會觸發(fā)端點中斷寄存器中的端點0對應的位,此時讀取端點0的數(shù)據(jù)。接著對照USB標準設備請求的數(shù)據(jù)格式進行識別,轉向相應的請求處理函數(shù)。

      4)USB配置完成后,即可開始處理Bulk-Only傳輸中的SCSI-2命令解析。Bulk傳輸方式下有3種類型的數(shù)據(jù)在USB和設備之間傳送,分別是命令塊包、命令狀態(tài)包和普通數(shù)據(jù)包。同時主機會向設備發(fā)出Inquiry、Read Capacity、Mode Sense這幾個命令來告知主機設備存儲器的具體情況,以創(chuàng)建一個可移動的存儲設備。程序中要根據(jù)SCSI-2命令集中的幾個命令返回參數(shù),例如需要使用2個連續(xù)的奇偶Block作為緩沖區(qū)等,其中填充了和Flash邏輯結構相關的參數(shù)。

      圖4 U盤控制程序流程圖

      2.4 Flash讀寫模塊

      對Flash芯片的讀過程是設置UEPNUM=0×01,即處理Bulk-In端點請求,需要注意USB每次可傳輸512 B的數(shù)據(jù),但端點1只能傳送64 B,所以共需要8次端點傳輸才能完成1次USB傳輸任務。數(shù)據(jù)傳輸完畢后返回CSW數(shù)據(jù)結構。Flash芯片寫與讀操作的不同在于,寫Flash芯片必須先擦除再編程,并且每次至少擦除1個塊,所以在程序中需要使用2個連續(xù)的奇偶Block作為緩沖區(qū)。對U盤寫模塊的設計可以分為如下幾個步驟[5]:

      1)指定2個連續(xù)的奇偶Block作為緩沖區(qū)的塊擦除。

      2)從命令塊包中的命令塊獲取起始邏輯塊號和長度,用來計算第M個塊內(nèi)的第N個頁號。

      3)指定端口2,如果N>0,即將第M個塊中從0到N-1的所有頁號都復制到緩沖區(qū)中。

      4)計算M和N。如果數(shù)據(jù)長度為0,則寫U盤過程完畢。若數(shù)據(jù)長度不為0,則從USB端點接收數(shù)據(jù)同時寫入緩沖區(qū)的第N個頁,數(shù)據(jù)長度減1。

      5)如果緩沖區(qū)沒有寫滿,則起始邏輯塊加1,重新計算M和N;如果緩沖區(qū)已寫滿,即將第M個塊中從第N+1到本塊的最后一頁都復制到對應緩沖區(qū)中,同時擦除第M個Block,將緩沖區(qū)所有頁復制到第M個塊中,然后返回步驟4繼續(xù)進行計算。通過以上幾個步驟即可完成基于AT89C51SND1C單片機MP3播放器的U盤模塊設計。

      3 結束語

      利用AT89C51SND1C單片機和Flash K9F5608存儲芯片設計MP3播放器的U盤模塊,可以明顯降低開發(fā)成本和提高開發(fā)效率。該電路設計實現(xiàn)快捷方便,軟件實現(xiàn)結構清晰,可以作為U盤設計開發(fā)的首選方案之一。

      參考文獻

      [1] 郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009:21-31.

      [2] 鄭鋒.51單片機典型應用開發(fā)范例大全[M].北京:中國鐵道出版社,2011:22-26.

      [3] 鄒彥.DSP原理以及應用[M].北京:電子工業(yè)出版社,2012:6-15.

      [4] 胡漢才.單片機原理及系統(tǒng)設計[M].北京:清華大學出版社,2002:359-442.

      [5] 張景璐,于京,馬澤民.51單片機項目教程[M].北京:人民郵電出版社,2010:121-139.

      猜你喜歡
      程序模塊存儲芯片U盤
      基于信息檢索的軟件缺陷定位方法綜述*
      軟件學報(2021年2期)2021-03-06 09:28:36
      采用U盤文件冗余方案實現(xiàn)TSP系統(tǒng)的可靠裝載
      樂高MINDSTORMSEV3軟件程序模塊開發(fā)
      中國存儲芯片打破韓美日壟斷局面邁出堅實一步
      多通道NAND Flash存儲芯片控制器的設計與實現(xiàn)
      無線電工程(2018年9期)2018-08-23 02:11:20
      基于Web網(wǎng)絡的環(huán)境信息通信系統(tǒng)設計
      ADSP TS201S Link口在多DSP系統(tǒng)中的應用
      iPhone換閃存加容量這事靠譜嗎?
      電腦迷(2015年12期)2015-04-29 23:22:51
      武漢新芯3D NAND將成為中國存儲芯片產(chǎn)業(yè)彎道超車的切入點
      電子世界(2015年24期)2015-01-16 03:19:38
      U盤“鬧肚子”
      少年科學(2014年10期)2014-11-14 07:43:02
      夹江县| 双峰县| 南岸区| 漠河县| 揭阳市| 分宜县| 富川| 银川市| 昌平区| 饶平县| 南充市| 竹溪县| 兴安县| 曲靖市| 久治县| 车险| 台湾省| 屏东市| 大同县| 长兴县| 临沂市| 于都县| 大埔县| 惠来县| 白城市| 明溪县| 临朐县| 德州市| 潮安县| 小金县| 和政县| 宁河县| 海晏县| 陇川县| 盈江县| 水城县| 新河县| 博湖县| 大渡口区| 临邑县| 麦盖提县|