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

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

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

MAX3420E中斷系統(tǒng)

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:ADI ? 2023-03-31 11:24 ? 次閱讀

MAX3420E為任何SPI主站(如微控制器)增加了USB外設(shè)功能。MAX3420E的工作主要由中斷請(qǐng)求(IRQ)位決定,通過(guò)該位向SPI主機(jī)發(fā)出USB事件需要維修的警報(bào)。本文描述了MAX3420E中斷系統(tǒng)和每個(gè)中斷請(qǐng)求位。

介紹

MAX3420E可連接至任何SPI主機(jī),實(shí)現(xiàn)全速USB外設(shè)。雖然MAX3420管理低電平USB信號(hào)工作,但當(dāng)USB事件需要注意時(shí),SPI主機(jī)必須偶爾介入。MAX3420上的INT引腳表示需要注意,SPI主機(jī)讀取14個(gè)中斷請(qǐng)求位,以確定哪些中斷需要維修。這些中斷重新探索(IRQ)位在很大程度上決定了MAX3420E的工作。

注意:SPI主機(jī)可以是微控制器DSP、ASIC或任何可以實(shí)現(xiàn)SPI端口并提供SCLK信號(hào)的東西。本文檔交替使用術(shù)語(yǔ)“SPI主站”和“微控制器”。

MAX3420E中斷邏輯

poYBAGQmWqGACaSyAABUXLF99is180.png

圖1.MAX3420E中斷邏輯寄存器位帶有陰影。

圖1給出了MAX3420E中斷邏輯。SPI可訪問(wèn)的寄存器位帶有陰影。

IRQ 位
每個(gè)中斷源都有一個(gè)觸發(fā)器來(lái)鎖存服務(wù)請(qǐng)求。該觸發(fā)器的輸出為IRQ,出現(xiàn)在MAX3420E寄存器中。IRQ 位有兩個(gè)屬性:

讀取 IRQ 位將返回 IRQ 觸發(fā)器的狀態(tài)。

“1”寫(xiě)入 IRQ 位會(huì)清除其 IRQ 觸發(fā)器,將“0”寫(xiě)入 IRQ 位會(huì)保持觸發(fā)器不變。

可以隨時(shí)讀取的 IRQ 位反映了 IRQ 觸發(fā)器的狀態(tài)。在上面的 #2 之后,寫(xiě)入 1 或 0 會(huì)清除選定的 IRQ 位,而無(wú)需讀取-修改-寫(xiě)入周期。為了說(shuō)明這一點(diǎn),假設(shè)MAX3420E將IRQ位實(shí)現(xiàn)為簡(jiǎn)單的寄存器位,其中寫(xiě)入1設(shè)置位,寫(xiě)入0清除位?,F(xiàn)在我們要清除 USBIRQ 寄存器中的 URESIRQ 位。圖 2 顯示了執(zhí)行此操作的代碼。

pYYBAGQmWpuAAGcBAAAxV0aug_U052.png

圖2.清除常規(guī)寄存器位需要RMW操作。

由于SPI主機(jī)通過(guò)寫(xiě)入3420來(lái)清除MAX1E IRQ位,而0則保持其他寄存器位不變,因此SPI主機(jī)可以通過(guò)直接寫(xiě)入位掩碼值來(lái)清除URESIRQ位。因此,圖 2 中的最后三個(gè)語(yǔ)句可以替換為圖 3 中的單個(gè)語(yǔ)句。

pYYBAGQmWpaATrLOAAAPY-U-UAs328.png

圖3.MAX3420E IRQ位通過(guò)單寄存器寫(xiě)入清除。

IEN 位 MAX14E的3420個(gè)中斷中
的每一個(gè)都有一個(gè)相關(guān)的中斷ENable(IEN)位。IEN 位與 IRQ 觸發(fā)器輸出進(jìn)行 AND 運(yùn)算,以傳遞或阻止請(qǐng)求傳播到 INT 引腳(圖 1)。14 個(gè) IRQ 觸發(fā)器被選通,然后通過(guò) OR 組合在一起形成一個(gè)內(nèi)部中斷請(qǐng)求信號(hào),該信號(hào)傳遞到中斷引腳邏輯塊。

請(qǐng)注意,IRQ 位表示中斷的掛起狀態(tài),而不考慮其 IEN 位的狀態(tài)。這使固件可以選擇在不觸發(fā) INT 引腳的情況下檢查掛起的中斷。如果您的代碼需要檢查 IRQ 寄存器是否“無(wú)掛起”,一個(gè)簡(jiǎn)單的解決方案是讀取 IRQ 和 IEN 寄存器,以及它們一起讀取,并檢查現(xiàn)在表示“掛起和已啟用的 IRQ”的位。零值表示所有已啟用的中斷均未掛起。

IE 位
SPI 主站啟用或禁用帶有 IE 位的 INT 引腳。這通常稱為全局中斷啟用,因?yàn)樗鼤?huì)影響所有中斷。當(dāng) IE = 0 時(shí),INT 引腳將變?yōu)榉腔顒?dòng)狀態(tài),而與任何 IRQ 或 IEN 位的狀態(tài)無(wú)關(guān)。

中斷引腳邏輯
兩個(gè)寄存器位,INT電平(見(jiàn)下文討論)和POSINT控制INT引腳的行為。應(yīng)在設(shè)置 IE = 1 之前設(shè)置這些配置位。

