0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 USB復(fù)位機(jī)制、掛起機(jī)制及其喚醒機(jī)制詳解

冬至子 ? 來源:一個早起的程序員 ? 作者:一個早起的程序員 ? 2023-07-17 15:40 ? 次閱讀

1

STM32 USB復(fù)位機(jī)制

主機(jī)可以對USB設(shè)備進(jìn)行復(fù)位,主要是主機(jī)在和設(shè)備通訊之前會發(fā)送Reset信號把設(shè)備設(shè)置到默認(rèn)的未配置狀態(tài),即主機(jī)拉低兩根信號線(SE0狀態(tài))并保持10ms。當(dāng)STM32 USB設(shè)備檢測到主機(jī)的復(fù)位信號之后,如果復(fù)位中斷使能,則會進(jìn)入復(fù)位中斷處理函數(shù)。

STM32 USB設(shè)備也可以對自身進(jìn)行復(fù)位,置位控制寄存器的FRES對USB模塊強(qiáng)制復(fù)位,此時USB模塊將一直保持在復(fù)位狀態(tài)下直到軟件清除此位。如果USB復(fù)位中斷被使能,將產(chǎn)生一個復(fù)位中斷。USB設(shè)備在上電后首先會強(qiáng)制對自己進(jìn)行復(fù)位,讓自己處于未配置狀態(tài)。

2

STM32 USB掛起機(jī)制

USB主機(jī)以3毫秒內(nèi)不發(fā)送任何信號標(biāo)志進(jìn)入掛起狀態(tài)(3ms以上的J狀態(tài),J狀態(tài)也叫做IDEL狀態(tài))。通常情況下USB主機(jī)每毫秒會發(fā)送一個SOF,當(dāng)USB模塊檢測到3個連續(xù)的SOF分組丟失事件即可判定主機(jī)發(fā)出了掛起請求,接著它會置位SB_ISTR寄存器的SUSP位,以觸發(fā)掛起中斷,如果USB掛起中斷被使能,將產(chǎn)生一個掛起中斷。

USB設(shè)備也可以在任何地方將USB_CNTR寄存器的FSUSP置為’1’來強(qiáng)制掛起自己,這個過程不需要主機(jī)參與。

實(shí)際的掛起操作過程對于不同的USB設(shè)備來說是不同的,因?yàn)樾枰煌牟僮鱽斫档?a target="_blank">電源消耗。STM32典型的掛起處理如下。

  1. 將USB_CNTR寄存器的FSUSP置為’1’,這將使USB模塊進(jìn)入掛起狀態(tài)。USB模塊一旦進(jìn)入掛起狀態(tài),對SOF的檢測立刻停止,以避免在USB掛起時又發(fā)生新的SUSP事件。
  2. 消除或減少USB模塊以外的其他模塊的靜態(tài)電流消耗。
  3. 將USB_CNTR寄存器的LP_MODE位置為’1’,這將消除模擬USB收發(fā)器的靜態(tài)電流消耗,但仍能檢測到喚醒信號。
  4. 可以選擇關(guān)閉外部振蕩器和設(shè)備的PLL,以停止設(shè)備內(nèi)部的任何活動。

3

STM32 USB喚醒機(jī)制

USB設(shè)備進(jìn)入掛起狀態(tài)之后,將由Resume信號進(jìn)行喚醒。Resume信號可以由USB主機(jī)發(fā)起,也可以由USB設(shè)備本身觸發(fā), 但是只有USB主機(jī)可以結(jié)束Resume信號 。

1.主機(jī)在掛起設(shè)備后可通過翻轉(zhuǎn)數(shù)據(jù)線上的極性并保持20ms來喚醒設(shè)備,并以低速EOP信號結(jié)尾。

2.如果設(shè)備支持遠(yuǎn)程喚醒,設(shè)備可向主機(jī)發(fā)起遠(yuǎn)程喚醒請求,前提是設(shè)備已進(jìn)入idle狀態(tài)至少5ms,設(shè)備會驅(qū)動總線進(jìn)入K狀態(tài),如下圖,K狀態(tài)必須維持1ms-15ms之內(nèi),此信號會在1ms內(nèi)被主機(jī)接管,主機(jī)會繼續(xù)驅(qū)動喚醒信號直到20ms,并以低速EOP信號結(jié)尾。

圖片

