2006年11月22日 星期三

USB資料

設計規劃

要設計USB必須要包含三個設計成面

晶片上的韌體程式,PC上的驅動程式,PC上的應用程式

為了要暫小縮短研發的困難度,所以暫時不考慮設計驅動程式

採用晶片廠商所提供的驅動程式與函式庫



本章重點在於描述韌體程式的撰寫與相關技術原理

--------------------------------------------------------------

程序

1.插上USB裝置

2.使用預設的位址0取得裝置描述元(控制型讀取)

3.設定裝置的新位址(無資料控制)

4.使用新位址取得裝置描述元(控制型讀取)

5.取得配置描述元(控制型讀取)

6.設定配置描述元(無資料控制)

--------------------------------------------------------------

四種傳輸模式

1.控制傳輸(control transfer)

2.巨量傳輸(bulk transfer)

3.等時傳輸(Iso transfer)

4.中斷傳輸(Interrupt transfer)



一般常用的控制傳輸+巨量傳輸

中斷傳輸適用於非常低速的裝置(如鍵盤與滑鼠)

--------------------------------------------------------------

packet 封包

封包可以分為四種類型

執照:IN,OUT,SOF,SETUP

資料

交握

特殊

--------------------------------------------------------------

描述元 descripter

(nessary)

device

configuration

interface

endpoint

(optional)

string

class

reporter

--------------------------------------------------------------

1.plug the connecter to PC(host)

2.PC開始列舉(enumeration) ,也就是開始接收各種descriptors。

3.PC根據收到的descriptors,判斷是哪種裝置(device),並掛載相對應的驅動程式。

4.USB 初始化結束

5.接下來的資料傳送都是採用report descriptor的 方式傳送



descriptor的第一個byte,是宣告這個descripter有幾個bytes。

descriptor的第二個byte,是宣告這個descripter為哪一種類別types。

如此才能使PC根據類別處理後面的byte



所有的列舉資料都是透過control enpoint傳送



在MCU中,descriptor的資料通常是存放在ROM中

descripter的type有:device,configuration,class,interface,endpoint五種

--------------------------------------------------------------

endpoints介紹

1.是一個具有FIFO特性的block space

2.具有雙向傳輸的功能(In與Out)

3.silabs的endpoint具有FIFO與control register,status register

4.endpoint0又稱作control endpoint,永遠具有雙向傳輸的功能(其他的endpoint不一定具有雙向)。

5.由PC端決定endpoint的位址(剛插上的都為endpoint0,之後PC會去設定新的endpointx,x=N)


bit 7 6 5 4 3 2 1

 dir   [ endpoint number ]

6.bit7=0表示輸出,bit7=1表示輸入。輸出與輸入是相對於PC而言

7.可藉由split將endpoint0以外的endpoint分割成兩塊(In與Out),如endpoint1 In 與endpoint1 Out。


interface介紹

1.interface是endpoints的集合

2.一個裝置可以擁有多個interface


configuration介紹

1.一個裝置可以擁有多個configuration,但在同個時間內只能有一個configuration。

2.不同的configuration會有不同的power,以及interface與endpoint的特性

3.大部分的裝置大都只有一個interface與一個configuration,否則會太複雜,不易設計。


descripter介紹

1.descripter是一種描述裝置跟USB特性的資料結構

2.PC根據descripter的資訊去配置適當的頻寬與電源給USB,並尋找適當的驅動程式來搭配




傳輸過程

1.當裝置插上PC後,USB的device address是0,並透過endpoint0(control endpoint)來傳輸資料

2.藉由control transfer的傳輸模式,透過endpoint0傳輸descripter,configuration與control of device到PC端

--------------------------------------------------------------



實驗步驟流程(全程使用Full speed模式 PID:803)

1.設計一個判斷是否有插入裝置的程式,不作控制

2.進行LED閃滅控制

沒有留言:

張貼留言