国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

軟開關設計:典型電路及軟件代碼

發布時間:2015-6-23 09:48    發布者:designapp
關鍵詞: 開關設計
何為軟開關?軟開關是相對于硬開關而言。硬開關顧名思義,電源的開斷完全取決于硬件,是物理層上的開合;而軟開關,則是必須借助于軟件,準確地說是借助軟件來進行關閉。兩者各有優劣。前者因為是物理層的操作,可以講電源和系統部分完全阻隔,所以關閉時漏電流非常小,但缺陷是關閉時無法給予軟件任何通知信息;而后者的關閉只是電平的操作,關閉后無法將電源部分與系統部分隔離,因此相對而言,漏電流會比較大,但優點在于,關閉是由軟件進行控制,所以能在關閉前做好相應的準備工作。正是因為此特性,故電子設備來說采用硬開關的設計非常少,更多的是軟開關。舉個簡單的例子,我們常用的家用電腦就是軟開關設計。試想加入電腦采用的是硬開關的設計,會是什么結果?結果估計就如同我們在正常使用電腦時,突然將插頭給拔掉一樣。這樣,對于電腦的設備,特別是硬盤而言,所造成的損害是不可估量的。

軟開關設計 硬件篇
   
    對于軟開關而言,在我們按下那一瞬間,因為還沒有給CPU上電,不存在任何程序執行的可能,所以注定“打開”這一個操作只能用硬件完成。當系統跑起來以后,此時軟件已經開始運作,我們就能通過對GPIO進行操作來關閉設備。綜上所述,如果要實現軟開關,我們必須具備兩個GPIO口。一個為DETECT_KEY,作為輸入,用來檢測按鍵是否按下;另一個為GPIO_SHDW,作為輸出,用來控制電源的閉合。
   
    現在,我們來看一個典型的軟開關電路(圖一,以下講解都以電路圖的標號為指代):
   



    該電路很簡單,對外的節點有四處,分別如下:
   
    PWR_ON:用來控制系統的電源。當其為high時,系統正常供電。
   
    VDD33D:直接接3.3V電壓
   
    GPIO_SHDW:當其為low時關閉系統電源
   
    DETECT_KEY:檢測按鍵S1的狀態。
   
    我們現在根據開機到關機的過程來一步一步來分析該電路:
   
    1.未開機,S1未按下。
   
     此時GPIO_SHDN為low,直接控制了Q1和Q2的控制腳(PIN1),令VDD33D的電壓無法輸出到POW_ON端。而D1因為S1未按下,該二極管也處于阻隔狀態,S1端的VDD33D也無法輸送到POW_ON端。故整個系統還處于關閉狀態。
   
   
    2.S1按下,開機。
   
     S1按下,二極管D1導通,S1端的VDD33D電壓輸送到PWR_ON端,系統開始啟動。系統啟動時,將GPIO_SHDN置high。此時PWR_ON已經輸入了R2,R3端的VDD33D電壓,D1兩邊電壓基本上處于平衡狀態,D1相當于斷開,S1端的電壓無法加載到PWR_ON。
   
    3.S1放開,系統正常運行。
   
     S1放開,D1不可能再導通,而此時電壓已經主要是從R2,R3端的VDD3D輸入,令PWR_ON一直保持high狀態,故系統一直處于正常運行狀態。
   
    4.S1按下,系統正常運行。
   
     因為S1按下,導致Q3導通,拉低R6端下方的電壓,此時DETECT_KEY這個GPIO口檢測到電平為low,軟件開始進入計時狀態。
   
    5.S1放開。
   
     因為S1已經放開,Q3不再導通,R6下端電壓恢復,DETECT_KEY檢測到電平為high。此時軟件和閾值做比較,如果超過預定的閾值,則關閉系統;否則,將本次操作忽略。在這里之所以和閾值進行比較,是出自于防抖的需要。因為在實際使用中,可能R6端會有微小的極為短暫的電壓降,如果軟件不設置閾值,檢測到該電壓降就會關閉,這對于產品而言是不允許的。
        

軟開關設計 軟件篇

相對于硬件來說,軟開關的軟件代碼更為簡單,只需要檢測DETECT_KEY即可。該功能的實現主要是通過GPIO,而wince并沒有對GPIO做上層定義,并且每款CPU的GPIO的操作方式又各自不同,所以本文無法給出一個完整可用的代碼,只能用偽代碼作為示例講解。雖然是偽代碼,但對于了解其流程還是有一定的意義。
  
void Power_On()
{
  ...

  //設置GPIO_SHDN為high
  SetGPIO_HIGH(GPIO_SHDN);

  ...
}

DWORD PWR_IntrThread(PVOID pParam)
{
  ....

  //使能中斷
  EnableInterrupt();

  //初始化中斷
  InterruptInitialize(btnSysIntr, hNotifyEvent, 0, 0)

  while(TRUE)
  {
    //等待中斷事件
   dwRet = WaitForSingleObject(hNotifyEvent, INFINITE);
   
   if(dwRet == WAIT_OBJECT_0)
   {
     //中斷處理完畢,讓中斷再次進入處理
    InterruptDone(btnSysIntr);
   
    //再次等待中斷處理事件
    dwRet = WaitForSingleObject(hNotifyEvent, 1000);
   
    if(dwRet == WAIT_TIMEOUT)
    {
      //當其位WAIT_TIMEOUT時,意味著為長按,進入poweroff函數
     EnterPowerOff();
    }
   }
  }

  ....
}
void EnterPowerOff()
{
  ...
  while(TRUE)
  {
   if(IsGPIOHigh(GPIO_DETECT_KEY) != FALSE)
   {
    //S1已經松開,跳出循環
    break;
   }
  }

  //關閉系統電源
  SetGPIO_LOW(GPIO_SHDN);
  ...
}
    這里唯一需要注意的是EnterPowerOff函數,在這里必須要檢測S1是否已經松開。如果還沒有松開S1就將GPIO_SHDN置為LOW,因為S1端還有VDD33D電壓輸入到PWR_ON端,所以系統還是無法關閉。
本文地址:http://m.qingdxww.cn/thread-150788-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆成人免费视频 | 欧美日韩视频在线一区二区 | 九九这里有精品 | 国产页 | 韩国免费人成在线观看网站 | 草草影院第一页yycccom | 91青青视频| 九九视频精品全部免费播放 | 日韩免费高清一级毛片 | 91麻精品国产91久久久久 | sese天堂| 日韩国产欧美一区二区三区 | 日日摸夜夜添夜夜免费视 | 国产精品久久永久免费 | 麻豆你懂的 | 九色精品视频在线观看 | 欧美成年人视频 | 亚洲综合自拍 | 国产老色批视频在线观看应用 | 亚洲自拍另类 | 成人精品一区二区三区校园激情 | 国产一级做a爰片久久毛片 国产一级做a爰片... | 男女那个视频免费 | 四虎永久在线精品国产馆v视影院 | 国产成人一区二区三区免费观看 | 91视频欧美| 青青草华人在线 | 亚洲黄色影视 | 免费一级特黄a | 国产在线一区二区三区四区 | japanav在线| 日韩精品免费一区二区三区 | 亚洲国产高清在线精品一区 | 国产亚洲成在线播放va | 久久91精品国产一区二区 | 久草国产精品视频 | 精品国产一区二区三区不卡蜜臂 | 久热精品香蕉在线视频 | 免费看日b视频 | 国产伊人自拍 | 男人影院天堂网址 |