本文參照了ti am335x的技術手冊。
am335x處理器提供了兩個usb2.0 模組。每個usb控制器都是圍繞mentor usb otg控制器(musbmhdrc)和ti phy構建的。每個usb
控制器具有使用者可配置的32k位元組的端點fifo。兩個usb模組共享cppi dma控制器和相應的佇列管理器中斷步態器,電源管理模組和phy / utmi時鐘。
下圖是am335x的usb整合圖
接下來詳細介紹usb控制器host和device模式的操作:
兩個usb模組可以在一系列不同的環境中使用。 它們可以用作連線到常規usb主機(例如pc)的高速或全速usb外圍裝置點對點型別的安排。
對於乙個usb外設配置,使用者可以選擇利用使用電纜端選擇角色通過連線電纜的mini或micro b(認為是利用 h/w option 也就是硬體控制),也可以選擇可選項方法:需要韌體對相應的usb模式暫存器iddig位欄位進行置1,使得usb控制器進入會話(session)也可以選擇利用firmware進行選擇(s/w option 軟體控制)。
同樣的,對於乙個usb host配置,使用者可以選擇利用cable端進行選擇通過連線mini或者micro端(認為是利用 h/w option 也就是硬體控制),也可以選擇利用firmware進行選擇(s/w option 軟體控制)。
當使用軟體控制(sw option),usb id 引腳是被忽略的,usb2.0 控制器判斷是host端還是device是利用 usb 模式暫存器 中的iddig位的狀態進行判斷,當iddig位在usb進入session之前被使用者程式設計置1時,會認為是device端,相反,如果iddig為0,控制器會認為是host端。
usb2.0 otg 控制器開始決定執行模式(host or device)是當usb2.0 控制器進入到乙個session中時,當發生以下事件時表示控制器進入到session:
1.探測到usbx_vbusin引腳的電壓》4.4v,並且控制器將devctl[session]位進行設定。
2.當韌體置devctl[session]位時。
當devctl[session]位被置位時,控制器開始探測iddig的訊號狀態,當訊號狀態發現是低時(iddig被程式設計置為0)那麼usb2.0 控制器會認定角色是host,而當訊號狀態發現是高時(iddig被程式設計置為1)會假定是device端,請注意,iddig是內部訊號,可以通過韌體從專用暫存器驅動為高電平或低電平。
當usb控制器確定其作為host主機的角色時,會將usbx_drvvbus引腳電平拉高來使能額外的power,也就是給外部device供電。usb2.0 控制器將等待usbx_vbusin引腳的電平拉高,在100ms後,如果沒有看到usbx_vbusin引腳電平拉高,會產生vbus錯誤中斷;而當usbx_vbusin引腳電平拉高時,usb2.0控制器會等待乙個device的連線,這是為了看到其中的一條資料線usb0 / 1_dp / dm被拉高。
當控制器確定其作為device角色時,也就是usb mode 暫存器的iddig位被程式設計置1,外部主機正在usbx_vbusin線上供電。那麼usb2.0控制器將設定devctl [session]位,指示控制器進入會話。當控制器進入會話,它將強制usb2.0控制器感測iddig訊號的狀態。一旦探測到iddig訊號為高電平,它將使其1.5kω上拉電阻表示外部主機,它是乙個full-速度裝置。
接下來詳細分析usb作為host和device端的執行流程。
usb 控制器作為host端:
當usbx_id引腳狀態接地或usb模式暫存器[iddig = bit8]被清除為0,usb控制器承擔主機的作用,當usb控制器進入會話時,應用/韌體將devctl [session]位設定為1,它將承擔主機的角色。
1.進入掛起模式。 當作為主機執行時,可以提示usb控制器進入通過設定power暫存器中的suspendm位來暫停模式。當該位被置位時,控制器將完成當前事務,然後停止事務排程程式和幀計數器。
2.傳送恢復信令。 當應用程式要求控制器離開掛起模式,它需要清除power暫存器中的suspendm位,將resume位置1 20ms。當resume位為高電平時,控制器將在匯流排上產生恢復訊號。 後20 ms,cpu應清除resume位,此時幀計數器和事務處理排程程式將啟動。
3.響應遠端喚醒。 如果控制器處於從目標位置檢測到恢復訊號在掛起模式下,utmi + phy將從低功耗模式退出,utmi時鐘重新啟動。
然後,控制器將退出掛起模式,並自動將power中的resume位置1暫存器(位2)為'1'以接管從目標產生恢復訊號。 如果恢復中斷使能,將產生中斷。
4.重置訊號。 如果控制器在主機中,power暫存器(位3)中的reset位置1模式,它將在匯流排上產生復位訊號。 如果power暫存器(位5)中的hsenab位為設定,也將嘗試談判高速執行。 軟體應保持reset位置1至少20 ms,以確保正確重置目標裝置。 軟體清零後,控制器將啟動其幀計數器和事務排程器。 是否高速執行將由power暫存器(位4)的hsmode位指示。
usb 控制器作為device端:
當usbx_id引腳懸空或usb模式時,usb控制器承擔外圍裝置的作用暫存器[iddig = bit8]設定為1(只要iddig_mux,它是usb mode暫存器的bit7也設定為1)之前的使用者應用程式進入會話。 當usb控制器進入會話時將承擔裝置的角色。
1.軟連線 - 在por或usb模組軟復位後,power暫存器(位6)的softconn位為清除為0.因此,控制器將顯示為斷開連線,直到軟體設定為softconn位到1.應用軟體可以選擇何時將phy設定為其正常模式。 系統使用冗長的初始化過程可以使用此來確保初始化完成和系統
在連線usb之前準備執行列舉。 一旦softconn位置1,該軟體還可以通過將該位清零來模擬斷開連線。
2.進入掛起模式 - 當作為外圍裝置執行時,控制器監視活動匯流排,當3毫秒沒有發生任何活動時,它進入掛起模式。 如果掛起中斷已啟用,此時將產生中斷。
3.此時,控制器可以保持活動狀態(因此能夠在resume訊號時檢測到在usb上發生),或者應用程式可能會通過停止其時鐘來安排禁用控制器。然而,如果時鐘不是,控制器將不能檢測usb上的恢復訊號跑步 如果是這種情況,則需要外部硬體來檢測簡歷信令(通過監視)dm和dp訊號),以便可以重新啟動控制器的時鐘。
4.恢復信令 - 當匯流排上發生恢復訊號時,首先必須是控制器的時鐘必要時重新啟動。 然後控制器將自動退出掛起模式。 如果恢復中斷是
將會產生乙個中斷。
5.啟動遠端喚醒 - 如果軟體要在控制器處於啟動狀態時啟動遠端喚醒掛起模式,應將power [resume]位設定為1.軟體應該離開,然後將該位置1在將其重置為0之前約10 ms(最小2ms,最大15 ms)。
TI AM335X幾款開發板推薦
最近,公尺爾科技在插針式核心板的基礎上,又推出了郵票孔和金手指兩種核心板,及其配套的底板,成為am335x 完整的解決方案,三塊核心板 圖1 am335x 三款核心板 3款開發板提供靈活的儲存配置,ddr3 記憶體可選 128mb 256mb 512mb 大小,內部儲存 nandflash 可選12...
335x裸機開發1
am335x 裸機開發筆記 1 啟動流程與啟動卡分割槽 2016 04 22 21 51 24 分類 嵌入式 根據晶元手冊,am335x上電後首先執行固化在晶元內部rom中的 我們稱之為bl0,bl0的功能很強大,能讀取sd卡中第乙個分割槽 必須是fat格式 的mlo檔案,複製到ram中執行,複製的...
為工業閘道器打造的TI AM335x開發板介紹
myd c335x gw 是公尺爾電子推出的基於ti am335x 系列處理器的嵌入式板卡,主要面向工業閘道器,hmi 等應用場景。該套產品由核心板myc c335x gw及底板myb c335x gw組合而成 1.myc c335x gw 核心板介紹 核心板採用ti am335x 系列處理器,整合...