電平模式,INTLEVEL = 1
某些微控制器系統(tǒng)使用電平敏感/中斷。在這種配置中,MAX3420E通過(guò)漏極開(kāi)路晶體管驅(qū)動(dòng)INT引腳至地。由于引腳只能驅(qū)動(dòng)低電平,因此在INT引腳和邏輯電源之間連接一個(gè)上拉電阻。此模式允許將來(lái)自多個(gè)芯片的 INT 引腳輸出(每個(gè)芯片具有漏極開(kāi)路輸出)連接在一起,并通過(guò)單個(gè)電阻器上拉。由于任何芯片輸出都會(huì)將引腳拉低,因此此邏輯有時(shí)稱為“有線或”。對(duì)于此類(lèi)型的系統(tǒng),設(shè)置 INTLEVEL = 1。

邊沿模式,INTLEVEL = 0(默認(rèn)值)
MAX3420E INT引腳還可以驅(qū)動(dòng)邊沿活動(dòng)中斷系統(tǒng),微控制器在其中斷輸入引腳上尋找0-1或1-0轉(zhuǎn)換。這是MAX3420E的默認(rèn)模式,INTLEVEL = 0。SPI主機(jī)使用第二個(gè)位POSINT設(shè)置邊沿極性。當(dāng)POSINT = 1時(shí),MAX3420E為待處理中斷提供0-1轉(zhuǎn)換。當(dāng)POSINT = 0 (默認(rèn)值)時(shí),MAX3420E為待處理中斷提供1-0轉(zhuǎn)換。

請(qǐng)注意圖 1 中的以下內(nèi)容:

如果設(shè)置了 IRQ 位,并且其關(guān)聯(lián)的 IEN 位是清晰的,則該 IRQ 不會(huì)影響 INT 輸出引腳。但是,中斷仍處于掛起狀態(tài)。它的狀態(tài)始終可以在IRQ位中讀取,并且可以通過(guò)向關(guān)聯(lián)的寄存器位寫(xiě)入1來(lái)清除。

掛起的中斷(IRQ 位為 1),其 IEN 位進(jìn)行 0-1 轉(zhuǎn)換會(huì)導(dǎo)致中斷

INT引腳可以連接到微控制器的中斷系統(tǒng)?;蛘?,微控制器可以輪詢INT引腳,以確定是否有MAX3420E中斷處于掛起狀態(tài)。用于輪詢的最佳模式是電平模式(INTLEVEL = 1),因?yàn)樵谶吘壞J较拢琁NT引腳可能會(huì)發(fā)出太窄的脈沖,微控制器無(wú)法看到(請(qǐng)參閱下面的討論)。請(qǐng)記住,電平模式需要一個(gè)從 INT 引腳到 V 的上拉電阻L.

國(guó)際引腳波形

水平模式

poYBAGQmUkyAVfKQAAAakg1i8uw914.gif

圖4.MAX3420E INT引腳在電平模式下的行為(INTLEVEL = 1)。

圖4所示為電平模式下MAX3420E INT引腳波形。INT 引腳的靜態(tài)狀態(tài)為高電平(上拉至 VL).假設(shè)圖中兩個(gè)中斷的 IEN 位設(shè)置為 1,全局 IE 位設(shè)置為 4,則會(huì)發(fā)生以下事件。(下面的字母項(xiàng)對(duì)應(yīng)于圖 <> 中的字母事件。

中斷請(qǐng)求到達(dá),導(dǎo)致MAX3420E INT引腳驅(qū)動(dòng)低電平。

SPI 主機(jī)完成中斷服務(wù),并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。INT 引腳返回到其高靜態(tài)狀態(tài)。(a) 和 (b) 之間的間隔是中斷置位其 IRQ 位和 SPI 主機(jī)清除 IRQ 位之間的時(shí)間。

另一個(gè)中斷請(qǐng)求到達(dá),將 INT 引腳驅(qū)動(dòng)為低電平。

當(dāng)?shù)谝粋€(gè)中斷請(qǐng)求掛起時(shí),第二個(gè)中斷請(qǐng)求到達(dá)。INT 級(jí)別不會(huì)更改,因?yàn)橹辽儆幸粋€(gè)中斷掛起。(實(shí)際上,目前有兩個(gè)待定。

SPI 主機(jī)完成對(duì)其中一個(gè)掛起中斷的處理,并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。INT 引腳保持低電平,因?yàn)橐粋€(gè)中斷仍處于掛起狀態(tài)。

SPI 主機(jī)完成對(duì)剩余中斷請(qǐng)求的處理,并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。沒(méi)有掛起的中斷,因此 INT 引腳返回到其靜態(tài)高電平狀態(tài)。

注意:如果設(shè)置了中斷的IRQ觸發(fā)器(圖1),則認(rèn)為中斷處于掛起狀態(tài)。

此邏輯非常適合輪詢 INT 引腳。如果MAX3420E中的任何內(nèi)容需要維修,并且其中斷使能,則INT引腳為低電平。INT 引腳保持低電平,直到微控制器清除最后一個(gè)掛起的 IRQ 位。

邊緣模式

poYBAGQmWsqAAQDBAABMqmaLcDc622.png

