新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統的SD控制器設計實現

        嵌入式系統的SD控制器設計實現

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

        引言

        本文引用地址:http://www.104case.com/article/150261.htm

          在目前的掌上電腦等中,(securedigital)卡以其體積小和引腳數少的優勢,提供了比CF更好的外部設備擴展解決方案。因此,如何在中集成Host控制模塊,以及在操作里面其驅動程序,都是目前系統者要考慮的問題。

        本文所采用的開發平臺是基于SAMSUNG公司的S3C2410AARM微處理器,利用處理內部的控制模塊,采用GPIO擴展的方法SDHost

        使用S3C2410A的SD控制模塊,通過對GPIO功能的擴展來完成SD的檢測和寫保護的功能,實現SDHost相對比較靈活。在進行驅動程序開發過程中,對SD卡檢測進行防抖動處理是必要的,必須根據系統電路特性來確定合適的檢測時機,在驅動程序里面實現防抖動處理,保證整個系統的效率。

          1 SDHost硬件

          SCDA1A0100是ALPS公司生產的SD卡連接插槽,采用高可用的滑動觸點開關,能夠準確地檢測到卡插入的時機。

          通過小型化和薄型化,已經廣泛應用于PDA,數碼相機和個人電腦。當插槽有SD卡插入時,SD卡會觸動槽內的觸點開關,引起卡的檢測引腳和寫保護引腳的相應電平變化。

          Samsung的S3C2410A內部支持SDHost的控制模塊,有SDHost控制寄存器和可以用于SDHost的IO引腳,可用編程的方法對其功能進行選擇;但對于SD卡的檢測,寫保護和插槽的電源使能等功能沒有專門的引腳。在本文實現中,對于卡檢測、電源引腳,通過GPIO擴展來實現。部分引腳定義如表1所示。

          表1 S3C2410A部分GPIO引腳功能定義

          

        S3C2410A部分GPIO引腳功能定義

          S3C2410A的GPIO引腳分為GPA,GPB等8組,每組的IO引腳有控制寄存器(GPxCON),數據寄存器(GPxDAT),Pull-Up寄存器(GPxUP)進行控制。每根引腳所在的GPxCON里有對應位控制其功能,通過對GPxCON編程來控制其功能,某一時刻,該引腳只能使用一種功能。

          對于SD卡檢測引腳,需要配置成外部中斷源(EINTx),對應的EXTINT0,EXTINT1和EXTINT2寄存器控制該中斷源的觸發模式:低電平觸發,高電平觸發,前沿觸發,后沿觸發或是前后沿觸發。

          S3C2410A時鐘控制邏輯有兩個鎖相環路PLL(phaselockedloop):UPLL專用于USB時鐘;MPLL能夠產生系統要求的3種時鐘信號:FCLK供CPU內核使用,HCLK供系統總線使用,PCLK供外部總線使用。通過對MPLL控制寄存器MPLLCON配置,可以產生需要的時鐘頻率。

          在時鐘控制邏輯里,寄存器CLKCON用來控制如USB,LCD,UART,SD等接口模塊的時鐘使能。其中bit[9]用于控制SD/MMC接口的時鐘。SDHost控制器不能直接使用PCLK信號。正常工作模式下,FCLK為266MHz,PCLK為66.5MHz,而SD卡的最高時鐘為25MHz,MMC卡最高為20MHz。通過對SDIPRE寄存器的bit[0-7]設置可以對PCLK進行分頻,選擇合適SD/MMC卡的工作頻率。分頻公式為:

          Clockrate=PCLK/2/(SDIPRE[0-7]+1)

          2 驅動程序的實現

          2.1 驅動程序體系結構

          我們為開發平臺上運行的WindowsCE系統開發了SDHost控制器的驅動程序。WindowsCE下,驅動程序是用戶態的DLL,這些DLL向內核提供一些接口函數,這樣設備管理模塊就可以通過這些函數與具體的硬件設備進行通信。

          WindowsCE的驅動程序模型主要有兩種類型:流式接口驅動和本地設備驅動。流式設備驅動向上層提供統一的流式設備接口,而本地設備驅動可根據具體設備要求提供相應接口。

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

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄龙县| 晴隆县| 冀州市| 漳平市| 望奎县| 宜君县| 海城市| 天门市| 思南县| 思茅市| 石屏县| 广宗县| 孟连| 保亭| 万荣县| 彰化市| 新巴尔虎左旗| 鲜城| 大方县| 原阳县| 抚州市| 苏尼特右旗| 新疆| 济阳县| 鹿邑县| 廊坊市| 资中县| 宁化县| 乃东县| 六安市| 冕宁县| 博客| 获嘉县| 会宁县| 东宁县| 临泉县| 井研县| 清水县| 美姑县| 兴仁县| 全州县|