設計規劃
要設計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閃滅控制
沒有留言:
張貼留言