圖5.MAX3420E INT引腳在EDGE模式下的行為(INTLEVEL = 0)。間隔(1)是SPI主機(jī)清除IRQ所需的時(shí)間,間隔(2)為10.67μs。

圖5所示為MAX3420E INT引腳波形,用于邊沿模式,工作在兩個(gè)極性,由POSINT位控制。波形看起來(lái)與電平模式下的波形相似,但有兩個(gè)不同之處。INT 引腳在兩種條件下提供邊沿:

IRQ 位變?yōu)榛顒?dòng)狀態(tài)(其 IRQ 觸發(fā)器進(jìn)行 0-1 轉(zhuǎn)換)。

處理器清除 IRQ 位(通過(guò)向其寫(xiě)入 1),而其他 IRQ 處于掛起狀態(tài)。

第二個(gè)條件確保處理器在仍需要服務(wù)時(shí)獲得優(yōu)勢(shì)。

除了提供邊沿外,INT 引腳還具有活動(dòng)和非活動(dòng)狀態(tài),就像在電平模式下一樣。INT 引腳的非活動(dòng)狀態(tài)取決于 POSINT 位設(shè)置的邊沿極性。在這方面,邊沿模式類(lèi)似于電平模式,因?yàn)槟梢酝ㄟ^(guò)查看INT引腳的狀態(tài)來(lái)了解是否有任何中斷處于掛起狀態(tài):

在負(fù)邊沿模式下,如果沒(méi)有中斷掛起,則INT引腳為高電平;如果中斷掛起,則為低。

在正邊沿模式下,如果沒(méi)有中斷掛起,則INT引腳為低電平;如果中斷掛起,則為高。

以下說(shuō)明將 INT 引腳狀態(tài)稱為活動(dòng)或非活動(dòng)狀態(tài)?;顒?dòng)表示至少有一個(gè)中斷處于掛起狀態(tài);非活動(dòng)表示沒(méi)有掛起的中斷。同樣假設(shè)中斷已啟用,將發(fā)生以下事件。(下面的字母項(xiàng)對(duì)應(yīng)于圖 5 中的字母事件。

中斷請(qǐng)求到達(dá),MAX3420E INT引腳提供邊沿。邊沿的極性取決于 POSINT 位的設(shè)置。由于中斷仍處于掛起狀態(tài),因此 INT 引腳保持其活動(dòng)狀態(tài)。

SPI 主機(jī)完成中斷服務(wù),并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。MAX3420E INT引腳返回非工作狀態(tài)。圖中(a)和(b)之間的間隔(1)是中斷置位和SPI主機(jī)清除IRQ位之間的時(shí)間。

另一個(gè)中斷請(qǐng)求到達(dá),MAX3420E INT引腳提供邊沿并保持工作狀態(tài)。

當(dāng)?shù)谝粋€(gè)中斷請(qǐng)求掛起時(shí),第二個(gè)中斷到達(dá)。MAX3420E INT引腳必須提供另一個(gè)邊沿,因此它在非工作和工作狀態(tài)之間脈沖,以提供適當(dāng)極性的邊沿。該脈沖的寬度固定在MAX10E中為67.3420μs。由于中斷處于掛起狀態(tài),因此 INT 引腳保持活動(dòng)狀態(tài)。

SPI 主機(jī)完成對(duì)其中一個(gè)掛起中斷的維護(hù),并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。INT 引腳提供另一個(gè)邊沿,如步驟 (d) 所示。

SPI 主機(jī)完成對(duì)剩余中斷請(qǐng)求的處理,并通過(guò)向其寫(xiě)入 1 來(lái)清除其 IRQ 位。沒(méi)有掛起的中斷,因此 INT 引腳返回到其非活動(dòng)狀態(tài)。

中斷寄存器

表 1.陰影MAX3420E寄存器位控制中斷系統(tǒng)

pYYBAGQmUk6ATjaWAACKGzyRZ6g991.gif

MAX3420E具有兩組USB中斷,由表1中的陰影寄存器控制。中斷位分為EPIRQ (R11)和EPIEN (R12)中的端點(diǎn)控制,以及USBIRQ (R13)和USBIEN(R14)中的USB控制。全局 IE 位位于 CPUCTL 寄存器中。

位名 違約 位置 設(shè)置者 清除者
IN0BAVIRQ 1 EPIRQ.0 EP0 先進(jìn)先出可用于 μP 加載 加載 EP0BC 寄存器
OUT0DAVIRQ 0 EPIRQ.1 EP0-OUT FIFO 具有主機(jī)數(shù)據(jù) 寫(xiě)入 EPIRQ = 0x02
OUT1DAVIRQ 0 EPIRQ.2 EP1-OUT FIFO 具有主機(jī)數(shù)據(jù) 寫(xiě)入 EPIRQ = 0x04
IN2BAVIRQ 1 EPIRQ.3 EP2-IN 先進(jìn)先出可用于 μP 加載 加載 EP2INBC 寄存器
IN3BAVIRQ 1 EPIRQ.4 EP3-IN 先進(jìn)先出可用于 μP 加載 加載 EP3INBC 寄存器
SUDAVIRQ 0 EPIRQ.5 設(shè)置數(shù)據(jù)可在SUDFIFO中找到 寫(xiě)入 EPIRQ = 0x20
OSCOKIRQ 0 USBIRQ.0 MAX3420E振蕩器/PLL穩(wěn)定 寫(xiě)入 USBIRQ = 0x01
RWUDNIRQ 0 USBIRQ.1 SIE 已完成 RWU 信號(hào) 寫(xiě)入 USBIRQ = 0x02
BUSACTIRQ 0 USBIRQ.2 總線處于活動(dòng)狀態(tài) 寫(xiě)入 USBIRQ = 0x04
URESIRQ 0 USBIRQ.3 主機(jī)開(kāi)始發(fā)出總線復(fù)位信號(hào) 寫(xiě)入 USBIRQ = 0x08
SUSPIRQ 0 USBIRQ.4 主機(jī)暫??偩€ 寫(xiě)入 USBIRQ = 0x10
NOVBUSIRQ 0 USBIRQ.5 V總線比較器1-0過(guò)渡 寫(xiě)入 USBIRQ = 0x20
VBUSIRQ 0 USBIRQ.6 V總線比較器0-1過(guò)渡 寫(xiě)入 USBIRQ = 0x40
URESDNIRQ 0 USBIRQ.7 主機(jī)完成信令總線復(fù)位 寫(xiě)入 USBIRQ = 0x80

