新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Intel Xscale PXA255嵌入式處理器與CF卡的

        Intel Xscale PXA255嵌入式處理器與CF卡的

        作者: 時間:2011-04-09 來源:網絡 收藏

        本設計僅采用一個卡插槽,使用Socket0的I/O地址空間,而且卡采用True IDE模式。則訪問地址空間為0x20000000-0x24000000時,PC Card/卡控制器將同時驅動信號SA_A25:0、nPREG和nPSKTSEL,并使用nPIOW和nPIOR信號作為讀寫控制信號。True IDE模式支持8位存取,也支持16位存取。

        在True IDE模式下,某些信號有特殊的含義,必須采用True IDE模式下特有的設置方法。如表1所示,nCE1是任務文件寄存器片選信號,低電平有效;nCE2是交替狀態(Alternate Status)寄存器和設備控制(Device Control)寄存器片選信號,也是低電平有效。因為實際操作中,極少使用交替狀態寄存器和設備控制寄存器,所以對CF卡的操作實際就是對任務文件寄存器的操作。因此,一般設置nCE1=0,nCE2=1。實現方法:在CPLD中設置nCE1=SA_A4,nCE2=not SA_A4。這樣設置是有根據的。表1是True IDE模式下I/O編碼表。主機操作CF卡時,系統僅使用地址總線A2:0,用于選擇組成任務文件寄存器的8個寄存器之一。而地址總線A10:3由主機接地。因此,nCE1=SA_A4即nCE1=0;nCE2=not SA_A4即nCE2=1。表1中,-CE1=0時,對應的8個寄存器統稱為任務文件寄存器。

        需要注意的是,在True IDE模式下,nOE不是讀使能信號,而是CF卡True IED模式的使能信號。CF卡上電時,若nOE(PIN9)為0,則CF卡自動進入True IDE模式;若nOE=1則進入PC Card 模式。當電源一直接通時,熱拔插CF卡將會使其從原來的True IDE模式重新配置成PC Card模式。因此,熱插拔過程中,為了使CF卡工作在True IDE模式,需要在CF卡加電啟動的時侯,同時將nOE信號接地。實現的方法:在CPLD中將nOE置0。True IDE模式下,nWE也不用作寫使能信號,而應該由主機將之接地。處理方法:在CPLD中將其只置為1。

        還有一點需要注意的是: Reset信號在True IDE 模式下低電平有效,而在其它模式下高電平有效。將Reset信號接到的系統復位信號Reset_SYS。

        True IDE模式下,與CF卡的硬件接口電路如圖3所示。

        在圖3中,D15:0為數據總線。RDnWR信號用來控制數據總線的方向(系統處于讀狀態時,RDnWR=1;系統處于寫狀態時,RDnWR=0)。nPSKTSEL信號用作數據總線的傳輸使能。SA_A10:0(CF_A10:0)為地址總線。在True IDE 模式下,CF卡的PSKTSEL引腳是主從(Master/Slave)選擇信號:當PSKTSEL懸空時,CF卡是Slave設備;當PSKTSEL=0時,CF卡是Master設備。設計僅采用一個CF卡插槽,所以將PSKTSEL接地。在TRUE IDE模式下,REG信號沒有用處,應該接電源VCC。IREQ是中斷請求信號。利用IREQ信號,可以判斷CF卡是否處于讀寫忙狀態,對CF卡進行讀寫之前利用此引腳判斷CF卡是否空閑。nWAIT信號用于指示讀寫操作正在進行,請求等待。

        3. CF卡熱插拔、即插即用功能的實現

        在自身設計上,CF卡注重軟硬件兩方面的配合。軟硬件的協同設計可以實現CF卡熱插拔、即插即用的功能。

        一是硬件提供判斷條件。CF卡硬件電路提供了兩個用來檢測CF卡是否存在的引腳(nCD1和nCD2)。nCD1和nCD2的有效電平均為低電平,當主機檢測到與其相連的nCD1和nCD2引腳同時為低電平時,可判斷出CF卡與主機相連;當主機檢測到與其相連的nCD1和nCD2兩個引腳不同時為低電平,則可判斷出CF卡未與主機相連。

        表1:True IDE模式I/O編碼

        二是軟件。首先定義全局變量(如:Cf_IsInsert),用于記錄CF卡是否與主機相連:當Cf_IsInsert為0時表示CF卡未與主機相連;當Cf_IsInsert為1時表示CF卡與主機相連。然后,在每次操作CF卡之前都先檢測CF卡的nCD1和nCD2引腳。當檢測到nCD1和nCD2引腳同時為低電平(有卡插入)且Cf_IsInsert為0時,復位CF卡,重新檢測CF卡的FAT表,統計還有多少剩余空間可以分配。檢測完畢后,置變量Cf_IsInsert為1,然后設置MECR寄存器CIT比特位。當檢測到nCD1和nCD2引腳同時為低電平,且Cf_IsInsert為1時,設置MECR寄存器CIT比特位,繼續CF卡的正常操作。當檢測到nCD1和nCD2引腳為高時(無卡插入),停止CF卡操作,清除MECR寄存器CIT比特位,置變量Cf_IsInsert為0。

        讀/寫CF卡扇區程序的編寫方法

        CF卡的讀寫是以一個扇區為基本單位的。在讀寫一個扇區之前必須先指明當前需要讀寫的柱面、頭和扇區或LBA地址,然后發送讀寫命令。一個扇區的512字節需要一次性連續讀出或者寫入。主機讀/寫CF卡上一個文件的過程是這樣的:
        1.CF卡初始化。CF卡上電復位和統計剩余空間的大小。
        2.CF卡內部控制器向CF卡某些寄存器填寫必要的信息。如向扇區號寄存器填寫讀寫數據的起始扇區號或LBA地址、向扇區數寄存器填寫讀寫數據所占的扇區個數、設置CF卡的扇區尋址方式等。
        3.向CF卡的命令寄存器寫入操作CF卡的命令。如寫操作向CF卡的命令寄存器寫入30H,讀操作向CF卡的命令寄存器寫入20H。
        4.CF卡有數據傳輸請求之后,主機讀寫CF卡的數據寄存器,從而實現從CF卡數據緩沖讀出數據或向CF卡數據緩沖寫入數據。
        5.在執行以上操作的過程中,每執行一步,都應該檢測狀態寄存器,確定CF卡的當前狀態,從而確定下一步應該執行什么操作(參考狀態寄存器的BIT位的意義,編寫檢測代碼)。

        本文小結

        前面詳細介紹了CF卡的工作原理、PXA255處理器的PC Card/CF卡控制器的特性,給出了基于PXA255處理器的導航設備存儲系統的一種實現方案。目前,該設計已經在印刷電路板上實現,運行穩定可靠。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 奉化市| 从江县| 井研县| 罗平县| 夏邑县| 大关县| 桃江县| 赫章县| 宜君县| 新郑市| 徐州市| 文成县| 平山县| 凤山县| 登封市| 礼泉县| 平潭县| 库车县| 仪征市| 山东| 南靖县| 贵德县| 蕲春县| 神木县| 大庆市| 桂林市| 化隆| 拜泉县| 陆河县| 疏附县| 安顺市| 察雅县| 眉山市| 潜江市| 集贤县| 乌苏市| 清涧县| 湘阴县| 平阴县| 乡宁县| 江津市|