新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)的SD控制器設(shè)計(jì)實(shí)現(xiàn)

嵌入式系統(tǒng)的SD控制器設(shè)計(jì)實(shí)現(xiàn)

作者: 時(shí)間:2011-09-06 來(lái)源:網(wǎng)絡(luò) 收藏
3 卡檢測(cè)與防抖動(dòng)

本文引用地址:http://m.butianyuan.cn/article/150261.htm

  初始化時(shí),_nCD檢測(cè)引腳被設(shè)置為上升沿和下降沿觸發(fā),因此引腳電平發(fā)生變化時(shí),都會(huì)有中斷產(chǎn)生。當(dāng)硬件產(chǎn)生中斷時(shí),進(jìn)入核心ISR,對(duì)_nCD進(jìn)行檢測(cè),返回相應(yīng)的中斷標(biāo)識(shí)碼,對(duì)于是插入還是拔出,則由驅(qū)動(dòng)程序的IST來(lái)處理。

  由于SD卡插槽采用的是機(jī)械式開(kāi)關(guān),在插拔卡的時(shí)候,機(jī)械開(kāi)關(guān)斷開(kāi)、閉合時(shí)會(huì)有抖動(dòng),導(dǎo)致SD卡檢測(cè)引腳的電平不穩(wěn)定,從而有可能引起對(duì)卡的狀態(tài)的誤判。這樣會(huì)導(dǎo)致加載上層驅(qū)動(dòng),初始化失敗造成宕機(jī)。為了使每次插拔只響應(yīng)一次,必須要采用相應(yīng)的方法來(lái)防止抖動(dòng),避開(kāi)按鍵按下的抖動(dòng)時(shí)間。

  在驅(qū)動(dòng)程序IST里采用延時(shí)采樣的方法來(lái)避免抖動(dòng),同時(shí)也嘗試了多次采樣的檢測(cè)方法來(lái)避開(kāi)用戶按鍵的抖動(dòng)時(shí)間。

  延時(shí)采樣是IST在收到SD卡檢測(cè)事件以后,并不是立刻進(jìn)行引腳信號(hào)判斷,而是延時(shí)一段時(shí)間采樣,延遲時(shí)間要根據(jù)系統(tǒng)電路特性而定,然后檢測(cè)引腳信號(hào),判斷插槽的狀態(tài)是卡插入還是拔出。多次采樣方法是IST在收到SD卡檢測(cè)事件以后,要對(duì)引腳進(jìn)行多次等間隔采樣,根據(jù)采樣出的多數(shù)電平信號(hào)的值來(lái)決定插槽卡的狀態(tài)。多次采樣的方法可以有更短的響應(yīng)時(shí)間,當(dāng)采樣出的電平信號(hào)多數(shù)值不能決定卡的狀態(tài)時(shí),需要進(jìn)行重新采樣判斷。

  對(duì)于延時(shí)采樣的防抖動(dòng)方法,必須考慮到的效率。

  ISR運(yùn)行于系統(tǒng)核心態(tài),它的延時(shí)會(huì)影響整個(gè)系統(tǒng),導(dǎo)致用戶的輸入響應(yīng)時(shí)間過(guò)長(zhǎng),造成整體性能的下降。而WindowsCE的驅(qū)動(dòng)程序是用戶態(tài)的DLL,作為用戶進(jìn)程來(lái)調(diào)度,因此在SDHost的驅(qū)動(dòng)程序里防抖動(dòng),可保證系統(tǒng)整體性能不下降。

  對(duì)于上述兩種防抖動(dòng)方法,我們進(jìn)行了連續(xù)插拔的測(cè)試,結(jié)果如圖3所示。測(cè)試結(jié)果表明,這兩種方法都取得了較好的效果,基本上解決了SD卡檢測(cè)的抖動(dòng)問(wèn)題。

  

SD卡插拔宕機(jī)次數(shù)測(cè)試

  圖3 SD卡插拔宕機(jī)次數(shù)測(cè)試

  4 結(jié)語(yǔ)

  本文介紹的SDHost已經(jīng)應(yīng)用在工程實(shí)踐中,結(jié)果表明是靈活有效的,防抖動(dòng)對(duì)于類(lèi)似的也具有一定的借鑒意義。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