色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于U盤的單片機(jī)低功耗海量存儲系統(tǒng)

          基于U盤的單片機(jī)低功耗海量存儲系統(tǒng)

          作者: 時間:2009-05-21 來源:網(wǎng)絡(luò) 收藏

          過去,個人計算機(jī)的USB開發(fā),僅僅是對USB外設(shè)的開發(fā),USB核心驅(qū)動程序和USB主控制器驅(qū)動程序均由Windows等操作提供。而實(shí)現(xiàn)USB主機(jī)的功能,這兩部分驅(qū)動程序都必須設(shè)計。
          嵌入式USB主機(jī)的軟件設(shè)計思路[4]
          USB主機(jī)協(xié)議描述了USB軟件(核心驅(qū)動程序和主控制器驅(qū)動程序)的設(shè)計規(guī)范。根據(jù)該設(shè)計規(guī)范,嵌入式USB主機(jī)的軟件設(shè)計應(yīng)包括以下三部分:USB主機(jī)軟件部分,主要實(shí)現(xiàn)對USB外設(shè)的配置,讀取USB外設(shè)的信息,從而判斷該設(shè)備屬于USB的哪一類,并確定下一步選用哪個特定的程序加以支持;USB Mass Storage設(shè)備類協(xié)議軟件部分,實(shí)現(xiàn)USB Mass Storage類所規(guī)定的各種命令;USB用戶軟件部分,實(shí)現(xiàn)用FAT文件系統(tǒng)管理和數(shù)據(jù)。因此,U盤的模塊中的固件程序有著如圖1.3所示的積木式的結(jié)構(gòu)。

          本文引用地址:http://cafeforensic.com/article/173721.htm

          嵌入式USB主機(jī)固件程序
          1、與AT89C55WD的通信程序設(shè)計
          SL811與AT89C55WD的通信程序設(shè)計可以簡單地認(rèn)為是實(shí)現(xiàn)了PC的USB主機(jī)的主控制器驅(qū)動程序的部分功能。
          ①讀數(shù)據(jù)
          由于的外接總線的地址和數(shù)據(jù)信號是復(fù)用的,通過A0信號來區(qū)分地址和數(shù)據(jù)。因此,AT89C55WD讀取或?qū)懭?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/SL811HS">SL811HS內(nèi)存的時候首先發(fā)送地址,然后再發(fā)送數(shù)據(jù)。此外,由于SL811HS采用了地址自動增址的機(jī)制,因此,如果需要讀取或?qū)懭脒B續(xù)地址內(nèi)的數(shù)據(jù)時,只需要發(fā)送起始地址即可,以后每讀取或?qū)懭胍淮螖?shù)據(jù),SL811HS會自動將尋址地址加1。根據(jù)SL811HS的讀數(shù)據(jù)時序的要求,讀取數(shù)據(jù)前首先發(fā)送地址,再讀取數(shù)據(jù),程序如下:
          unsigned char SL811Read(unsigned char a)
          {
          unsigned char nVal;
          unsigned char xdata *exAddress;
          exAddress = SL811_ADDR_PORT; /*發(fā)送地址 */
          SL811_CS=0;
          *exAddress=a;
          exAddress=SL811_DATA_PORT; /*讀取數(shù)據(jù) */
          nVal = *exAddress;
          SL811_CS=1;
          return nVal;
          }
          ②寫數(shù)據(jù)
          與讀數(shù)據(jù)類似,AT89C55WD向SL811HS的內(nèi)存單元寫數(shù)據(jù)時,也必須首先發(fā)送地址,然后發(fā)送要寫入的數(shù)據(jù)。根據(jù)SL811HS的寫數(shù)據(jù)時序,函數(shù)實(shí)現(xiàn)程序如下:
          void SL811Write(unsigned char a, unsigned char d)
          {
          unsigned char xdata *exAddress;
          exAddress = SL811_ADDR_PORT; /*發(fā)送地址 */
          SL811_CS=0;
          *exAddress=a;
          exAddress=SL811_DATA_PORT; /*寫入數(shù)據(jù) */
          *exAddress = d;
          SL811_CS=1;
          }
          單片機(jī)AT89C55WD與SL811HS通信的實(shí)現(xiàn),是整個USB體系軟件的根基。在此基礎(chǔ)上即可實(shí)現(xiàn)USB主機(jī)協(xié)議的系統(tǒng)軟件、Mass Storage類協(xié)議軟件、FAT文件系統(tǒng)軟件。
          2、AT89C55WD的初始化
          單片機(jī)AT89C55WD的初始化程序安排在主程序main.c中,主要是完成定時器T0、外部中斷INT0、I/O口、串行通訊口以及SL811HS 的初始化,包括工作方式設(shè)定、初值設(shè)置、相關(guān)的數(shù)據(jù)緩沖器清零等,程序較為簡單,此處省略。
          3、人機(jī)接口程序
          人機(jī)接口程序?qū)碜灾鰿PU模塊的串口命令進(jìn)行相應(yīng)的處理,并將處理結(jié)果返回。因?yàn)橹鰿PU模塊需將采集的數(shù)據(jù)值通過模塊存入U盤,所以主CPU模塊的串口命令包括查詢U盤、創(chuàng)建文件、打開文件、寫文件、讀文件等,如同人們在PC機(jī)對U盤的操作。
          該段程序首先通過串口處理入口函數(shù),判別主CPU發(fā)出何種命令,再跳轉(zhuǎn)至功能操作子函數(shù)。U盤的功能操作子函數(shù)依據(jù)USB Mass Storage類的UFI命令,按照微軟的FAT文件規(guī)范進(jìn)行相應(yīng)文件操作。
          由于篇幅關(guān)系其它部分的實(shí)現(xiàn)本文不作具體介紹。
          結(jié)語
          總之,運(yùn)用單片機(jī)直接控制讀寫U盤,部分地實(shí)現(xiàn)PC上USB主機(jī)的USB核心驅(qū)動程序的功能,是嵌入式系統(tǒng)的軟件和硬件的集合,是一個全新的概念。U盤的單片機(jī)低存儲系統(tǒng)將使測控系統(tǒng)體積減小,更有利于野外作業(yè)或其它便攜性要求較高的場合,為儀器便攜化發(fā)展開拓了新的思路。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