<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > CF卡在DM642基便攜式數(shù)字視頻系統(tǒng)中的應(yīng)用

          CF卡在DM642基便攜式數(shù)字視頻系統(tǒng)中的應(yīng)用

          作者: 時(shí)間:2009-12-16 來(lái)源:網(wǎng)絡(luò) 收藏

          寄存器0用于讀寫(xiě)數(shù)據(jù),寄存器1在讀操作時(shí)是錯(cuò)誤寄存器,存放錯(cuò)誤信息,寫(xiě)的時(shí)候是特征寄存器。寄存器2用于存放讀寫(xiě)扇區(qū)的數(shù)目。寄存器3~6用于存放讀寫(xiě)扇區(qū)的地址。卡的扇區(qū)尋址有兩種方式:物理尋址方式(Cylinder/Head/Sector,CHS)和邏輯尋址方式(Logical Block Addressing,LBA)。CHS是扇區(qū)對(duì)應(yīng)的具體的柱面、磁頭和扇區(qū)的地址,LBA的地址則在邏輯上是連續(xù)的,兩種尋址方式的轉(zhuǎn)換關(guān)系為:LBA地址=(柱面號(hào)×磁頭數(shù)+磁頭號(hào))×扇區(qū)數(shù)+扇區(qū)號(hào)一1。本文選擇LBA的線性尋址方式。
          寄存器7在讀和寫(xiě)時(shí)具有不同的意義。讀操作時(shí)是狀態(tài)寄存器,存放卡的狀態(tài)信息,寫(xiě)的時(shí)候是命令寄存器,用于設(shè)置命令,完成相應(yīng)的操作。
          卡讀寫(xiě)程序之前要初始化DSP和,初始化GPIO,將的CE2空間設(shè)置為8位異步接口,將/REG配置為高電平,同時(shí)設(shè)置為8位數(shù)據(jù)接口。
          在讀寫(xiě)扇區(qū)時(shí),首先要設(shè)置好起始扇區(qū)的LBA地址和要讀寫(xiě)的扇區(qū)數(shù)目,然后再設(shè)置命令寄存器,讀取數(shù)據(jù)設(shè)置為20H,寫(xiě)入數(shù)據(jù)設(shè)置為30H,寫(xiě)完后讀取狀態(tài)寄存器,只有當(dāng)狀態(tài)寄存器為“58H”時(shí)才能開(kāi)始讀寫(xiě)操作,否則繼續(xù)查詢狀態(tài)。由于數(shù)據(jù)接口為8位,這樣對(duì)一個(gè)扇區(qū)就需要讀或?qū)?12次數(shù)據(jù)寄存器即可。之后還要讀取狀態(tài)寄存器看是否為“50H”,判斷的操作是否完成,若完成,則退出本次操作,否則繼續(xù)查詢直至完成。
          CF卡寫(xiě)一個(gè)扇區(qū)函數(shù)部分源碼如下:


          讀寫(xiě)多個(gè)扇區(qū)的方法與此類似,設(shè)置好扇區(qū)的數(shù)目和相應(yīng)的讀寫(xiě)命令即可,一般說(shuō)來(lái)直接設(shè)置循環(huán)讀寫(xiě)比調(diào)用子程序的運(yùn)行效率要高,因?yàn)樗恍枰x寫(xiě)一次扇區(qū)的起始地址即可。
          2.3 CF卡的
          本系統(tǒng)中CF卡上存儲(chǔ)的是mpeg2格式的數(shù)據(jù),雖然的長(zhǎng)度不確定,但是扇區(qū)地址用LBA尋址的話都是4字節(jié)。在本設(shè)計(jì)中CF卡的存儲(chǔ)空間可如下進(jìn)行分配:第一個(gè)扇區(qū)存放的索引信息;從第二個(gè)扇區(qū)開(kāi)始存放圖像數(shù)據(jù)。
          其中第一個(gè)扇區(qū)512個(gè)字節(jié)存放的數(shù)據(jù)格式如下:



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();