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