表2給出了14個(gè)中斷控制位,當(dāng)MAXQ3420E內(nèi)部邏輯設(shè)置它們時(shí),以及SPI主機(jī)如何清除它們。

中斷請(qǐng)求位

BAV
三個(gè)緩沖器 AVailable (BAV) IRQ 位表示 IN 端點(diǎn) FIFO 可供 SPI 主站加載。MAX3420E在芯片復(fù)位或IN數(shù)據(jù)從端點(diǎn)緩沖器成功發(fā)送到主機(jī)時(shí)置位這些IRQ位。此 IRQ 告訴 SPI 主站緩沖區(qū)已準(zhǔn)備好接受新數(shù)據(jù)。

poYBAGQmUk-ASTheAABeP6Sk448582.gif

圖6.向終結(jié)點(diǎn) 3 發(fā)送 IN 請(qǐng)求的主機(jī)的總線跟蹤。

圖6為IN傳輸?shù)目偩€走線,主機(jī)從MAX3420E請(qǐng)求數(shù)據(jù)。在數(shù)據(jù)包 7145 到達(dá)之前,SPI 主站將字節(jié) 00 00 08 加載到端點(diǎn) 3 IN FIFO (EP3INFIFO) 中。然后,SPI 主機(jī)寫(xiě)入值為 3 的 EP3INBC(端點(diǎn) 3 IN 字節(jié)計(jì)數(shù))寄存器。寫(xiě)入字節(jié)計(jì)數(shù)寄存器可完成三件事:

當(dāng)IN請(qǐng)求到達(dá)時(shí),它告訴MAX3420E發(fā)送多少字節(jié)。

它使端點(diǎn)能夠傳輸數(shù)據(jù)(而不是 NAKing)。

它清除EP3INBAV IRQ位。

MAX3420E用數(shù)據(jù)包3應(yīng)答發(fā)往終端7146的下一個(gè)IN數(shù)據(jù)包。主機(jī)通過(guò)發(fā)送 ACKnowledge (ACK) 數(shù)據(jù)包 7147 來(lái)確認(rèn)無(wú)差錯(cuò)地收到數(shù)據(jù)。當(dāng)MAX3420E檢測(cè)到主機(jī)ACK數(shù)據(jù)包時(shí),設(shè)置EP3INBAV中斷請(qǐng)求位,通知SPI主機(jī)終端FIFO可以加載新數(shù)據(jù)。

如果IN數(shù)據(jù)包在SPI主機(jī)布防終端之前到達(dá),MAX3420E以NAK握手應(yīng)答(圖7)。NAK 握手告知主機(jī)稍后重試 IN 請(qǐng)求。

pYYBAGQmWxOAYKNNAAA_2PvWzSg762.png

圖7.如果MAX3420E尚未準(zhǔn)備好發(fā)送數(shù)據(jù),則發(fā)送NAK。

如果在向主機(jī)傳輸IN數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤,當(dāng)主機(jī)重試IN請(qǐng)求時(shí),MAX3420E自動(dòng)重新發(fā)送數(shù)據(jù)(相同的數(shù)據(jù)切換DATA0/DATA1)。只有在收到主機(jī)的ACK握手后,MAX3420E才會(huì)置位終端的BAV IRQ位,以指示緩沖器已準(zhǔn)備好接收新數(shù)據(jù)。

重要提示:

與所有MAX3420E IRQ位一樣,三個(gè)BAV IRQ位也可以通過(guò)寫(xiě)入1來(lái)清除。

永遠(yuǎn)不要這樣做。

相反,請(qǐng)使用上述方法:通過(guò)寫(xiě)入 IN 端點(diǎn)的字節(jié)計(jì)數(shù)寄存器來(lái)清除 BAV IRQ 位。這是因?yàn)镸AX3420E使用IN端點(diǎn)的BAV中斷請(qǐng)求位作為鎖定機(jī)制。這種機(jī)制確保SPI主機(jī)和MAX3420E的串行接口引擎(SIE)永遠(yuǎn)不會(huì)同時(shí)嘗試使用端點(diǎn)緩沖器。例如,如果清除了 BAV 位,然后在兩個(gè)單獨(dú)的指令中加載字節(jié)計(jì)數(shù),則在更新字節(jié)計(jì)數(shù)寄存器時(shí)可能會(huì)進(jìn)行數(shù)據(jù)包傳輸,并且數(shù)據(jù)將損壞。

