其實(shí)早就想學(xué)習(xí)USB了,,但是開(kāi)始的時(shí)候由于基礎(chǔ)差點(diǎn),看到USB那么多繁復(fù)的上電復(fù)位啊枚舉啊還有那么多的包啊,,頭很大沒(méi)有一點(diǎn)思路,。所以當(dāng)時(shí)只是看看資料翻翻周立功的《PDIUSBD12 USB固件編程與驅(qū)動(dòng)開(kāi)發(fā)》做個(gè)了解,并沒(méi)有深入,。但是正如圈圈的USB小組里說(shuō)的,,現(xiàn)在的電子工程師不懂USB可不行,所以決心重新著手USB的進(jìn)階了,。其實(shí)我以前的51實(shí)驗(yàn)板和MSP430的板子上面都有USB的這一塊電路,,只可惜實(shí)驗(yàn)程序?qū)懙貌粔蜥槍?duì),所以看起來(lái)很費(fèi)勁,,也提不起我的興趣?,F(xiàn)在有圈圈的板子,我想那么多有針對(duì)性并且完整的程序在等著,,豈有學(xué)不會(huì)之理!
我的第一篇USB日志從硬件下手,,至于基本的一些概念當(dāng)然是要先了解的,但是我以為學(xué)習(xí)應(yīng)該以實(shí)踐為主,,以練帶學(xué),,從中不斷積累。所以,,在了解了一些基本的USB的概念和PDIUSBD12芯片以后,,應(yīng)該著手實(shí)踐了。其實(shí)如果你不是做USB的芯片開(kāi)發(fā),,對(duì)于那一大堆理論也不是必須完全領(lǐng)會(huì)的,,我也是帶著似懂非懂的狀態(tài)來(lái)操控PDIUSBD12的,對(duì)于它的一些寄存器的控制是重點(diǎn),,掌握了這個(gè)基本算是入了門(mén),,至于其它的一些時(shí)序上的讀寫(xiě)操作什么的我想對(duì)于有基礎(chǔ)的人不是難點(diǎn),。
先來(lái)看一下PDIUSBD12的引腳配置和引腳分配:
圈圈的原理圖我就不貼了(不好截圖,有點(diǎn)亂,,呵呵~~),。D0-D7口接單片機(jī)的P0口,因?yàn)閷?shí)驗(yàn)中不使用DMA傳輸,,所以與DMA傳輸有關(guān)的DMREQ,,DMACK_N,EOT_N幾個(gè)引腳被懸空或者接地了,。CLKOUT,,VOUT3.3和SUSPEND三個(gè)引腳由于不使用就懸空或者接地了。GL_N接一個(gè)電阻和LED指示燈用于指示通信狀態(tài),,INT_N接單片機(jī)的一個(gè)中斷口,,D+和D-兩個(gè)差分信號(hào)是接標(biāo)準(zhǔn)USB接口的,,XTAL1和XTAL2之間接16MHz的晶振,,另外VCC,GND自不必說(shuō),。最后來(lái)看下幾個(gè)可以有不同接法的引腳:ALE,,RD_N,WR_N,,CS_N,,其實(shí)這幾個(gè)引腳的不同接法是普遍性的,也就是說(shuō)你可以把這幾個(gè)腳接成單片機(jī)時(shí)序控制數(shù)據(jù)地址的讀寫(xiě)操作,,也可以把PDIUSBD12的寄存器接成單片機(jī)的外部RAM,,這樣對(duì)寄存器的尋址就和RAM一樣了,可以免去復(fù)雜的時(shí)序操作,。而我們看到圈圈的電路里采用了前者,,也就是用時(shí)序來(lái)讀寫(xiě)D12的寄存器,因此它的電路接法是:把ALE接地,,CS_N接地(片選有效),,WR_N,RD_N接單片機(jī)的專用讀寫(xiě)口P3.6和P3.7(采用時(shí)序讀寫(xiě)操作這兩個(gè)口其實(shí)不一定非得接這兩個(gè)口,,接其它任何的IO口也行),,所以在程序里面我們會(huì)看到有專門(mén)的D12寄存器讀寫(xiě)子程序。
我們?cè)賮?lái)討論一下后者的接法實(shí)現(xiàn),,如圖:
這種接法是把D12的ALE腳與單片機(jī)的ALE腳相接,,這是專用的外部RAM擴(kuò)展,詳細(xì)的說(shuō)明(包括RAM擴(kuò)展接法的尋址和讀寫(xiě))在CAN學(xué)習(xí)筆記的硬件部分有介紹了,。
以上兩種寄存器讀寫(xiě)方式都是很有代表性的,,無(wú)所謂誰(shuí)好誰(shuí)壞,,根據(jù)個(gè)人習(xí)慣吧。其實(shí)在RAM尋址空間允許的情況下采用后者還是比較方便的,。但是圈圈采用了前者,,那么在以后的程序中都以此為基礎(chǔ)進(jìn)行編程。
上面分析了D12的各個(gè)管腳的分配情況,,有些腳還必須接一定的電阻,,如差分信號(hào)D+和D-就必須在接1K的電阻后接VCC或者GND。USB標(biāo)準(zhǔn)接口的四個(gè)信號(hào)口,,中間兩個(gè)就是接差分信號(hào)的,,而邊上兩個(gè)就是電源信號(hào)(從計(jì)算機(jī)接出的+5V,有時(shí)大家在設(shè)計(jì)時(shí)往往利用這個(gè)5V做系統(tǒng)電源),。
硬件電路分析到這里大概能對(duì)D12有一個(gè)初步的掌握了,,下一步就應(yīng)該去熟悉一下D12內(nèi)部的一些寄存器以及這些寄存器在不同的配置狀態(tài)下都能實(shí)現(xiàn)什么樣工作。