PIC18F2455/2550/4455/4550之通用串行總線USB
PIC18FX455/X550 系列器件包含全速和低速兼容的USB串行接口引擎(Serial Interface Engine,SIE),它允許在任何USB主機(jī)和PIC單片機(jī)之間進(jìn)行高速通信。 可以利用內(nèi)部收發(fā)器或通過(guò)外部收發(fā)器將SIE 直接連接到USB。內(nèi)部的3.3V穩(wěn)壓器也可以在5V的應(yīng)用中被用作內(nèi)部收發(fā)器的電源。
本文引用地址:http://cafeforensic.com/article/201710/365823.htmUSB模塊還包含了某些特殊硬件以提高其工作性能。在器件的數(shù)據(jù)存儲(chǔ)空間(USB RAM)中提供了雙端口存儲(chǔ)器,以便單片機(jī)和 SIE 之間可以直接進(jìn)行存儲(chǔ)器訪問(wèn)。 此外,還提供了緩沖器描述符,允許用戶任意設(shè)置USB RAM 空間中供端點(diǎn)使用的存儲(chǔ)區(qū)。 此外還提供了并行通信端口以方便大量數(shù)據(jù)的不間斷傳輸,比如將數(shù)據(jù)等時(shí)傳送到外部存儲(chǔ)器緩沖器。
USB 狀態(tài)和控制
• USB控制寄存器(UCON ):用于控制模塊在傳輸過(guò)程中的操作, 此寄存器包含控制行為的配置位。USBEN,將此位置1 前還是需要預(yù)先對(duì)模塊進(jìn)行全面的配置。PKTDIS位,當(dāng)接受到SETUP令牌時(shí),此位被SIE置1,以允許處理SETUP。單片機(jī)不能將此位置1,只能將此位清零,以允許SIE繼續(xù)發(fā)送和或接收。RESUME位,允許外設(shè)通過(guò)執(zhí)行恢復(fù)信令來(lái)進(jìn)行遠(yuǎn)程喚醒。 要進(jìn)行有效的遠(yuǎn)程喚醒,固件必須將RESUME位置1 并保持此狀態(tài)10 ms ,然后將此位清零。SUSPND 位將模塊和支持電路(即穩(wěn)壓器)置于低功耗模式。 SIE 的輸入時(shí)鐘也被禁止。響應(yīng)IDLEIF 中斷時(shí),該位必須由軟件置位。 在產(chǎn)生ACTVIF 中斷之后,由固件將此位復(fù)位。 當(dāng)此位有效時(shí),設(shè)備與與總線處于連接狀態(tài),但是收發(fā)器輸出處于空閑狀態(tài)。 VUSB引腳上的電壓根據(jù)此位值的不同而變化。在 IDLEIF 請(qǐng)求之前將此位置1,將導(dǎo)致不可預(yù)料的總線行為。
• USB配置寄存器(UCFG ):在通過(guò) USB通信之前,必須對(duì)與模塊相關(guān)的內(nèi)部和 / 或外部硬件進(jìn)行配置。 大部分配置是使用UCFG 寄存器獨(dú)立的。USB穩(wěn)壓器也是通過(guò)此配置寄存器控制的。UFCG 寄存器中的控制位可用于控制USB模塊的絕大部分系統(tǒng)級(jí)行為,包括: • 總線速度(全速和低速)• 片上上拉電阻使能 • 片上收發(fā)器使能 • 乒乓緩沖器的使用。
內(nèi)部收發(fā)器,USB外設(shè)有一個(gè)內(nèi)置的USB 2.0 全速和低速兼容的收發(fā)器,在USB內(nèi)部與SIE 相連。 此功能部件在低成本的單芯片應(yīng)用中很有用。UTRDIS 位控制收發(fā)器,它在默認(rèn)情況下是使能的(UTRDIS=0)。FSEN 位控制收發(fā)器的速度,將此位置1將使能全速工作模式。片上USB上拉電阻由UPUEN 位控制。
外部收發(fā)器,此模塊為片外收發(fā)器提供支持。 在因?yàn)槲锢項(xiàng)l件限制而要求收發(fā)器遠(yuǎn)離SIE 的應(yīng)用中要用到片外收發(fā)器。例如,需要與USB電氣隔離的應(yīng)用可以通過(guò)某些隔離元件將外部收發(fā)器連接到單片機(jī)的SIE。通過(guò)將UTRDIS 位置1 可以使能外部收發(fā)器。模塊中有6 條信號(hào)線用來(lái)與外部收發(fā)器進(jìn)行通信并控制外部收發(fā)器:
• VM :?jiǎn)味薉-線路輸入 (VM 和VP 信號(hào)將串行總線上不能用RCV 信號(hào)捕捉的情況報(bào)告給SIE。這些信號(hào)的組合狀態(tài)和它們的說(shuō)明在表17-1 和表17-2中列出。)
• VP: 單端D+線路輸入
• RCV:差分接收器輸入 (RCV信號(hào)是由外部收發(fā)器輸出到SIE 的,它表示將串行總線上的差分信號(hào)轉(zhuǎn)換為一串單脈沖序列)
• VMO:差分線路驅(qū)動(dòng)器輸出 (VPO和VMO信號(hào)是由SIE 輸出到外部收發(fā)器的)
• VPO:差分線路驅(qū)動(dòng)器輸出
• OE : 輸出使能
• USB傳輸狀態(tài)寄存器(USTAT):USB 狀態(tài)寄存器報(bào)告SIE 中的事務(wù)狀態(tài)。 當(dāng)SIE 發(fā)出USB傳輸完成中斷信號(hào)時(shí),應(yīng)該讀USTAT以確定傳輸?shù)臓顟B(tài)。 USTAT 包含傳輸端點(diǎn)編號(hào)、傳輸方向和乒乓緩沖器指針值(如果使用的話)。當(dāng)SIE使用緩沖器讀寫數(shù)據(jù)結(jié)束后,它將更新USTAT寄存器。 如果在為事務(wù)完成中斷提供服務(wù)之前進(jìn)行了另一次USB傳輸,SIE 將把下一次傳輸?shù)臓顟B(tài)保存到狀態(tài)FIFO中。
• USB設(shè)備地址寄存器(UADDR):USB地址寄存器包含唯一的USB地址,當(dāng)此地址有效時(shí),可被外設(shè)識(shí)別。 當(dāng)接收到由URSTIF 表示的USB復(fù)位信號(hào),或接收到來(lái)自單片機(jī)的復(fù)位信息時(shí),UADDR 復(fù)位為00h。 單片機(jī)必須在USB啟動(dòng)階段(枚舉)寫入U(xiǎn)SB地址,該操作受Microchip USB固件支持。
• 幀編號(hào)寄存器(UFRMH:UFRML):幀編號(hào)寄存器包含 11 位幀編號(hào)。 低字節(jié)被保存在UFRML中,而高3 位則被保存在UFRMH 中。 不管是否接收到SOF令牌,都用當(dāng)前幀編號(hào)更新該寄存器對(duì)。對(duì)于單片機(jī)而言,這些寄存器是只讀的。 幀編號(hào)寄存器主要用于同步傳輸。
• 端點(diǎn)使能寄存器0 到15(UEPn):
USB 端點(diǎn)控制:16個(gè)可用的雙向端點(diǎn)中的每一個(gè)都有自己獨(dú)立的控制寄存器UEPn(其中n 表示端點(diǎn)編號(hào))。每個(gè)寄存器相應(yīng)控制位的功能都是相同的。EPHSHK位控制端點(diǎn)握手,將此位置1將使能USB握手。 通常,除使用同步端點(diǎn)以外,此位總是置1 的。EPCONDIS位用于使能或禁止通過(guò)端點(diǎn)進(jìn)行的USB控制操作(SETUP)。清零此位將使能SETUP 事務(wù);注意必須將相應(yīng)的EPINEN和EPOUTEN 位置1 以使能IN和OUT事務(wù)。 因?yàn)閁SB規(guī)范中端點(diǎn)0是默認(rèn)控制端點(diǎn),所以對(duì)于端點(diǎn)0 ,此位將總是被清零的。EPOUTEN 位用于使能或禁止主機(jī)的USBOUT事務(wù)。 將此位置1 則使能OUT事務(wù)。 同樣,EPINEN 位將使能或禁止主機(jī)的 USB IN事務(wù)。EPSTALL 位用于指示端點(diǎn)的 STALL 狀態(tài)。如果一個(gè)特殊的端點(diǎn)發(fā)出了一個(gè)STALL ,那么SIE 將把這對(duì)端點(diǎn)的EPSTALL位置1。 此位將保持置1 直到由固件清零或SIE 復(fù)位。
USB RAM:USB數(shù)據(jù)通過(guò)稱為USB RAM的存儲(chǔ)空間在單片機(jī)內(nèi)核和SIE之間傳送。 USB RAM 是一個(gè)特殊的雙端口存儲(chǔ)器,被映射到普通數(shù)據(jù)存儲(chǔ)空間的Bank 4到Bank 7(400h到7FFh),總?cè)萘繛?1KB。Bank 4 (400h到4FFh)專用于端點(diǎn)緩沖控制,而Bank 5到Bank7 可用于USB數(shù)據(jù)。根據(jù)所使用的緩沖類型,除了Bank 4的8 個(gè)字節(jié)之外,所有字節(jié)都可用作USB緩沖器空間。雖然USB RAM 可用作單片機(jī)的數(shù)據(jù)存儲(chǔ)器,但由SIE訪問(wèn)的區(qū)域不能被單片機(jī)訪問(wèn)。這里采用了一種信號(hào)機(jī)制來(lái)確定任意給定時(shí)間內(nèi)對(duì)專用緩沖器的訪問(wèn)。
幀:總線上的通信信息被劃分為多個(gè)1ms的時(shí)隙,稱為幀。每幀都包含多個(gè)設(shè)備和端點(diǎn)的多種事務(wù)。
USB規(guī)范中定義了四種傳輸類型:
• 同步:這種傳輸類型可確保及時(shí)傳遞大量數(shù)據(jù)(最大為1023字節(jié)),但是不能保證數(shù)據(jù)的完整性。 它適用于丟失少量數(shù)據(jù)無(wú)關(guān)緊要的通信應(yīng)用,比如音頻數(shù)據(jù)。
• 批量:這種傳輸類型允許在傳輸大量數(shù)據(jù)的同時(shí)確保數(shù)據(jù)的完整性,但是傳輸時(shí)限不能保證。
• 中斷:這種傳輸類型可以確保及時(shí)傳輸少量數(shù)據(jù),并確保數(shù)據(jù)的完整性。
• 控制:這種類型提供設(shè)備啟動(dòng)控制。全速設(shè)備支持所有傳輸類型,而低速設(shè)備只能使用中斷和控制傳輸方式。
緩沖器描述符和緩沖器描述符表
Bank 4 中的寄存器組成稱為“緩沖器描述符表”(Buffer Descriptor Table,BDT )的結(jié)構(gòu),專門用于控制端點(diǎn)緩沖器。 這為用戶構(gòu)建和控制各種長(zhǎng)度和配置的端點(diǎn)緩沖器提供了靈活的方法。BDT 由緩沖描述符(Buffer Descriptor,BD)組成,它用于定義和控制USB RAM 空間中的實(shí)際緩沖器。 每個(gè)BD由四個(gè)寄存器組成,其中 n 代表64個(gè)可能的BD中的一個(gè)(范圍是0 到63):
• BDnSTAT: BD 狀態(tài)寄存器
• BDnCNT : BD 字節(jié)計(jì)數(shù)寄存器
• BDnADRL :BD低地址寄存器
• BDnADRH :BD高地址寄存器
BD 在序列中總是以一個(gè)四字節(jié)的數(shù)據(jù)塊BDnSTAT:BDnCNT:BDnADRL:BDnADRH)出現(xiàn), BDnSTAT的地址總是一個(gè)相對(duì)于400h的偏移量4n(以十六進(jìn)制數(shù)表示),其中 n 是緩沖器描述符編號(hào)。根據(jù)所使用的緩沖配置(第17.4.4 節(jié)“乒乓緩沖”),最多可以有32、33或64組緩沖器描述符。 BDT 至少要8 字節(jié)長(zhǎng),因?yàn)閁SB規(guī)范規(guī)定,每個(gè)設(shè)備必須具有初始啟動(dòng)所需的輸入和輸出端點(diǎn)0。 根據(jù)端點(diǎn)和緩沖配置,BDT 可以有256 個(gè)字節(jié)。
雖然可以被看作特殊功能控制寄存器,緩沖器描述符的狀態(tài)和地址寄存器并不是硬件映射的,這與 Bank 15 中的傳統(tǒng)單片機(jī)SFR不同。 如果與特定BD對(duì)應(yīng)的端點(diǎn)未被使能,則該端點(diǎn)的寄存器將不被使用。它表現(xiàn)為可用的RAM 空間,而不是未實(shí)現(xiàn)的地址。只能通過(guò)將UEPn《1》位置1 使能端點(diǎn),才能將這些地址作為BD寄存器使用。 如同數(shù)據(jù)存儲(chǔ)區(qū)的任何單元一樣,BD寄存器的值在器件復(fù)位時(shí)都會(huì)是不確定的。
圖17-6 所示為一個(gè)BD的示例,該 BD用于從500h開始的40字節(jié)緩沖器。 如果已經(jīng)使用UEPn 寄存器使能了對(duì)應(yīng)的端點(diǎn),就只有特定的BD寄存器組有效。 USBRAM中所有BD寄存器都可用。 在使能端點(diǎn)之前應(yīng)該設(shè)置好每個(gè)端點(diǎn)的BD。
BD狀態(tài)和配置:緩沖器描述符不僅僅定義端點(diǎn)緩沖器的大小,還決定了它的配置和控制。 大部分配置都是通過(guò)BD狀態(tài)寄存器BDnSTAT完成的。 每個(gè)BD都有與自己一一對(duì)應(yīng)的、帶編號(hào)的BDnSTAT寄存器。和其他控制寄存器不同,BDnSTAT 寄存器內(nèi)的位的設(shè)置與具體應(yīng)用息息相關(guān)。 有兩種不同的配置,決定特定時(shí)間修改BD和緩沖區(qū)的是單片機(jī)還是USB模塊。 只有一個(gè)位是這兩種配置共享的。
緩沖器所有權(quán):因?yàn)镃PU和USB模塊共享緩沖器及其BD,所以使用了簡(jiǎn)單的信號(hào)機(jī)制來(lái)區(qū)分更新BD 和相關(guān)緩沖器的是CPU還是USB??梢允褂肬OWN(BDnSTAT《7》)作為信號(hào)來(lái)加以區(qū)分。UOWN 是兩種配置的BDnSTAT中唯一共享的位。
當(dāng)UOWN清零時(shí),BD 由單片機(jī)內(nèi)核“所有”。 當(dāng)UOWN位置1 時(shí),BD和緩沖器模塊由USB外設(shè)“所有”,此時(shí)內(nèi)核不能夠修改 BD 或相應(yīng)的數(shù)據(jù)緩沖器。注意,當(dāng)SIE 擁有緩沖器時(shí)單片機(jī)內(nèi)核仍可以讀BDnSTAT ,反之亦然。
根據(jù)寄存器的更新源的不同,緩沖器描述符具有不同的意義。 在分配給USB外設(shè)所有權(quán)之前,用戶可以通過(guò)BDnSTAT 配置外設(shè)的基本操作。 此時(shí),也可設(shè)置字節(jié)計(jì)數(shù)和緩沖器地址寄存器。
當(dāng)UOWN置1 時(shí),用戶就不能再依賴寫入BD的值了。此時(shí),SIE 根據(jù)需要更新BD,改寫原來(lái)的 BD值。 SIE將使用PID 令牌來(lái)更新 BDnSTAT 寄存器,同時(shí)也將更新傳輸計(jì)數(shù)值BDnCNT 。在準(zhǔn)備設(shè)置端點(diǎn)之前,BDT 的BDnSTAT 字節(jié)總是最后更新的字節(jié)。 當(dāng)事務(wù)完成時(shí),SIE 將清零UOWN位。 唯一例外的情況是在使能KEN和/ 或BSTALL 的時(shí)候。當(dāng)UOWN位置1 時(shí),硬件上并沒(méi)有任何機(jī)制來(lái)阻止單片機(jī)對(duì)存儲(chǔ)區(qū)的訪問(wèn)。 因此,如果單片機(jī)嘗試在 SIE 擁有USB RAM 時(shí)更改該存儲(chǔ)區(qū),可能會(huì)出現(xiàn)不可預(yù)料的后果。 同樣,在USB外設(shè)將USB RAM 所有權(quán)歸還給單片機(jī)之前,讀該存儲(chǔ)區(qū)也可能會(huì)導(dǎo)致數(shù)據(jù)出錯(cuò)。
BDnSTAT 寄存器(CPU模式):當(dāng)UOWN = 0 時(shí),單片機(jī)內(nèi)核擁有 BD。此時(shí),該寄存器的其他七個(gè)位是控制位。保持使能位KEN(BDnSTAT《5》)決定BD 所有權(quán)的歸屬。 如果此位被置1,一旦 UOWN位被置1,BD將保持被SIE 擁有,而與端點(diǎn)活動(dòng)無(wú)關(guān)。這將防止USTAT FIFO 被更新,同時(shí)防止端點(diǎn)的事務(wù)完成中斷標(biāo)志被置1 。 只有在選擇并行端口而不是USB RAM作為數(shù)據(jù)I/O通道時(shí),才使能此功能。
地址遞增禁止位INCDIS (BDnSTAT《4》)控制 SIE 的自動(dòng)地址遞增功能。INCDIS 置1 將禁止SIE 在發(fā)送或接收每個(gè)字節(jié)時(shí)自動(dòng)遞增緩沖器地址。只有在使用SPP端口時(shí)才使能此功能,此時(shí)每個(gè)數(shù)據(jù)字節(jié)都被發(fā)送到或來(lái)自同一個(gè)存儲(chǔ)單元。
數(shù)據(jù)Toggle 同步使能位DTSEN(BDnSTAT《3》)控制數(shù)據(jù)傳輸?shù)钠媾夹r?yàn)。將DTSEN置1 將使能SIE 的數(shù)據(jù) Toggle 同步,將數(shù)據(jù)包的奇偶校驗(yàn)位對(duì)照 DTS(BDnSTAT《6》)的值進(jìn)行驗(yàn)證。 如果包不是同步到達(dá)的,數(shù)據(jù)將被忽略,不會(huì)被寫入 USB RAM,并且 USB事務(wù)完成中斷標(biāo)志也不會(huì)被置1 。 SIE 將把ACK令牌發(fā)回給主機(jī)對(duì)接收作出應(yīng)答。 表17-3 匯總了DTSEN位對(duì)SIE 的影響。
緩沖器停止位BSTALL (BDnSTAT《2》)為控制傳輸提供支持,通常在端點(diǎn)0 只停止一次。它同時(shí)支持USB 規(guī)范第9 章中指定的SET_FEATURE/CLEAR_FEATURE命令,對(duì)默認(rèn)控制端點(diǎn)外的任何端點(diǎn)為特有的連續(xù)STALL 。
BSTALL 位使能緩沖器停止。如果接收到的令牌要使用單元中的BD,BSTALL 置1 將導(dǎo)致SIE 將STALL 令牌返回到主機(jī)。 相應(yīng)的UEPn 控制寄存器中的EPSTALL位被置1,并且在發(fā)送STALL 到主機(jī)時(shí)產(chǎn)生STALL 中斷。 UOWN 位保持置1 并且BD 不改變,除非接收到SETUP令牌。 在這種情況下,STALL 條件被清除并且BD的所有權(quán)返還給單片機(jī)內(nèi)核。
BD9:BD8 位(BDnSTAT《1:0》 )存儲(chǔ)SIE 字節(jié)計(jì)數(shù)的高2 位,低8 位被存儲(chǔ)在相應(yīng)的BDnCNT 寄存器中。
BDnSTAT 寄存器(SIE 模式):當(dāng)BD及其緩沖器歸SIE 所有時(shí),BDnSTAT 中的大部分位都有了不同的定義。 配置如寄存器17-6所示。 一旦UOWN置1,以前用戶寫入的任何數(shù)據(jù)或控制設(shè)置都會(huì)被來(lái)自SIE 的數(shù)據(jù)改寫。 SIE 使用令牌包標(biāo)識(shí)符(Packet IdenTIfier,PID )更新BDnSTAT寄存器,該P(yáng)ID 存儲(chǔ)在BDnSTAT《5:3》 中。對(duì)應(yīng)的BDnCNT寄存器中的傳輸計(jì)數(shù)被更新,該八位寄存器的值溢出得到的計(jì)數(shù)值的高兩位,被保存在BDnSTAT《1:0》 中。
BD字節(jié)計(jì)數(shù):字節(jié)計(jì)數(shù)代表將在一次IN 傳輸過(guò)程中被發(fā)送的字節(jié)總數(shù)。在IN傳輸之后,SIE 將返回發(fā)送到主機(jī)的字節(jié)數(shù)。在OUT傳輸過(guò)程中,字節(jié)計(jì)數(shù)代表可以被接收并存儲(chǔ)到USB RAM 中的最大字節(jié)數(shù)。 在OUT傳輸之后,SIE將返回實(shí)際接收到的字節(jié)數(shù)。 如果接收到的字節(jié)數(shù)超過(guò)設(shè)定的字節(jié)計(jì)數(shù),數(shù)據(jù)包將被拒絕,同時(shí)還將產(chǎn)生NAK握手。 發(fā)生這種情況時(shí),字節(jié)計(jì)數(shù)不被更新。
10位字節(jié)計(jì)數(shù)被分別保存到兩個(gè)寄存器中。 低8 位在BDnCNT寄存器中。 高2 位在BDnSTAT《1:0》 中。因此有效的字節(jié)計(jì)數(shù)范圍是0 到1023。
BD地址驗(yàn)證:BD 地址寄存器對(duì)包含對(duì)應(yīng)端點(diǎn)緩沖器的起始RAM地址。 為了讓端點(diǎn)起始單元有效,它必須在 USB RAM 中(地址為400h到7FFh)。 硬件中沒(méi)有相應(yīng)的機(jī)制來(lái)驗(yàn)證BD地址。 如果BD地址未指向USB RAM 中的單元,或者指向另一個(gè)端點(diǎn)緩沖器中的地址,數(shù)據(jù)將很可能丟失或被改寫。 同樣,接收緩沖器(OUT端點(diǎn))和正在使用的 BD單元重疊也將導(dǎo)致不可預(yù)料的結(jié)果。 在開發(fā)USB應(yīng)用程序時(shí),用戶需要考慮在軟件中對(duì)地址進(jìn)行驗(yàn)證。
乒乓緩沖:當(dāng)端點(diǎn)有兩組BD項(xiàng)時(shí)(一組用于偶數(shù)數(shù)據(jù)傳輸,一組用于奇數(shù)數(shù)據(jù)傳輸),它被定義為具有乒乓緩沖器。 這樣就允許在CPU處理一組BD的同時(shí),SIE 處理另一組BD。這種方式的乒乓緩沖BD,可實(shí)現(xiàn)單片機(jī)與 USB之間的最大數(shù)據(jù)吞吐量。
USB模塊支持三種模式的操作:
• 不支持乒乓緩沖
• 僅支持OUT端點(diǎn)0 的乒乓緩沖
• 支持所有端點(diǎn)的乒乓緩沖
使用UCFG 寄存器中的PPB1:PPB0位設(shè)置乒乓緩沖器。USB模塊跟蹤每個(gè)端點(diǎn)的乒乓指針。 當(dāng)使能此模塊時(shí),所有指針都復(fù)位到指向偶數(shù)BD。 在事務(wù)完成之后(UOWN被SIE 清零),指針被切換到奇數(shù)BD。在下一次事務(wù)完成之后,指針又被切換回偶數(shù)BD上次事務(wù)的奇偶狀態(tài)保存在USTAT寄存器的PPBI 位中。 用戶可以使用PPBRST 位將所有乒乓指針復(fù)位到偶數(shù)狀態(tài)。圖17-7 顯示了三種不同的操作模式以及BD是如何填充USB RAM 的。根據(jù)緩沖配置,BD與特定的端點(diǎn)具有固定的對(duì)應(yīng)關(guān)系。表17-4 所示為BD與端點(diǎn)之間映射的詳細(xì)情況。 這種關(guān)系也意味著如果沒(méi)有連續(xù)使能端點(diǎn),BDT 中將出現(xiàn)空白區(qū)域。 理論上被禁止的端點(diǎn)的BD可用作緩沖空間。 實(shí)際上,用戶應(yīng)該避免使用BDT 中的這些空間,除非已經(jīng)采取了驗(yàn)證BD地址的措施。
USB 中斷:USB模塊可以產(chǎn)生多個(gè)中斷條件。 要識(shí)別所有中斷源,和單片機(jī)一樣,此模塊具有自己的中斷邏輯結(jié)構(gòu)。
USB 電源模式:最常見的電源模式有僅總線供電(Bus Power Only)、僅自供電(Self-Power Only)和以自供電為主的雙電源(Dual Power)供電模式。
并行通信端口:并行通信端口(SPP)是除 USB RAM 之外用于數(shù)據(jù)傳輸?shù)膫溆猛ǖ馈?可以將端點(diǎn)配置為使用SPP將數(shù)據(jù)直接發(fā)送到外部硬件或直接接收來(lái)自外部硬件的數(shù)據(jù)。
此方法可以把單片機(jī)作為數(shù)據(jù)管理器,直接通過(guò)SPP傳遞大塊的數(shù)據(jù)而無(wú)需單片機(jī)進(jìn)行處理。 應(yīng)用示例將包含數(shù)據(jù)采集系統(tǒng),其中外部FIFO的數(shù)據(jù)通過(guò)USB和主機(jī)
進(jìn)行通信。 在這種情況下,單片機(jī)控制端點(diǎn),而原始數(shù)據(jù)的傳送則靠外設(shè)完成。通過(guò)相關(guān)的端點(diǎn)緩沖器描述符將SPP 使能為USB端點(diǎn)的端口。 必須通過(guò)以下方法來(lái)使能端點(diǎn):
1. 將BDnADRL:BDnADRH 設(shè)置為指向FFFFh 。
2. 將KEN位(BDnSTAT《5》)置 1 以便讓SIE 保持對(duì)緩沖器的控制。
3. 將INCDIS 位(BDnSTAT《4》)置 1 以禁止地址自動(dòng)遞增。
振蕩器:USB模塊有特定的時(shí)鐘要求。 在全速模式下,其時(shí)鐘源必須為48 MHz。 即便如此,并不要求單片機(jī)內(nèi)核和其他外設(shè)以此時(shí)鐘速度運(yùn)行或使用同一個(gè)時(shí)鐘源。
USB 固件和驅(qū)動(dòng)程序:Microchip 提供了一些針對(duì)應(yīng)用的特定的資源,比如USB固件和驅(qū)動(dòng)程序。
評(píng)論