STM32 設(shè)備被喚醒后,如果喚醒中斷使能,則會進(jìn)入喚醒中斷,我們在中斷處理函數(shù)里面首先要將USB_CNTR寄存器的LP_MODE位置為’0’,退出低功耗模式,然后清除USB_CNTR寄存器的FSUSP位,退出強(qiáng)制掛起操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 振蕩器
    +關(guān)注

    關(guān)注

    28

    文章

    3832

    瀏覽量

    139093
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120377
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356045
  • USB設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    16335
  • PLL電路
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    6408
收藏 人收藏

    評論

    相關(guān)推薦

    干貨分享 | TSMaster—LIN 喚醒與休眠機(jī)制

    在汽車總線中常見的喚醒方式有硬線喚醒、網(wǎng)絡(luò)喚醒和特定信號喚醒,而LIN總線則是通過休眠幀與喚醒電平來實(shí)現(xiàn)的,本文將介紹LIN的
    的頭像 發(fā)表于 09-25 08:03 ?1718次閱讀
    干貨分享 | TSMaster—LIN <b class='flag-5'>喚醒</b>與休眠<b class='flag-5'>機(jī)制</b>

    高保真膽機(jī)制詳解

    http://115.com/file/be3wripk#高保真膽機(jī)制詳解.rar
    發(fā)表于 02-14 09:54

    詳解Linux內(nèi)核搶占實(shí)現(xiàn)機(jī)制

    本文詳解了Linux內(nèi)核搶占實(shí)現(xiàn)機(jī)制。首先介紹了內(nèi)核搶占和用戶搶占的概念和區(qū)別,接著分析了不可搶占內(nèi)核的特點(diǎn)及實(shí)時系統(tǒng)中實(shí)現(xiàn)內(nèi)核搶占的必要性。然后分析了禁止內(nèi)核搶占的情況和內(nèi)核搶占的時機(jī),最后介紹了實(shí)現(xiàn)搶占內(nèi)核所做的改動以及何時需要重新調(diào)度。
    發(fā)表于 08-06 06:16

    詳解Linux能力機(jī)制

    Linux能力機(jī)制
    發(fā)表于 04-20 08:23

    如何實(shí)現(xiàn)局部網(wǎng)絡(luò)的休眠喚醒機(jī)制?

    局部網(wǎng)絡(luò)管理是什么?局部網(wǎng)絡(luò)(PN)管理的優(yōu)勢有哪些?如何實(shí)現(xiàn)局部網(wǎng)絡(luò)的休眠喚醒機(jī)制?
    發(fā)表于 04-19 07:42

    串口接收喚醒機(jī)制有哪些注意事項(xiàng)?

    為什么串口接收數(shù)據(jù)就會觸發(fā)中斷呢?串口接收喚醒機(jī)制有哪些注意事項(xiàng)?
    發(fā)表于 12-09 06:45

    STM32 USB有哪幾種機(jī)制

    主機(jī)是怎樣對USB設(shè)備進(jìn)行復(fù)位的?USB設(shè)備進(jìn)入掛起狀態(tài)后如何喚醒呢?
    發(fā)表于 02-28 09:26

    MC33665A的喚醒機(jī)制是什么?

    MC33665A的喚醒機(jī)制是什么,wake in腳的接法應(yīng)該是什么樣的
    發(fā)表于 04-04 08:49

    51和32單片機(jī)的復(fù)位機(jī)制有哪些不同?

    51和32單片機(jī)的復(fù)位機(jī)制有哪些不同。以及復(fù)位電容電壓的計算方法。
    發(fā)表于 11-06 06:16

    家用風(fēng)力發(fā)電機(jī)制作過程詳解

    家用風(fēng)力發(fā)電機(jī)制作過程詳解
    的頭像 發(fā)表于 08-21 16:11 ?3.6w次閱讀

    礦石收音機(jī)制詳解

    礦石收音機(jī)制詳解
    發(fā)表于 12-27 17:52 ?63次下載

    STM32的半主機(jī)機(jī)制

    半主機(jī)是用于ARM目標(biāo)的一種機(jī)制,可將來自STM32單片機(jī)應(yīng)用程序的輸入輸出請求傳送至運(yùn)行仿真器的PC主機(jī)。
    發(fā)表于 02-08 16:21 ?0次下載
    <b class='flag-5'>STM32</b>的半主機(jī)<b class='flag-5'>機(jī)制</b>

    stm32_FSMC機(jī)制

    stm32_FSMC機(jī)制,介紹FSMC機(jī)制入門
    發(fā)表于 02-21 15:16 ?18次下載

    圖文詳解Linux分頁機(jī)制

    分頁機(jī)制是 80x86 內(nèi)存管理機(jī)制的第二種機(jī)制,分段機(jī)制用于把虛擬地址轉(zhuǎn)換為線性地址,而分頁機(jī)制用于把線性地址轉(zhuǎn)換為物理地址。
    發(fā)表于 05-30 09:10 ?465次閱讀
    圖文<b class='flag-5'>詳解</b>Linux分頁<b class='flag-5'>機(jī)制</b>

    什么是SPI機(jī)制

    的ContextClassLoader加載以便使用)。本次將對 SPI機(jī)制進(jìn)行詳解,并結(jié)合案例介紹其在實(shí)際場景中具體使用。 2、什么是SPI機(jī)制? SPI(全稱:Service Provider Interface),是jdk內(nèi)
    的頭像 發(fā)表于 10-08 15:03 ?1152次閱讀
    什么是SPI<b class='flag-5'>機(jī)制</b>