BAV IRQ 默認(rèn)值
三個(gè) BAV IRQ 位(在表 1 的默認(rèn)列中顯示為 2)默認(rèn)為 1s。這意味著SPI主機(jī)將在上電或復(fù)位后讀取EPIRQ = 0x19。如果設(shè)置了任何相應(yīng)的 IEN 位,INT 引腳將指示中斷處于掛起狀態(tài)。

雙緩沖端點(diǎn)EP2輸入
MAX3420E EP2-IN端點(diǎn)為雙緩沖。這意味著它具有兩組 64 字節(jié) FIFO 和字節(jié)計(jì)數(shù)寄存器。雙緩沖提高了傳輸帶寬,因?yàn)镾PI主站不需要等待一個(gè)數(shù)據(jù)包傳輸?shù)街鳈C(jī),然后再加載另一個(gè)數(shù)據(jù)包。通過(guò)雙緩沖,SPI主站可以在加載一個(gè)IN FIFO的同時(shí)加載另一個(gè)IN數(shù)據(jù)到主機(jī)。加載 EP2INBC 寄存器時(shí),這兩個(gè)緩沖區(qū)會(huì)“乒乓球”。這將另一個(gè)FIFO(第二組)和字節(jié)數(shù)寄存器提供給SPI主機(jī)。此雙緩沖操作對(duì)固件是透明的。

雙緩沖唯一可觀察到的影響是在初始化時(shí)。IN2BAVIRQ 位在上電或芯片復(fù)位時(shí)置位。通常,您的初始化代碼將數(shù)據(jù)加載到 EP2IN FIFO 中,然后加載 EP2INBC 寄存器以布防傳輸并清除 IN2BAVIRQ 位。當(dāng)你這樣做時(shí),你可能會(huì)驚訝地發(fā)現(xiàn)MAX3420E立即重新確定IN2BAVIRQ位。這表示第二個(gè)緩沖器可供SPI主站加載。

DAV 中斷請(qǐng)求位 OUT 端點(diǎn)具有數(shù)據(jù)可復(fù)制 (DAV) IRQ 位
,以指示已從主機(jī)接收到新數(shù)據(jù)。MAX3420E自動(dòng)處理總線重試,僅在接收到無(wú)差錯(cuò)數(shù)據(jù)時(shí)才置位中斷請(qǐng)求。當(dāng)SPI主站收到DAV中斷請(qǐng)求時(shí),它會(huì)讀取端點(diǎn)的字節(jié)計(jì)數(shù)寄存器以確定數(shù)據(jù)有效負(fù)載大小。然后,SPI 主站從端點(diǎn)的 OUTFIFO 讀取該字節(jié)數(shù)。SPI 主機(jī)通過(guò)寫(xiě)入 1 以正常方式清除 OUTDAV IRQ 位。這會(huì)重新設(shè)置端點(diǎn)以接收下一個(gè) OUT 數(shù)據(jù)包。

在圖8中,主機(jī)發(fā)送一個(gè)OUT PID和3420字節(jié)數(shù)據(jù),MAX1E將其傳輸?shù)紼P3420OUT FIFO。當(dāng)MAX1E驗(yàn)證傳輸無(wú)差錯(cuò)時(shí),更新其EP1OUTBC寄存器以指示四個(gè)字節(jié),將ACK數(shù)據(jù)包發(fā)送回主機(jī),并置位EP1OUTDAV IRQ,告訴SPI主站數(shù)據(jù)可在端點(diǎn)<> FIFO中檢索。

poYBAGQmWyGAA1ZJAAC0rxRvdaI625.png

圖8.將 OUT 數(shù)據(jù)包發(fā)送到終結(jié)點(diǎn) 1 的主機(jī)的總線跟蹤。

雙緩沖端點(diǎn)EP1輸出
MAX3420E EP1輸出端為雙緩沖,這意味著它具有兩組64字節(jié)FIFOS和字節(jié)數(shù)寄存器。雙緩沖意味著,如果另一個(gè)主機(jī)數(shù)據(jù)包正在等待,OUT1DAVIRQ 可以在 SPI 主站清除它后立即重新置言。

SUDAV中斷請(qǐng)求位
當(dāng)主機(jī)向MAX3420E發(fā)送控制傳輸時(shí),MAX3420E將8個(gè)SETUP字節(jié)存儲(chǔ)在<>字節(jié)FIFO中,SPI主機(jī)從SUDFIFO寄存器讀取該字節(jié)。由于外設(shè)始終接受此緩沖區(qū)中的主機(jī)數(shù)據(jù),因此 SUDAVIRQ 就像 OUT 端點(diǎn) FIFO 一樣,當(dāng)來(lái)自主機(jī)的新數(shù)據(jù)可用時(shí),會(huì)斷言其 SUDAV IRQ。SETUP 數(shù)據(jù)包始終包含 <> 個(gè)字節(jié),因此 SETUP 數(shù)據(jù)不需要字節(jié)計(jì)數(shù)寄存器。

