本書有少部分章節(jié)內(nèi)容蕞初發(fā)布于個人微信公眾號“電子制作站”(dzzzzcn),并得到廣大電子技術(shù)愛好者及行業(yè)工程師的一致好評,甚至在網(wǎng)絡(luò)上被大量轉(zhuǎn)載。考慮到讀者對USB應(yīng)用開發(fā)知識的強(qiáng)烈訴求,決定將相關(guān)文章整合成圖書出版,書中每章幾乎都有一個鮮明的主題。本書將已發(fā)布章節(jié)收錄的同時,也進(jìn)行了細(xì)節(jié)更正及內(nèi)容擴(kuò)充。當(dāng)然,更多的章節(jié)是蕞新撰寫的,它們對讀者系統(tǒng)深刻地理解USB規(guī)范及系統(tǒng)開發(fā)有著非常實用的價值。
現(xiàn)如今,USB接口幾乎成為大多數(shù)個人計算機(jī)與智能手機(jī)的標(biāo)配,越來越多的電子產(chǎn)品也都傾向于使用USB接口,原因自然無外乎是其易用性,然而,USB易用性的代價就是協(xié)議的復(fù)雜性,相關(guān)系統(tǒng)的開發(fā)過程也有著更高的門檻,市面上雖然有一些USB開發(fā)相關(guān)的圖書,但大多數(shù)主要還是對USB規(guī)范的機(jī)械翻譯與源代碼拷貝,并沒有在“如何更形象更系統(tǒng)地闡述USB規(guī)范”方面下功夫,很難給實際項目開發(fā)帶來較大的指導(dǎo)意義。
本書打破常規(guī)圖書“先大篇幅介紹USB規(guī)范,再討論USB設(shè)備開發(fā)”的撰寫思路,先通過體驗簡單實例再切入到比較頂層的那部分USB規(guī)范,避免一次性引導(dǎo)出過多術(shù)語而打擊讀者的學(xué)習(xí)積極性,隨后在功能逐步完善的過程中幫助讀者快速建立起對USB設(shè)備開發(fā)的感性認(rèn)識。當(dāng)具備了足夠的經(jīng)驗后,再引導(dǎo)讀者重新從底層總線電平標(biāo)準(zhǔn)往上經(jīng)令牌、事務(wù)、傳輸、請求與頂層應(yīng)用“碰撞”,使讀者不僅能夠?qū)Α癠SB數(shù)據(jù)在傳輸過程的每個層面干了些什么”有清晰的認(rèn)識,也有能力進(jìn)行USB設(shè)備固件的核心編程,真正做到“知其然更知其所以然”。在整個闡述過程中,本書將USB規(guī)范穿插在實例中進(jìn)行對照講解,切切實實將USB規(guī)范與源代碼聯(lián)系起來,使讀者能夠非常輕松地理解USB規(guī)范是如何反應(yīng)在硬件控制器與源代碼中,讓USB規(guī)范不再那么抽象,同時結(jié)合面試、超市運營、工廠制造、籃球項目、下棋等生活場景,讓學(xué)習(xí)USB規(guī)范的過程變得不再枯燥,同時也會發(fā)現(xiàn)USB規(guī)范其實并沒有想象中的那么復(fù)雜。
為了能夠讓讀者真正將USB開發(fā)思想靈活運用在項目開發(fā)中,本書不僅結(jié)合USB規(guī)范對固件庫進(jìn)行了完整剖析,而且嘗試使用多種方案實現(xiàn)相同的功能,讓讀者深刻理解不同開發(fā)方案的優(yōu)缺點。本書涉及的基礎(chǔ)例程雖然只有兩個,但是在闡述不同的開發(fā)方案過程中卻引出了更多例程,讓讀者輕松開發(fā)鼠標(biāo)、鍵盤、復(fù)合設(shè)備、自定義H、非標(biāo)準(zhǔn)、大容量存儲、USB轉(zhuǎn)串口、聲卡等USB設(shè)備,一方面可以避免過多毫無關(guān)聯(lián)的例程堆砌而使得全書內(nèi)容松散,另一方面能夠從逐步完善的過程中循序漸進(jìn)地深入USB規(guī)范,反過來,對USB規(guī)范的透徹理解也會對掌握USB設(shè)備固件與應(yīng)用程序開發(fā)有著積極的意義。
需要特別指出的是,本書雖然使用STM32單片機(jī)作為闡述平臺,但是讀者無需對其有任何開發(fā)經(jīng)驗,因為除GPIO與USB控制器模塊外,其它無關(guān)的模塊均沒有涉及到。本書主要著重于闡述USB規(guī)范及USB系統(tǒng)開發(fā)的思想,這對于所有平臺都是通用的,也是本書撰寫的初衷:盡蕞大限度削弱對平臺的依賴性。換句話說,即使以前從來沒有接觸過STM32單片機(jī)開發(fā),也絲毫不妨礙讀者理解USB設(shè)備的開發(fā)過程,即便讀者使用的開發(fā)平臺與本書完全不一樣,只要讀者需要進(jìn)行USB設(shè)備或主機(jī)端應(yīng)用程序的開發(fā),本書所闡述的USB開發(fā)思想總會有非常實用的價值。
由于本人水平有限,錯漏之處在所難免,懇請讀者批評與指正。