MAX3420E為任何SPI主站(如微控制器)增加了USB外設(shè)功能。MAX3420E的工作主要由中斷請求(IRQ)位決定,通過該位向SPI主機發(fā)出USB事件需要維修的警報。本文描述了MAX3420E中斷系統(tǒng)和每個中斷請求位。
介紹
MAX3420E可連接至任何SPI主機,實現(xiàn)全速USB外設(shè)。雖然MAX3420管理低電平USB信號工作,但當USB事件需要注意時,SPI主機必須偶爾介入。MAX3420上的INT引腳表示需要注意,SPI主機讀取14個中斷請求位,以確定哪些中斷需要維修。這些中斷重新探索(IRQ)位在很大程度上決定了MAX3420E的工作。
注意:SPI主機可以是微控制器、DSP、ASIC或任何可以實現(xiàn)SPI端口并提供SCLK信號的東西。本文檔交替使用術(shù)語“SPI主站”和“微控制器”。
MAX3420E中斷邏輯
圖1.MAX3420E中斷邏輯寄存器位帶有陰影。
圖1給出了MAX3420E中斷邏輯。SPI可訪問的寄存器位帶有陰影。
IRQ 位
每個中斷源都有一個觸發(fā)器來鎖存服務(wù)請求。該觸發(fā)器的輸出為IRQ,出現(xiàn)在MAX3420E寄存器中。IRQ 位有兩個屬性:
讀取 IRQ 位將返回 IRQ 觸發(fā)器的狀態(tài)。
將“1”寫入 IRQ 位會清除其 IRQ 觸發(fā)器,將“0”寫入 IRQ 位會保持觸發(fā)器不變。
可以隨時讀取的 IRQ 位反映了 IRQ 觸發(fā)器的狀態(tài)。在上面的 #2 之后,寫入 1 或 0 會清除選定的 IRQ 位,而無需讀取-修改-寫入周期。為了說明這一點,假設(shè)MAX3420E將IRQ位實現(xiàn)為簡單的寄存器位,其中寫入1設(shè)置位,寫入0清除位。現(xiàn)在我們要清除 USBIRQ 寄存器中的 URESIRQ 位。圖 2 顯示了執(zhí)行此操作的代碼。
圖2.清除常規(guī)寄存器位需要RMW操作。
由于SPI主機通過寫入3420來清除MAX1E IRQ位,而0則保持其他寄存器位不變,因此SPI主機可以通過直接寫入位掩碼值來清除URESIRQ位。因此,圖 2 中的最后三個語句可以替換為圖 3 中的單個語句。
圖3.MAX3420E IRQ位通過單寄存器寫入清除。
IEN 位 MAX14E的3420個中斷中
的每一個都有一個相關(guān)的中斷ENable(IEN)位。IEN 位與 IRQ 觸發(fā)器輸出進行 AND 運算,以傳遞或阻止請求傳播到 INT 引腳(圖 1)。14 個 IRQ 觸發(fā)器被選通,然后通過 OR 組合在一起形成一個內(nèi)部中斷請求信號,該信號傳遞到中斷引腳邏輯塊。
請注意,IRQ 位表示中斷的掛起狀態(tài),而不考慮其 IEN 位的狀態(tài)。這使固件可以選擇在不觸發(fā) INT 引腳的情況下檢查掛起的中斷。如果您的代碼需要檢查 IRQ 寄存器是否“無掛起”,一個簡單的解決方案是讀取 IRQ 和 IEN 寄存器,以及它們一起讀取,并檢查現(xiàn)在表示“掛起和已啟用的 IRQ”的位。零值表示所有已啟用的中斷均未掛起。
IE 位
SPI 主站啟用或禁用帶有 IE 位的 INT 引腳。這通常稱為全局中斷啟用,因為它會影響所有中斷。當 IE = 0 時,INT 引腳將變?yōu)榉腔顒訝顟B(tài),而與任何 IRQ 或 IEN 位的狀態(tài)無關(guān)。
中斷引腳邏輯
兩個寄存器位,INT電平(見下文討論)和POSINT控制INT引腳的行為。應(yīng)在設(shè)置 IE = 1 之前設(shè)置這些配置位。
電平模式,INTLEVEL = 1
某些微控制器系統(tǒng)使用電平敏感/中斷。在這種配置中,MAX3420E通過漏極開路晶體管驅(qū)動INT引腳至地。由于引腳只能驅(qū)動低電平,因此在INT引腳和邏輯電源之間連接一個上拉電阻。此模式允許將來自多個芯片的 INT 引腳輸出(每個芯片具有漏極開路輸出)連接在一起,并通過單個電阻器上拉。由于任何芯片輸出都會將引腳拉低,因此此邏輯有時稱為“有線或”。對于此類型的系統(tǒng),設(shè)置 INTLEVEL = 1。
邊沿模式,INTLEVEL = 0(默認值)
MAX3420E INT引腳還可以驅(qū)動邊沿活動中斷系統(tǒng),微控制器在其中斷輸入引腳上尋找0-1或1-0轉(zhuǎn)換。這是MAX3420E的默認模式,INTLEVEL = 0。SPI主機使用第二個位POSINT設(shè)置邊沿極性。當POSINT = 1時,MAX3420E為待處理中斷提供0-1轉(zhuǎn)換。當POSINT = 0 (默認值)時,MAX3420E為待處理中斷提供1-0轉(zhuǎn)換。
請注意圖 1 中的以下內(nèi)容:
如果設(shè)置了 IRQ 位,并且其關(guān)聯(lián)的 IEN 位是清晰的,則該 IRQ 不會影響 INT 輸出引腳。但是,中斷仍處于掛起狀態(tài)。它的狀態(tài)始終可以在IRQ位中讀取,并且可以通過向關(guān)聯(lián)的寄存器位寫入1來清除。
掛起的中斷(IRQ 位為 1),其 IEN 位進行 0-1 轉(zhuǎn)換會導(dǎo)致中斷
INT引腳可以連接到微控制器的中斷系統(tǒng)。或者,微控制器可以輪詢INT引腳,以確定是否有MAX3420E中斷處于掛起狀態(tài)。用于輪詢的最佳模式是電平模式(INTLEVEL = 1),因為在邊緣模式下,INT引腳可能會發(fā)出太窄的脈沖,微控制器無法看到(請參閱下面的討論)。請記住,電平模式需要一個從 INT 引腳到 V 的上拉電阻L.
國際引腳波形
水平模式
圖4.MAX3420E INT引腳在電平模式下的行為(INTLEVEL = 1)。
圖4所示為電平模式下MAX3420E INT引腳波形。INT 引腳的靜態(tài)狀態(tài)為高電平(上拉至 VL).假設(shè)圖中兩個中斷的 IEN 位設(shè)置為 1,全局 IE 位設(shè)置為 4,則會發(fā)生以下事件。(下面的字母項對應(yīng)于圖 <> 中的字母事件。
中斷請求到達,導(dǎo)致MAX3420E INT引腳驅(qū)動低電平。
SPI 主機完成中斷服務(wù),并通過向其寫入 1 來清除其 IRQ 位。INT 引腳返回到其高靜態(tài)狀態(tài)。(a) 和 (b) 之間的間隔是中斷置位其 IRQ 位和 SPI 主機清除 IRQ 位之間的時間。
另一個中斷請求到達,將 INT 引腳驅(qū)動為低電平。
當?shù)谝粋€中斷請求掛起時,第二個中斷請求到達。INT 級別不會更改,因為至少有一個中斷掛起。(實際上,目前有兩個待定。
SPI 主機完成對其中一個掛起中斷的處理,并通過向其寫入 1 來清除其 IRQ 位。INT 引腳保持低電平,因為一個中斷仍處于掛起狀態(tài)。
SPI 主機完成對剩余中斷請求的處理,并通過向其寫入 1 來清除其 IRQ 位。沒有掛起的中斷,因此 INT 引腳返回到其靜態(tài)高電平狀態(tài)。
注意:如果設(shè)置了中斷的IRQ觸發(fā)器(圖1),則認為中斷處于掛起狀態(tài)。
此邏輯非常適合輪詢 INT 引腳。如果MAX3420E中的任何內(nèi)容需要維修,并且其中斷使能,則INT引腳為低電平。INT 引腳保持低電平,直到微控制器清除最后一個掛起的 IRQ 位。
邊緣模式
圖5.MAX3420E INT引腳在EDGE模式下的行為(INTLEVEL = 0)。間隔(1)是SPI主機清除IRQ所需的時間,間隔(2)為10.67μs。
圖5所示為MAX3420E INT引腳波形,用于邊沿模式,工作在兩個極性,由POSINT位控制。波形看起來與電平模式下的波形相似,但有兩個不同之處。INT 引腳在兩種條件下提供邊沿:
IRQ 位變?yōu)榛顒訝顟B(tài)(其 IRQ 觸發(fā)器進行 0-1 轉(zhuǎn)換)。
處理器清除 IRQ 位(通過向其寫入 1),而其他 IRQ 處于掛起狀態(tài)。
第二個條件確保處理器在仍需要服務(wù)時獲得優(yōu)勢。
除了提供邊沿外,INT 引腳還具有活動和非活動狀態(tài),就像在電平模式下一樣。INT 引腳的非活動狀態(tài)取決于 POSINT 位設(shè)置的邊沿極性。在這方面,邊沿模式類似于電平模式,因為您可以通過查看INT引腳的狀態(tài)來了解是否有任何中斷處于掛起狀態(tài):
在負邊沿模式下,如果沒有中斷掛起,則INT引腳為高電平;如果中斷掛起,則為低。
在正邊沿模式下,如果沒有中斷掛起,則INT引腳為低電平;如果中斷掛起,則為高。
以下說明將 INT 引腳狀態(tài)稱為活動或非活動狀態(tài)。活動表示至少有一個中斷處于掛起狀態(tài);非活動表示沒有掛起的中斷。同樣假設(shè)中斷已啟用,將發(fā)生以下事件。(下面的字母項對應(yīng)于圖 5 中的字母事件。
中斷請求到達,MAX3420E INT引腳提供邊沿。邊沿的極性取決于 POSINT 位的設(shè)置。由于中斷仍處于掛起狀態(tài),因此 INT 引腳保持其活動狀態(tài)。
SPI 主機完成中斷服務(wù),并通過向其寫入 1 來清除其 IRQ 位。MAX3420E INT引腳返回非工作狀態(tài)。圖中(a)和(b)之間的間隔(1)是中斷置位和SPI主機清除IRQ位之間的時間。
另一個中斷請求到達,MAX3420E INT引腳提供邊沿并保持工作狀態(tài)。
當?shù)谝粋€中斷請求掛起時,第二個中斷到達。MAX3420E INT引腳必須提供另一個邊沿,因此它在非工作和工作狀態(tài)之間脈沖,以提供適當極性的邊沿。該脈沖的寬度固定在MAX10E中為67.3420μs。由于中斷處于掛起狀態(tài),因此 INT 引腳保持活動狀態(tài)。
SPI 主機完成對其中一個掛起中斷的維護,并通過向其寫入 1 來清除其 IRQ 位。INT 引腳提供另一個邊沿,如步驟 (d) 所示。
SPI 主機完成對剩余中斷請求的處理,并通過向其寫入 1 來清除其 IRQ 位。沒有掛起的中斷,因此 INT 引腳返回到其非活動狀態(tài)。
中斷寄存器
表 1.陰影MAX3420E寄存器位控制中斷系統(tǒng)
MAX3420E具有兩組USB中斷,由表1中的陰影寄存器控制。中斷位分為EPIRQ (R11)和EPIEN (R12)中的端點控制,以及USBIRQ (R13)和USBIEN(R14)中的USB控制。全局 IE 位位于 CPUCTL 寄存器中。
位名 | 違約 | 位置 | 設(shè)置者 | 清除者 |
IN0BAVIRQ | 1 | EPIRQ.0 | EP0 先進先出可用于 μP 加載 | 加載 EP0BC 寄存器 |
OUT0DAVIRQ | 0 | EPIRQ.1 | EP0-OUT FIFO 具有主機數(shù)據(jù) | 寫入 EPIRQ = 0x02 |
OUT1DAVIRQ | 0 | EPIRQ.2 | EP1-OUT FIFO 具有主機數(shù)據(jù) | 寫入 EPIRQ = 0x04 |
IN2BAVIRQ | 1 | EPIRQ.3 | EP2-IN 先進先出可用于 μP 加載 | 加載 EP2INBC 寄存器 |
IN3BAVIRQ | 1 | EPIRQ.4 | EP3-IN 先進先出可用于 μP 加載 | 加載 EP3INBC 寄存器 |
SUDAVIRQ | 0 | EPIRQ.5 | 設(shè)置數(shù)據(jù)可在SUDFIFO中找到 | 寫入 EPIRQ = 0x20 |
OSCOKIRQ | 0 | USBIRQ.0 | MAX3420E振蕩器/PLL穩(wěn)定 | 寫入 USBIRQ = 0x01 |
RWUDNIRQ | 0 | USBIRQ.1 | SIE 已完成 RWU 信號 | 寫入 USBIRQ = 0x02 |
BUSACTIRQ | 0 | USBIRQ.2 | 總線處于活動狀態(tài) | 寫入 USBIRQ = 0x04 |
URESIRQ | 0 | USBIRQ.3 | 主機開始發(fā)出總線復(fù)位信號 | 寫入 USBIRQ = 0x08 |
SUSPIRQ | 0 | USBIRQ.4 | 主機暫停總線 | 寫入 USBIRQ = 0x10 |
NOVBUSIRQ | 0 | USBIRQ.5 | V總線比較器1-0過渡 | 寫入 USBIRQ = 0x20 |
VBUSIRQ | 0 | USBIRQ.6 | V總線比較器0-1過渡 | 寫入 USBIRQ = 0x40 |
URESDNIRQ | 0 | USBIRQ.7 | 主機完成信令總線復(fù)位 | 寫入 USBIRQ = 0x80 |
表2給出了14個中斷控制位,當MAXQ3420E內(nèi)部邏輯設(shè)置它們時,以及SPI主機如何清除它們。
中斷請求位
BAV 位
三個緩沖器 AVailable (BAV) IRQ 位表示 IN 端點 FIFO 可供 SPI 主站加載。MAX3420E在芯片復(fù)位或IN數(shù)據(jù)從端點緩沖器成功發(fā)送到主機時置位這些IRQ位。此 IRQ 告訴 SPI 主站緩沖區(qū)已準備好接受新數(shù)據(jù)。
圖6.向終結(jié)點 3 發(fā)送 IN 請求的主機的總線跟蹤。
圖6為IN傳輸?shù)目偩€走線,主機從MAX3420E請求數(shù)據(jù)。在數(shù)據(jù)包 7145 到達之前,SPI 主站將字節(jié) 00 00 08 加載到端點 3 IN FIFO (EP3INFIFO) 中。然后,SPI 主機寫入值為 3 的 EP3INBC(端點 3 IN 字節(jié)計數(shù))寄存器。寫入字節(jié)計數(shù)寄存器可完成三件事:
當IN請求到達時,它告訴MAX3420E發(fā)送多少字節(jié)。
它使端點能夠傳輸數(shù)據(jù)(而不是 NAKing)。
它清除EP3INBAV IRQ位。
MAX3420E用數(shù)據(jù)包3應(yīng)答發(fā)往終端7146的下一個IN數(shù)據(jù)包。主機通過發(fā)送 ACKnowledge (ACK) 數(shù)據(jù)包 7147 來確認無差錯地收到數(shù)據(jù)。當MAX3420E檢測到主機ACK數(shù)據(jù)包時,設(shè)置EP3INBAV中斷請求位,通知SPI主機終端FIFO可以加載新數(shù)據(jù)。
如果IN數(shù)據(jù)包在SPI主機布防終端之前到達,MAX3420E以NAK握手應(yīng)答(圖7)。NAK 握手告知主機稍后重試 IN 請求。
圖7.如果MAX3420E尚未準備好發(fā)送數(shù)據(jù),則發(fā)送NAK。
如果在向主機傳輸IN數(shù)據(jù)時出現(xiàn)錯誤,當主機重試IN請求時,MAX3420E自動重新發(fā)送數(shù)據(jù)(相同的數(shù)據(jù)切換DATA0/DATA1)。只有在收到主機的ACK握手后,MAX3420E才會置位終端的BAV IRQ位,以指示緩沖器已準備好接收新數(shù)據(jù)。
重要提示:
與所有MAX3420E IRQ位一樣,三個BAV IRQ位也可以通過寫入1來清除。
永遠不要這樣做。
相反,請使用上述方法:通過寫入 IN 端點的字節(jié)計數(shù)寄存器來清除 BAV IRQ 位。這是因為MAX3420E使用IN端點的BAV中斷請求位作為鎖定機制。這種機制確保SPI主機和MAX3420E的串行接口引擎(SIE)永遠不會同時嘗試使用端點緩沖器。例如,如果清除了 BAV 位,然后在兩個單獨的指令中加載字節(jié)計數(shù),則在更新字節(jié)計數(shù)寄存器時可能會進行數(shù)據(jù)包傳輸,并且數(shù)據(jù)將損壞。
BAV IRQ 默認值
三個 BAV IRQ 位(在表 1 的默認列中顯示為 2)默認為 1s。這意味著SPI主機將在上電或復(fù)位后讀取EPIRQ = 0x19。如果設(shè)置了任何相應(yīng)的 IEN 位,INT 引腳將指示中斷處于掛起狀態(tài)。
雙緩沖端點EP2輸入
MAX3420E EP2-IN端點為雙緩沖。這意味著它具有兩組 64 字節(jié) FIFO 和字節(jié)計數(shù)寄存器。雙緩沖提高了傳輸帶寬,因為SPI主站不需要等待一個數(shù)據(jù)包傳輸?shù)街鳈C,然后再加載另一個數(shù)據(jù)包。通過雙緩沖,SPI主站可以在加載一個IN FIFO的同時加載另一個IN數(shù)據(jù)到主機。加載 EP2INBC 寄存器時,這兩個緩沖區(qū)會“乒乓球”。這將另一個FIFO(第二組)和字節(jié)數(shù)寄存器提供給SPI主機。此雙緩沖操作對固件是透明的。
雙緩沖唯一可觀察到的影響是在初始化時。IN2BAVIRQ 位在上電或芯片復(fù)位時置位。通常,您的初始化代碼將數(shù)據(jù)加載到 EP2IN FIFO 中,然后加載 EP2INBC 寄存器以布防傳輸并清除 IN2BAVIRQ 位。當你這樣做時,你可能會驚訝地發(fā)現(xiàn)MAX3420E立即重新確定IN2BAVIRQ位。這表示第二個緩沖器可供SPI主站加載。
DAV 中斷請求位 OUT 端點具有數(shù)據(jù)可復(fù)制 (DAV) IRQ 位
,以指示已從主機接收到新數(shù)據(jù)。MAX3420E自動處理總線重試,僅在接收到無差錯數(shù)據(jù)時才置位中斷請求。當SPI主站收到DAV中斷請求時,它會讀取端點的字節(jié)計數(shù)寄存器以確定數(shù)據(jù)有效負載大小。然后,SPI 主站從端點的 OUTFIFO 讀取該字節(jié)數(shù)。SPI 主機通過寫入 1 以正常方式清除 OUTDAV IRQ 位。這會重新設(shè)置端點以接收下一個 OUT 數(shù)據(jù)包。
在圖8中,主機發(fā)送一個OUT PID和3420字節(jié)數(shù)據(jù),MAX1E將其傳輸?shù)紼P3420OUT FIFO。當MAX1E驗證傳輸無差錯時,更新其EP1OUTBC寄存器以指示四個字節(jié),將ACK數(shù)據(jù)包發(fā)送回主機,并置位EP1OUTDAV IRQ,告訴SPI主站數(shù)據(jù)可在端點<> FIFO中檢索。
圖8.將 OUT 數(shù)據(jù)包發(fā)送到終結(jié)點 1 的主機的總線跟蹤。
雙緩沖端點EP1輸出
MAX3420E EP1輸出端為雙緩沖,這意味著它具有兩組64字節(jié)FIFOS和字節(jié)數(shù)寄存器。雙緩沖意味著,如果另一個主機數(shù)據(jù)包正在等待,OUT1DAVIRQ 可以在 SPI 主站清除它后立即重新置言。
SUDAV中斷請求位
當主機向MAX3420E發(fā)送控制傳輸時,MAX3420E將8個SETUP字節(jié)存儲在<>字節(jié)FIFO中,SPI主機從SUDFIFO寄存器讀取該字節(jié)。由于外設(shè)始終接受此緩沖區(qū)中的主機數(shù)據(jù),因此 SUDAVIRQ 就像 OUT 端點 FIFO 一樣,當來自主機的新數(shù)據(jù)可用時,會斷言其 SUDAV IRQ。SETUP 數(shù)據(jù)包始終包含 <> 個字節(jié),因此 SETUP 數(shù)據(jù)不需要字節(jié)計數(shù)寄存器。
OSCOK 中斷請求位 當MAX3420E上電、退出芯片復(fù)位
或退出掉電狀態(tài)時,內(nèi)部振蕩器和PLL需要時間啟動和穩(wěn)定。振蕩器OK OK (OSCOK) IRQ表示MAX3420E已準備好工作。
圖9.示例代碼復(fù)位MAX3420E并等待OSCOK后退出。
圖9是使用CHIPRES寄存器位復(fù)位MAX3420E的示例代碼。由于芯片復(fù)位停止內(nèi)部振蕩器,代碼通過設(shè)置CHIPRES = 0去除復(fù)位信號后,應(yīng)等待振蕩器穩(wěn)定后再使用MAX3420E。
RWUDN 中斷請求位
當處于掛起狀態(tài)時,USB 外圍設(shè)備可能會發(fā)出遠程喚醒 (RWU) 信號,以告知主機恢復(fù)總線活動。USB 規(guī)范將遠程喚醒信號定義為 1ms 至 15ms K 狀態(tài)。SPI 主機通過將 SIGnal 遠程喚醒 (SIGRWU) 位設(shè)置為 1 來啟動 RWU 信令。
當SPI主機設(shè)置SIGRWU位時,MAX3420E等待5ms,驅(qū)動K狀態(tài)10ms,然后置位遠程喚醒DoNe中斷請求(RWUDNIRQ)位。5ms 延遲可確保滿足另一個 USB 要求:總線必須空閑(J 狀態(tài))至少 5ms,然后外設(shè)才會啟動恢復(fù)信令。
圖 10.發(fā)出遠程喚醒信號的示例代碼。
圖 10 顯示了發(fā)出遠程喚醒信號的示例代碼。注意,MAX3420E對信號進行倍增,并在完成后置位IRQ。MAX3420E對所有定時USB事件執(zhí)行此操作,完成后提供中斷,因此SPI主機無需定時信號間隔。
圖10中的代碼設(shè)置SIGRWU位,然后在RWUDNIRQ位上循環(huán),以確定10ms信號何時經(jīng)過。然后,它將SIGRWU = 0設(shè)置為<>并清除IRQ位。當然,在多任務(wù)SPI主站中,您將響應(yīng)RWUDNIRQ中斷請求,而不是浪費時間直接檢查IRQ位。
SPI主機應(yīng)在收到RWUDNITQ中斷后5ms內(nèi)關(guān)閉SIGRWU位。否則,MAX3420E啟動另一個10ms K狀態(tài),并重復(fù)該序列(等待5ms、10ms、K狀態(tài)),直到SIGRWU = 0。在 RWU 信令進行時設(shè)置 SIGRWU = 0 不會終止 RWU 信令。
當SPI主機設(shè)置SIGRWU = 3420時,如果MAX1E處于關(guān)斷狀態(tài)(PWRDOWN = 1),MAX3420E自動重啟振蕩器并等待振蕩器穩(wěn)定后再啟動RWU信號。在這種情況下,SPI 主站不需要檢查 OSCOK IRQ。
BUSACT 中斷請求位 MAX23420E在檢測到USB數(shù)據(jù)包開頭的SYNC碼型時設(shè)置BUSACT IRQ位
。USB 總線復(fù)位不被視為總線活動,因此不會激活 BUSACK 中斷請求。
URES 和 URESDN 中斷請求位
USB 主機通過驅(qū)動至少 50 毫秒的單端 zerO (SE0) 狀態(tài)(D+ 和 D- 驅(qū)動低電平)來重置外設(shè)。MAX3420E在檢測到2.5μs的SE0后,對USB RESet IRQ (URESIRQ)進行定位。然后,當主機完成復(fù)位信號時,它會斷言 USB RESet DoNe IRQ (URESDNIRQ)。
由于SPI主機需要監(jiān)測USB總線復(fù)位事件,MAX3420E在總線復(fù)位期間不會清除URESIE、URESDNIE或IE中斷使能位。在總線復(fù)位期間,它會清除 EPIEN 和 USBIEN 寄存器中的所有其他中斷使能位。
SUSP中斷請求位
當MAX3420E檢測到總線不活動3ms(恒定J狀態(tài))時,它觸發(fā)SUSPend中斷請求(SUSPIRQ)。如果使用MAX3420E的外設(shè)為總線供電,則必須進入低功耗狀態(tài),以最小化從V吸收的電流。總線.在這種情況下,SPI主機通過關(guān)斷耗電外設(shè),然后通過設(shè)置PWRDOWN = 3420將MAX1E置于低功耗模式。這將停止MAX3420E振蕩器,使MAX3420E進入最低功耗狀態(tài)。
值得一提的是兩個編程說明:
清除SUSPIRQ位不會阻止中斷在3ms后重新確認。為避免在總線掛起時重復(fù)掛起中斷,請清除掛起 IEN 位,直到總線恢復(fù)信令。
內(nèi)部掛起定時器邏輯由MAX3420E的內(nèi)部振蕩器計時。因此,如果關(guān)閉芯片(設(shè)置PWRDOWN = 1),然后嘗試通過寫入1來清除SUSPIRQ位,MAX3420E將不會清除該位。MAX3420E需要現(xiàn)已停止的內(nèi)部時鐘。
VBUS 和 NOVBUS 中斷請求位
自供電外設(shè)可以檢測是否已插入USB并使用這些中斷供電。中斷由內(nèi)部VBUS比較器激活,該比較器將VBComp引腳電壓與內(nèi)部參考電壓進行比較。它們是邊緣敏感的,在施加VBUS電壓(VBUSIRQ)或去除VBUS電壓時斷言(NOVBUSIRQ)。
總線供電的外圍設(shè)備不需要檢測VBUS,因為它是由VBUS供電的。這將釋放VBComp引腳,以便用作通用輸入。在此應(yīng)用中,VBComp引腳沒有內(nèi)部拉電阻,因此應(yīng)在VBComp針腳和VL之間連接拉電阻。
編程技巧
清除 IEN 位 芯片復(fù)位
在芯片復(fù)位期間清除所有 IE 位
。芯片復(fù)位定義為以下情況之一:
VLMAX3420E通電(上電復(fù)位)。
MAX3420E RES#引腳被驅(qū)動為低電平。
SPI 主站設(shè)置位 CHIPRES = 1。
總線復(fù)位 當MAX3420E檢測到USB總線復(fù)位(總線不活動3ms)時,除<>位外,所有IE位
均被清除。SPI主機可能需要接受與總線復(fù)位相關(guān)的中斷,以監(jiān)視總線復(fù)位信號的狀態(tài)。因此,以下 IE 位不受總線重置的影響:
URESIE
URESDNIE
IE(全局中斷啟用)
由于 USB 總線復(fù)位會清除大部分 IE 位,因此應(yīng)組織控制固件,以便在總線復(fù)位完成后重新啟用所需的中斷。
清除 BAV 和 DAV IRQ 位
請記住,DAV IRQ 位以正常方式清除,方法是將 1 寫入位。 BAV 位(用于 IN 端點)的清除方式不同,即通過寫入字節(jié)計數(shù)寄存器。
注意:即使認為MAX3420E中斷輸出引腳稱為INT引腳,它有時也可能具有負極性(例如電平模式)。
shenhbj:gt
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151316 -
電源
+關(guān)注
關(guān)注
184文章
17704瀏覽量
249963 -
usb
+關(guān)注
關(guān)注
60文章
7936瀏覽量
264483
發(fā)布評論請先 登錄
相關(guān)推薦
評論