OSCOK 中斷請(qǐng)求位 當(dāng)MAX3420E上電、退出芯片復(fù)位
或退出掉電狀態(tài)時(shí),內(nèi)部振蕩器和PLL需要時(shí)間啟動(dòng)和穩(wěn)定。振蕩器OK OK (OSCOK) IRQ表示MAX3420E已準(zhǔn)備好工作。

pYYBAGQmUlKASmOsAAAQC1z0AxQ071.gif

圖9.示例代碼復(fù)位MAX3420E并等待OSCOK后退出。

圖9是使用CHIPRES寄存器位復(fù)位MAX3420E的示例代碼。由于芯片復(fù)位停止內(nèi)部振蕩器,代碼通過(guò)設(shè)置CHIPRES = 0去除復(fù)位信號(hào)后,應(yīng)等待振蕩器穩(wěn)定后再使用MAX3420E。

RWUDN 中斷請(qǐng)求位
當(dāng)處于掛起狀態(tài)時(shí),USB 外圍設(shè)備可能會(huì)發(fā)出遠(yuǎn)程喚醒 (RWU) 信號(hào),以告知主機(jī)恢復(fù)總線活動(dòng)。USB 規(guī)范將遠(yuǎn)程喚醒信號(hào)定義為 1ms 至 15ms K 狀態(tài)。SPI 主機(jī)通過(guò)將 SIGnal 遠(yuǎn)程喚醒 (SIGRWU) 位設(shè)置為 1 來(lái)啟動(dòng) RWU 信令。

當(dāng)SPI主機(jī)設(shè)置SIGRWU位時(shí),MAX3420E等待5ms,驅(qū)動(dòng)K狀態(tài)10ms,然后置位遠(yuǎn)程喚醒DoNe中斷請(qǐng)求(RWUDNIRQ)位。5ms 延遲可確保滿足另一個(gè) USB 要求:總線必須空閑(J 狀態(tài))至少 5ms,然后外設(shè)才會(huì)啟動(dòng)恢復(fù)信令。

poYBAGQmWzCAPehaAAApA0umos0804.png

圖 10.發(fā)出遠(yuǎn)程喚醒信號(hào)的示例代碼。

圖 10 顯示了發(fā)出遠(yuǎn)程喚醒信號(hào)的示例代碼。注意,MAX3420E對(duì)信號(hào)進(jìn)行倍增,并在完成后置位IRQ。MAX3420E對(duì)所有定時(shí)USB事件執(zhí)行此操作,完成后提供中斷,因此SPI主機(jī)無(wú)需定時(shí)信號(hào)間隔。

圖10中的代碼設(shè)置SIGRWU位,然后在RWUDNIRQ位上循環(huán),以確定10ms信號(hào)何時(shí)經(jīng)過(guò)。然后,它將SIGRWU = 0設(shè)置為<>并清除IRQ位。當(dāng)然,在多任務(wù)SPI主站中,您將響應(yīng)RWUDNIRQ中斷請(qǐng)求,而不是浪費(fèi)時(shí)間直接檢查IRQ位。

SPI主機(jī)應(yīng)在收到RWUDNITQ中斷后5ms內(nèi)關(guān)閉SIGRWU位。否則,MAX3420E啟動(dòng)另一個(gè)10ms K狀態(tài),并重復(fù)該序列(等待5ms、10ms、K狀態(tài)),直到SIGRWU = 0。在 RWU 信令進(jìn)行時(shí)設(shè)置 SIGRWU = 0 不會(huì)終止 RWU 信令。

當(dāng)SPI主機(jī)設(shè)置SIGRWU = 3420時(shí),如果MAX1E處于關(guān)斷狀態(tài)(PWRDOWN = 1),MAX3420E自動(dòng)重啟振蕩器并等待振蕩器穩(wěn)定后再啟動(dòng)RWU信號(hào)。在這種情況下,SPI 主站不需要檢查 OSCOK IRQ。

BUSACT 中斷請(qǐng)求位 MAX23420E在檢測(cè)到USB數(shù)據(jù)包開(kāi)頭的SYNC碼型時(shí)設(shè)置BUSACT IRQ位
。USB 總線復(fù)位不被視為總線活動(dòng),因此不會(huì)激活 BUSACK 中斷請(qǐng)求。

URES 和 URESDN 中斷請(qǐng)求位
USB 主機(jī)通過(guò)驅(qū)動(dòng)至少 50 毫秒的單端 zerO (SE0) 狀態(tài)(D+ 和 D- 驅(qū)動(dòng)低電平)來(lái)重置外設(shè)。MAX3420E在檢測(cè)到2.5μs的SE0后,對(duì)USB RESet IRQ (URESIRQ)進(jìn)行定位。然后,當(dāng)主機(jī)完成復(fù)位信號(hào)時(shí),它會(huì)斷言 USB RESet DoNe IRQ (URESDNIRQ)。

由于SPI主機(jī)需要監(jiān)測(cè)USB總線復(fù)位事件,MAX3420E在總線復(fù)位期間不會(huì)清除URESIE、URESDNIE或IE中斷使能位。在總線復(fù)位期間,它會(huì)清除 EPIEN 和 USBIEN 寄存器中的所有其他中斷使能位。

