1. 程式人生 > >初入android驅動開發之usb(一)

初入android驅動開發之usb(一)

這裡主要收集了一些USB關於OTG、device、host相關的知識。

當裝置檢測到USB_ID訊號為低時,表該裝置應作為Host(主機,也稱A裝置)用。
當裝置檢測到USB_ID訊號為高時,表示該裝置作為Slave(外設,也稱B裝置)用。

因此,在主機側的層次結構中,要實現的 USB 驅動包括兩類:
USB 主機控制器驅動和 USB 裝置驅動,前者控制插入其中的 USB 裝置,後者控制USB 裝置如何與主機通訊。
在這棵樹裡,我們把樹根比作主機控制器,樹葉比作具體的 USB裝置,樹幹和樹枝就是 USB 匯流排。樹葉本身與樹枝通過 usb_driver 連線,而樹葉本身的驅動(讀寫、控制)則需要通過其樹葉裝置本身所屬類裝置驅動來完成。樹根和樹葉之間的“通訊”依靠在樹幹和樹枝裡“流淌”的 URB 來完成。
由此可見,usb_driver 本身只是起到了找到 USB 裝置、管理 USB 裝置連線和斷開的作用

OTG 檢測的原理是:
  USB OTG標準在完全相容USB2.0標準的基礎上,增添了電源管理(節省功耗)功能,它允許裝置既可作為主機,也可作為外設操作(兩用OTG)。USB OTG技術可實現沒有主機時裝置與裝置之間的資料傳輸。例如:數碼相機可以直接與印表機連線並列印照片,手機與手機之間可以直接傳送資料等,從而拓展了USB技術的應用範圍。在OTG中,初始主機裝置稱為A裝置,外設稱為B裝置。也就是說,手機既可以做外設,又可以做主機來傳送資料,可用電纜的連線方式來決定初始角色(由ID線的狀態來決定)。
USB OTG介面中有5條線:   
2條用來傳送資料(D+ 、D-);     
1條是電源線(VBUS);      
1條則是接地線(GND)、
1條是ID線。ID線---以用於識別不同的電纜端點,mini-A插頭(即A外設)中的ID引腳接地,mini-B插頭(即B外設)中的ID引腳浮空。當OTG裝置檢測到接地的ID引腳時,表示預設的是A裝置(主機),而檢測到ID引腳浮空的裝置則認為是B裝置(外設)。
只有而言支援USB OTG的裝置(即可以做USB Host有可以做Slave的裝置),USB_ID訊號才有意義。 
當裝置檢測到USB_ID訊號為低時,表該裝置應作為Host(主機,也稱A裝置)用。
當裝置檢測到USB_ID訊號為高時,表示該裝置作為Slave(外設,也稱B裝置)用。
實際的USB連線線中,是沒有USB_ID這根線的。 都是在介面部分直接拉死的的。
對於Host端,只需將連線線的USB_ID pin和地短接即可,
對於Slave端,USB連線線的USB_ID pin是懸空的。(裝置內部上拉)。