SUSP中斷請(qǐng)求位
當(dāng)MAX3420E檢測(cè)到總線不活動(dòng)3ms(恒定J狀態(tài))時(shí),它觸發(fā)SUSPend中斷請(qǐng)求(SUSPIRQ)。如果使用MAX3420E的外設(shè)為總線供電,則必須進(jìn)入低功耗狀態(tài),以最小化從V吸收的電流??偩€.在這種情況下,SPI主機(jī)通過(guò)關(guān)斷耗電外設(shè),然后通過(guò)設(shè)置PWRDOWN = 3420將MAX1E置于低功耗模式。這將停止MAX3420E振蕩器,使MAX3420E進(jìn)入最低功耗狀態(tài)。

值得一提的是兩個(gè)編程說(shuō)明:

清除SUSPIRQ位不會(huì)阻止中斷在3ms后重新確認(rèn)。為避免在總線掛起時(shí)重復(fù)掛起中斷,請(qǐng)清除掛起 IEN 位,直到總線恢復(fù)信令。

內(nèi)部掛起定時(shí)器邏輯由MAX3420E的內(nèi)部振蕩器計(jì)時(shí)。因此,如果關(guān)閉芯片(設(shè)置PWRDOWN = 1),然后嘗試通過(guò)寫(xiě)入1來(lái)清除SUSPIRQ位,MAX3420E將不會(huì)清除該位。MAX3420E需要現(xiàn)已停止的內(nèi)部時(shí)鐘

VBUS 和 NOVBUS 中斷請(qǐng)求位
自供電外設(shè)可以檢測(cè)是否已插入U(xiǎn)SB并使用這些中斷供電。中斷由內(nèi)部VBUS比較器激活,該比較器將VBComp引腳電壓與內(nèi)部參考電壓進(jìn)行比較。它們是邊緣敏感的,在施加VBUS電壓(VBUSIRQ)或去除VBUS電壓時(shí)斷言(NOVBUSIRQ)。

總線供電的外圍設(shè)備不需要檢測(cè)VBUS,因?yàn)樗怯蒝BUS供電的。這將釋放VBComp引腳,以便用作通用輸入。在此應(yīng)用中,VBComp引腳沒(méi)有內(nèi)部拉電阻,因此應(yīng)在VBComp針腳和VL之間連接拉電阻。

編程技巧

清除 IEN 位 芯片復(fù)位
在芯片復(fù)位期間清除所有 IE 位
。芯片復(fù)位定義為以下情況之一:

VLMAX3420E通電(上電復(fù)位)。

MAX3420E RES#引腳被驅(qū)動(dòng)為低電平。

SPI 主站設(shè)置位 CHIPRES = 1。

總線復(fù)位 當(dāng)MAX3420E檢測(cè)到USB總線復(fù)位(總線不活動(dòng)3ms)時(shí),除<>位外,所有IE位
均被清除。SPI主機(jī)可能需要接受與總線復(fù)位相關(guān)的中斷,以監(jiān)視總線復(fù)位信號(hào)的狀態(tài)。因此,以下 IE 位不受總線重置的影響:

URESIE

URESDNIE

IE(全局中斷啟用)

由于 USB 總線復(fù)位會(huì)清除大部分 IE 位,因此應(yīng)組織控制固件,以便在總線復(fù)位完成后重新啟用所需的中斷。

清除 BAV 和 DAV IRQ 位
請(qǐng)記住,DAV IRQ 位以正常方式清除,方法是將 1 寫(xiě)入位。 BAV 位(用于 IN 端點(diǎn))的清除方式不同,即通過(guò)寫(xiě)入字節(jié)計(jì)數(shù)寄存器。

注意:即使認(rèn)為MAX3420E中斷輸出引腳稱為INT引腳,它有時(shí)也可能具有負(fù)極性(例如電平模式)。

shenhbj:gt

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

    關(guān)注

    48

    文章

    7455

    瀏覽量

    150858
  • 電源
    +關(guān)注

    關(guān)注

    184

    文章

    17486

    瀏覽量

    249163
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7877

    瀏覽量

    263717
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MAX3420E系統(tǒng)調(diào)試步驟

    MAX3420E中斷系統(tǒng),了解更詳細(xì)的信息。 USB插入后插入U(xiǎn)SB (CONNECT = 0)后,即使USB沒(méi)有通信,仍有一些USBIRQ位會(huì)置位。EPIRQ位與上面的情況一致,但是更多
    發(fā)表于 08-24 16:39

    基于SPI芯片MAX3420的USB控制器接口設(shè)計(jì)

    工作方式,協(xié)議中間層主要包括總線重連接、EP0收發(fā)和中斷處理等幾部分,其工作流程如圖6所示。協(xié)議上層應(yīng)用程序由程序員按照規(guī)范根據(jù)具體需要編寫(xiě)。5 總 結(jié)將MAX3420用于汽車(chē)車(chē)載故障診斷儀的USB接口
    發(fā)表于 11-20 11:13

    MAX3420E全速u(mài)***接口芯片與Ez USB相比如何

    你好,我想用柏樹(shù)一我的DAQ板接口到PC。你們能給我點(diǎn)一些鏈接,我在哪里可以找到入門(mén)的文檔/參考設(shè)計(jì)等,我用max3420e全速USB接口芯片。我不知道如何與EZ USB以外的速度,如編碼復(fù)雜度等我
    發(fā)表于 03-01 06:49

    MAX3420E外設(shè)控制器的中斷系統(tǒng),看完你就明白了

    求大神詳細(xì)介紹一下MAX3420E外設(shè)控制器的中斷系統(tǒng)
    發(fā)表于 04-19 09:42

    MAX3420E的USB杖舉程序(及其他)

    MAX3420E USB控制器使設(shè)計(jì)人員能夠給任何系統(tǒng)增加USB外設(shè)功能。MAX3420E提供了一個(gè)SPI接口用于訪問(wèn)寄存器組,而沒(méi)有包含板上微處理器,因此可以編寫(xiě)一套適用于多種處理器的MAX
    發(fā)表于 04-23 16:47 ?44次下載

    MAX3420E的USB杖舉程序(及其他)

    摘要:MAX3420E USB控制器使設(shè)計(jì)人員能夠給任何系統(tǒng)增加USB外設(shè)功能。MAX3420E提供了一個(gè)SPI接口用于訪問(wèn)寄存器組,而沒(méi)有包含板上微處理器,因此可以編寫(xiě)一套適用于多種處理器的
    發(fā)表于 04-25 08:41 ?19次下載

    MAX3420E編程指南

    摘要:MAX3420E USB外設(shè)控制器采用SPI借口控制, 能夠與任何微處理器連接構(gòu)成全速USB外設(shè)。微處理器通過(guò)21位內(nèi)部寄存器控制MAX3420E, 本文說(shuō)明了寄存器每一位的功能, 并提供了一些編程
    發(fā)表于 04-25 08:49 ?32次下載

    MAX3420E信息卡

    MAX3420E信息
    發(fā)表于 04-29 09:18 ?23次下載

    為任何系統(tǒng)增加USB

    摘要:MAX3420E利用通用的微控制器,簡(jiǎn)化了USB外設(shè)的設(shè)計(jì)。本文在介紹MAX3420E的基礎(chǔ)上,重點(diǎn)討論器件的SPI接口。說(shuō)明器件如何與硬件SPI口或位仿真的通用I/O口進(jìn)行連接,并給出了利
    發(fā)表于 04-25 08:42 ?972次閱讀
    為任何<b class='flag-5'>系統(tǒng)</b>增加USB

    MAX3420E系統(tǒng)調(diào)試

    摘要:本應(yīng)用筆記列出了保證MAX3420E正常工作需要的詳細(xì)檢查步驟,包括系統(tǒng)的檢查過(guò)程和調(diào)試提示。 引言當(dāng)您設(shè)計(jì)了一塊電路板,將MAX3420E與您喜愛(ài)的微控制
    發(fā)表于 04-25 08:43 ?1164次閱讀
    <b class='flag-5'>MAX3420E</b><b class='flag-5'>系統(tǒng)</b>調(diào)試

    MAX3420E中斷系統(tǒng)

    摘要:MAX3420E可為微控制器等任何SPI主控制器加入U(xiǎn)SB外設(shè)功能。MAX3420E的工作主要通過(guò)中斷請(qǐng)求(IRQ)位協(xié)助完成,這些中斷請(qǐng)求位提示SPI主控制器處理USB事件。本
    發(fā)表于 04-25 08:44 ?749次閱讀
    <b class='flag-5'>MAX3420E</b><b class='flag-5'>中斷</b><b class='flag-5'>系統(tǒng)</b>

    MAX3420E常見(jiàn)問(wèn)題

    摘要:本應(yīng)用筆記列出了SPI接口外設(shè)控制器MAX3420E的常見(jiàn)問(wèn)題(FAQ)。 一般問(wèn)題 什么是MAX3420E? MAX3420E包含微處理器嗎? MAX3420E
    發(fā)表于 04-25 08:46 ?1575次閱讀

    MAX3420E USB外設(shè)控制器,SPI接口

    MAX3420E包含實(shí)現(xiàn)USB 2.0全速USB外設(shè)所需的數(shù)字邏輯電路和模擬電路。全速收發(fā)器具有±15kV ESD保護(hù)和可編程的USB連接和斷開(kāi)特性。內(nèi)部的串行接口引擎(SIE)負(fù)責(zé)處理底層USB協(xié)議,如錯(cuò)誤校驗(yàn)和總線重試。
    發(fā)表于 01-19 09:05 ?1110次閱讀
    <b class='flag-5'>MAX3420E</b> USB外設(shè)控制器,SPI接口

    MAX3420E與SPI主控制器構(gòu)成USB外設(shè)器件的中斷系統(tǒng)分析

    由于SPI主控制器可通過(guò)寫(xiě)1來(lái)清除一個(gè)MAX3420E IRQ位,而寫(xiě)0則不改變其他寄存器位,因此,SPI主控制器可直接寫(xiě)入位屏蔽值以清除URESIRQ位。這樣,上述代碼中的最后三條語(yǔ)句便可由下面的單條語(yǔ)句所替代:
    發(fā)表于 04-25 11:06 ?626次閱讀
    <b class='flag-5'>MAX3420E</b>與SPI主控制器構(gòu)成USB外設(shè)器件的<b class='flag-5'>中斷</b><b class='flag-5'>系統(tǒng)</b>分析

    MAX3420E 中斷系統(tǒng)

    發(fā)表于 11-18 23:48 ?0次下載
    <b class='flag-5'>MAX3420E</b> <b class='flag-5'>中斷</b><b class='flag-5'>系統(tǒng)</b>