Ⅰ usb閫氫俊鍗忚 鏄浠涔堬紵
USB鏄涓縐嶆敮鎸佸湪USB涓繪満鍜孶SB璁懼囦箣闂磋繘琛屼覆琛屾暟鎹浼犺緭鐨勯氫俊鍗忚銆備富鏈轟綔涓烘葷嚎鐨勪富鍙鏂癸紝閲囩敤涓ょ嶄俊浠ゆā寮忥細鍏ㄩ熸ā寮12Mb/s鍜屼綆閫熸ā寮1.5Mb/s銆俇SB浣跨敤鍥涚嶆暟鎹浼犺緭鏂瑰紡錛氭帶鍒朵紶杈擄紙control錛夈佷腑鏂浼犺緭錛坕nterrupt錛夈佹壒閲忎紶杈擄紙bulk錛夊強絳夋椂浼犺緭錛坕sochronous錛夈傚叾涓鎺у埗妯″紡涓昏佺敤浜庢帶鍒舵寚浠や紶杈撳強USB瑙勮寖鐨勫疄鐜幫紝絳夋椂浼犺緭涓昏佺敤浜庨煶棰戝強瑙嗛戜紶杈撱俇SB閫氳繃涓ゆ℃葷嚎鍒椾婦錛圗numeration and Renumertion錛夋潵瀹炵幇璁懼囪瘑鍒浠ュ強椹卞姩紼嬪簭鏋愬姞杞姐傚叾鍏蜂綋榪囩▼涓猴細USB璁懼囪繛鍒頒富鏈哄悗錛屼富鏈轟緷鎹甎SB瑙勮寖鍦ㄧ壒瀹氬湴鍧閫氳繃絝鍙0錛坋ndpoint0錛変笌澶栬鵑氫俊錛屽苟灝嗗栬捐嗕負榛樿よ懼囥傚栬句笌涓繪満閫氫俊灝嗗叾6璁懼囨爣璇嗭紙DID銆丳ID銆乂ID錛夊彂緇欎富鏈鴻繘琛岀浜屾℃葷嚎鍒椾婦銆備富鏈烘牴鎹璁懼囨爣璇嗭紝鍔犺澆鐩稿簲璁懼囬┍鍔ㄧ▼搴忥紝閲嶆柊鍒嗛厤鍦板潃錛屽苟灝嗘帶鍒舵潈杞浜ょ粰澶栬懼滻浠訛紙firmware錛夛紝閫氳繃鍥轟歡涓庤懼囬┍鍔ㄧ▼搴忓強涓繪満搴旂敤紼嬪簭鐨勪氦浜掗氫俊錛屾潵瀹炵幇澶栬劇殑鍔熻兘銆
Ⅱ (楂樺垎絳旇阿)濡備綍鐢║SB鎺ュ彛瀹炵幇涓ゅ彴璁$畻鏈轟箣闂寸殑閫氫俊
USB(Universal Serial Bus)錛屽嵆閫氱敤涓茶屾葷嚎銆傛湰鑺傛墍浠嬬粛鐨刄SB Link鐢電紗榪炴帴鏂瑰紡錛屼究鏄鍒╃敤璁$畻鏈虹殑USB鎺ュ彛錛屽疄鐜板弻鏈虹殑浜掕仈鍔熻兘銆
涓銆佸叧浜嶶SB Link鐢電紗
甯傞潰涓婃湁澶氱峌SB Link鐢電紗錛屼笉鍚岀嶇被鍜屽瀷鍙風殑鐢電紗鍏跺姛鑳界暐鏈変笉鍚岋紝鏈鏂囧悜澶у朵粙緇嶄竴嬈懼悕涓篣SB Link鈥100鐨勫弻鏈轟簰鑱旂數緙嗭紝鍏朵粬綾誨瀷USB Link鐢電紗鐨勫畨瑁呭拰浣跨敤鏂規硶涓庡畠鍩烘湰鐩稿悓銆
1.USB Link鐢電紗鐨勭壒鐐
USB Link鈥100鐢電紗璨屼技涓鏉℃櫘閫氱殑USB鎺ュ彛榪炴帴鐢電紗錛屼絾涓闂村氫簡涓涓鈥滃寘鈥濄俇SB Link鈥100鐨勬牳蹇冨姛鑳藉氨闆嗕腑鍦ㄨ繖涓鈥滃寘鈥濅腑銆備粠涓ユ牸鎰忎箟涓婅詫紝USB Link鈥100鐢電紗搴旇ョО涔嬩負USB Data Bridge Cable(USB鏁版嵁妗ョ數緙)錛屽畠鏄涓鏉¢氳繃USB鎺ュ彛榪炴帴鐨勫弻鏈鴻繛鎺ョ嚎銆傚畠鐨勫姛鑳芥槸瀹炵幇涓ゅ彴璁$畻鏈轟箣闂寸殑榪炴帴錛屽苟浜掍韓瀵規柟鐨勮祫婧愶紝榪欎簺璧勬簮鍖呮嫭鏂囦歡銆佽蔣椹便佸厜椹卞拰鎵撳嵃鏈恆傞氳繃USB Link鈥100榪炴帴鍚庯紝瀵規柟璁$畻鏈轟笂鍑犱箮鎵鏈夌殑璧勬簮閮藉彲浠ヨ鍏變韓錛岃繖涓庣綉鍗¤繛鎺ャ佺洿鎺ョ數緙嗚繛鎺ュ拰MODEM榪炴帴絳夋柟寮忔湁寰堝ぇ鐨勫尯鍒銆
鍊煎緱鎻愰啋澶у剁殑鏄錛氭湁浜涚敤鎴峰彲鑳戒細閫氳繃鏅閫歎SB鐢電紗鏉ヨ繛鎺ヤ袱鍙拌$畻鏈猴紝鍏跺疄榪欑嶅仛娉曟槸闈炲父鍗遍櫓鐨勶紝寰堟湁鍙鑳戒細鎹熷潖涓繪澘銆傚嵆浣挎病鏈夋崯鍧忎富鏉匡紝浣跨敤榪欑嶆柟娉曚篃鏃犳硶瀹炵幇涓ゅ彴璁$畻鏈轟箣闂寸殑浜掕仈銆備笉榪囷紝鏈榪戞柊鍑虹殑鏌愪簺鍨嬪彿鐨勪富鏉誇笂宸茬粡闆嗘垚浜哢SB榪炵粨鍔熻兘錛屽傚井鏄燂紙MSI)鐨815EP-PRO絳変富鏉匡紝鍙闇鏅閫歎SB鐢電紗灝卞彲瀹炵幇鍙屾満浜掕繛銆
2.USB Link鐢電紗瀵硅$畻鏈虹‖浠剁殑瑕佹眰
鍥犱負USB Link鐢電紗蹇呴』瑕侀氳繃USB鎺ュ彛榪炴帴錛屾墍浠ヨ榪炴帴鐨勪袱鍙拌$畻鏈轟笂閮藉簲鍚屾椂鍏鋒湁USB鎺ュ彛銆傝繎涓涓ゅ勾鏉ヨ喘緗鐨勮$畻鏈哄ぇ閮借兘澶熸弧瓚蟲よ佹眰銆傚傛灉鎮ㄧ殑璁$畻鏈轟笂娌℃湁USB鎺ュ彛錛屽嵈涓瀹氳佷嬌鐢║SB Link鐢電紗榪涜岃繛鎺ワ紝鍒欓渶瑕佽喘涔頒竴鍧桿SB鎺ュ彛鍗°傚啀灝哢SB鎺ュ彛鍗″畨瑁呭湪涓鍙癐ntel 486DX鈥66浠ヤ笂鐨勭數鑴戜笂錛屼嬌鑳戒繚璇佷嬌鐢║SB Link鐢電紗榪涜岃繛鎺ャ
3.USB Link鐢電紗瀵規搷浣滅郴緇熺殑瑕佹眰
鍦ㄤ嬌鐢║SB璁懼囨椂錛岄栧厛瑕佷繚璇佹搷浣滅郴緇熻兘澶熸敮鎸乁SB榪炴帴鍔熻兘銆傚洜涓篣SB鎺ュ彛鏍囧噯鐨勬帹鍑烘椂闂寸浉瀵硅緝鏅氾紝鎵浠ュ彧鏈塛indows 95 0SR2.1銆乄indows 98銆乄indows NT4.0銆乄indowe Me鍜學indows 2000鎻愪緵鏀鎸併
浜屻乁SB Link鐢電紗鐨勫畨瑁
USB Link鐢電紗鐨勫畨瑁呭寘鎷紜浠剁殑瀹夎呭拰杞浠剁殑瀹夎呬袱閮ㄥ垎錛屽叾涓杞浠墮儴鍒嗕嬌鐢ㄤ竴涓鐙絝嬬殑鍚嶄負SMART鈥擫inq鐨勭▼搴忋傚湪涓ゆ″畨瑁呬腑閮借佺敤鍒伴殢鐢電紗鎵闄勫甫鐨勪竴寮犺蔣鐩樸
1.USB Link鈥100鐢電紗鐨勫畨瑁
USB璁懼囨敮鎸佸嵆鎻掑嵆鐢ㄥ拰鐑鎻掓嫈鍔熻兘錛孶SBLink鈥100涔熶笉渚嬪栥傛墍浠ワ紝鍙瑕侀渶瑕侊紝闅忔椂閮藉彲浠ュ皢瀹冩彃鍏ヨ$畻鏈虹殑USB鎺ュ彛涓娿傛ゆ椂錛岃$畻鏈哄氨浼氳嚜鍔ㄥ垎閰嶅湴鍧錛岀敤鎴蜂笉闇瑕佽繘琛屼換浣曠墿鐞嗗弬鏁扮殑璁劇疆銆傚苟涓旓紝USB璁懼囩殑榪炴帴鍙浠ュ湪寮鏈虹姸鎬佷笅鐩存帴榪涜岋紝涓嶉渶瑕佸叧闂璁$畻鏈虹殑鐢墊簮銆備笉榪囷紝鍦ㄨ$畻鏈虹殑杞銆佺‖浠墮兘鑳芥弧瓚砋SB鍔熻兘鐨勫墠鎻愪笅錛岃繕瑕佷繚璇佸湪CMOS鍙傛暟璁劇疆涓錛屽皢USB涓欏硅劇疆涓烘湁鏁(Enable)鐘舵併傚傛灉璁劇疆涓虹佹(Disable)鐘舵侊紝USB璁懼囧皢鏃犳硶宸ヤ綔銆
褰撶涓嬈℃帴鍏USB Link鈥100鐢電紗鏃訛紝緋葷粺浼氭彁紺哄彂鐜版柊紜浠訛紝鎺ョ潃鍑虹幇瀹夎呭悜瀵箋傚皢闅忕數緙嗛檮甯︾殑涓寮犺蔣鐩樻彃鍏ヨ蔣椹變腑鎺ョ潃閫夋嫨鈥滆嚜鍔ㄦ悳緔㈡洿濂界殑椹卞姩紼嬪簭鈥濅竴欏癸紝緋葷粺渚誇粠杞鐩樿誨彇鎵闇鐨勪俊鎮錛屾帴鐫鍑虹幇閫夋嫨USB BridgeCable鐨勫硅瘽妗嗐傚傛灉鍦╓indows 95 0SR2.1錛98錛廙e涓瀹夎咃紝鍒欓夋嫨瀵硅瘽妗嗕腑鐨勭浜岄」(A錛氾技WIN95錛糢SBBC95.INF)錛涘傛灉鍦╓indowsNT4.0涓嬪畨瑁咃紝鍙閫夋嫨絎涓夐」(A錛氾技USBBC.INF)錛汚錛氾技WIN2000\USBBC20.INF鏄鎻愪緵緇橶indows 2000鎿嶄綔緋葷粺鐨勩傞夋嫨濂藉瑰簲鐨勯┍鍔ㄧ▼搴忓悕鍚庯紝鍗曞嚮鈥滃畬鎴愨濇寜閽錛岀郴緇熷皢浠庤蔣鐩樺嶅埗鎵闇鐨勯┍鍔ㄧ▼搴忥紝鏈鍚庡嚭鐜版彁紺轟俊鎮錛屽崟鍑燴滃畬鎴愨濈粨鏉熴傚湪鍙︿竴鍙拌$畻鏈轟笂鐢ㄥ悓鏍風殑鏂規硶榪涜岀‖浠剁殑瀹夎呫
2.SMART鈥擫inq紼嬪簭鐨勫畨瑁
SMART鈥擫inq紼嬪簭鐨勫畨瑁呮柟娉曢潪甯哥畝鍗曪紝鍙欏誨弻鍑昏蔣鐩樹腑鐨剆etup.exe鏂囦歡錛屼竴璺鈥渘ext鈥濅笅鍘誨嵆鍙銆傚畨瑁呯粨鏉熷悗錛屽湪鈥滃紑濮嬶紡紼嬪簭鈥濈殑涓嬩竴綰ц彍鍗曚腑灝嗕細鍑虹幇涓涓鍚嶄負鈥淧C鈥擫inq鈥濈殑鑿滃崟欏癸紝閫氳繃閫夋嫨璇ヨ彍鍗曚笅鐨勯」鐩渚垮彲榪涜屾湁鍏崇殑鎿嶄綔銆傚悓鏃訛紝瀹夎呯▼搴忚繕浼氬湪妗岄潰涓婂緩絝嬩竴涓狿C鈥擫inq鐨勫揩鎹瘋彍鍗曘傚湪鍙︿竴鍙拌$畻鏈轟笂鐢ㄥ悓鏍風殑鏂規硶瀹夎匰MART鈥擫inq紼嬪簭銆
涓夈佸弻鏈轟簰鑱旂殑搴旂敤
緇忚繃浠ヤ笂紜浠跺拰杞浠剁殑瀹夎呭拰璁劇疆鍚庯紝鐢ㄦ埛灝卞彲浠ヤ嬌鐢║SB Link鐢電紗榪涜屼袱鍙拌$畻鏈轟箣闂寸殑閫氫俊浜嗐傚寘鎷鏂囦歡鐨勪紶杈撱佸叡浜瀵規柟璁$畻鏈轟笂鐨勮祫婧愮瓑銆傚垎鍒鍦ㄤ袱鍙拌$畻鏈轟笂榪愯孲MART鈥擫inq紼嬪簭(鍙屽嚮妗岄潰涓婄殑PC鈥擫inq鍥炬爣鎴栭夋嫨鈥滃紑濮嬶紡紼嬪簭錛廝C鈥擫inq鈥濊彍鍗曚笅鐨勨淧C鈥擫inq鈥濆姛鑳介」)錛屽皢鍑虹幇涓嶹indows鎿嶄綔緋葷粺涓鐨勨滆祫婧愮$悊鍣ㄢ濆緢鐩鎬技鐨勬搷浣滅獥鍙o紝鍙鏄疨C鈥擫inq紿楀彛鐢變笂涓嬩袱閮ㄥ垎緇勬垚錛氫竴鑸涓婂崐閮ㄥ垎鏄劇ず鐨勬槸鏈鍦拌$畻鏈(Local Machine)涓婄殑璧勬簮錛岃屼笅鍗婇儴鍒嗘樉紺虹殑鏄榪滅▼璁$畻鏈(Remote Machine)涓婄殑璧勬簮銆備袱鍙拌$畻鏈轟箣闂寸殑鎿嶄綔閮藉湪榪欎釜紿楀彛涓榪涜屻
1.鏂囦歡鎿嶄綔鍔熻兘
鍍廤indows涓嬬殑鈥滆祫婧愮$悊鍣ㄢ濅竴鏍鳳紝PC鈥擫inq紿楀彛涓鐨勬搷浣滃悓鏍鋒敮鎸佸嶅埗銆佺矘甯栥佸壋寤恆佸垹闄ゅ拰鐩存帴鎷栨洺絳夊姛鑳姐傛傛嫭鍦拌達紝PC鈥擫inq鐨勫姛鑳藉熀鏈涓婃槸瀵光滆祫婧愮$悊鍣ㄢ濈殑鍏嬮殕銆傚彧涓嶈繃鈥滆祫婧愮$悊鍣ㄢ濆彧鑳界$悊鏈鍦拌$畻鏈轟笂鐨勮祫婧愶紝鑰孭C鈥擫inq紿楀彛鍗磋兘鍚屾椂綆$悊涓ゅ彴璁$畻鏈轟笂鐨勮祫婧愩
2.鍏變韓瀵規柟璁$畻鏈轟笂鐨勮祫婧
闄や互涓婃墍浠嬬粛鐨勫父鐢ㄥ姛鑳藉栵紝鍦≒C鈥擫inq紿楀彛涓榪樺彲浠ュ叡浜鍙︿竴鍙拌$畻鏈虹殑杞椹便佸厜椹便佹枃浠跺拰鎵撳嵃鏈虹瓑璧勬簮銆傚叾涓錛屽叡浜瀵規柟鐨勮蔣椹便佸厜椹卞拰鎵撳嵃鏈烘椂錛屾棤璁轟粠鎿嶄綔鏂瑰紡榪樻槸浠庨熷害涓婄湅錛屼笌鍦ㄦ湰鍦拌$畻鏈轟笂鍑犱箮娌℃湁浠涔堝尯鍒錛涘傛灉瀵規柟璁$畻鏈轟笂鐨勫簲鐢ㄧ▼搴忔病鏈変弗鏍肩殑閾炬帴瑕佹眰錛屼竴鑸閮借兘閫氳繃璋冪敤鍦ㄦ湰鍦拌$畻鏈轟笂榪愯屻傚叾浠栫殑濡俉AV銆丮P3鍙婁竴浜涙枃鏈鏂囦歡閮藉彲浠ョ洿鎺ュ湪鏈鍦拌$畻鏈轟笂欏哄埄鍦拌皟鐢ㄣ
鍦ㄤ粠璁$畻鏈轟笂鎷旀帀USB Link鐢電紗涔嬪墠涓瀹氳佸厛鍏抽棴鏈鍦扮殑PC鈥擫inq紿楀彛錛屽惁鍒欎細鍥犵粓鏂榪炴帴鑰屼駭鐢熻摑灞忥紝鐢氳嚦鏄姝繪満銆
鍥涖乁SB Link鐢電紗鍙屾満浜掕仈鐨勪紭銆佺己鐐
1.浣跨敤鏂逛究錛屾搷浣滅畝鍗
USB Link鐢電紗鐨勮蔣紜浠跺畨瑁呴兘寰堟柟渚匡紝鍑犱箮涓嶉渶瑕佷換浣曚笌緗戠粶鏈夊叧鐨勭煡璇嗐備嬌鐢ㄦ椂錛屽彧闇瑕佸皢涓ゅ彴璁$畻鏈鴻繛鎺ヨ搗鏉ワ紝鍒嗗埆榪愯孲MART鈥擫inq紼嬪簭鍚庡氨鍙浠ヨ繘琛屼袱鍙拌$畻鏈轟箣闂寸殑浠諱綍鎿嶄綔錛岃屼笉闇瑕佸叾瀹冪殑璁劇疆銆傝繖寰堥傚悎浜庣瑪璁版湰鐢佃剳涔嬮棿銆佺瑪璁版湰鐢佃剳涓庡彴寮忔満涔嬮棿鐨勮繛鎺ャ傚洜涓哄湪榪欎簺榪炴帴涓錛屽叾涓鑷沖皯鏈変竴鏂圭粡甯告槸涓嶅滻瀹氱殑銆
鍙屾満閫氳繃USB Link鐢電紗浜掕仈鍚庯紝涓ゅ彴璁$畻鏈哄嚑涔庡彲浠ヨ鐪嬪仛涓鍙拌$畻鏈烘潵浣跨敤銆傚嵆浣垮規柟(鍖呮嫭鏈鍦)璁$畻鏈轟笂鐨勬枃浠跺拰鏂囦歡澶瑰凡璁劇疆浜嗏滈殣鈃忊濆睘鎬э紝鍦≒C鈥擫inq紿楀彛涓閮戒細鍏ㄩ儴鈥滄毚闇測濆嚭鏉ャ傝繖鍦ㄦ柟渚挎搷浣滅殑鍚屾椂錛屼篃浣垮規柟鐨勮$畻鏈鴻繛涓鐐光滈殣縐佲濋兘娌℃湁銆傚彟澶栵紝榪炴帴鍙屾柟涓嶅瓨鍦ㄤ富鏈哄拰瀹㈡埛鏈轟箣鍒嗭紝涓ゅ彴琚榪炴帴璁$畻鏈虹殑鍔熻兘鍜屽湴浣嶆槸鍚岀瓑鐨勩
2.榪炴帴閫熷害鐩稿硅緝蹇
鏈鑺備腑鎵浣跨敤鐨刄SB Link鐢電紗鐨勮繛鎺ラ熷害鍦ㄨ存槑涔︿笂鏍囨槑涓4Mbps(鐩鍓嶅競闈涓婄殑鍚岀被璁懼囦竴鑸閮借揪鍒頒簡8Mbps)銆傛ら熷害鉶界劧鏄疷SB鎺ュ彛鐨勬渶浣庨熷害(USB鎺ュ彛鎻愪緵鐨勯熷害鑼冨洿鏄4鈥12Mbps)錛屼絾涓庨氳繃騫跺彛銆佷覆鍙e強MODEM榪炴帴鐩告瘮錛屽嵆浣挎槸4Mbps鐨勮繛鎺ラ熷害涔熷凡緇忚繙榪滈珮鍑轟簡璁稿氥傝繖縐嶈繛鎺ラ熷害錛屽凡鍩烘湰鑳藉熸弧瓚充袱鍙拌$畻鏈轟箣闂村傛枃浠朵紶杈撱佸叡浜璧勬簮絳夋棩甯擱渶瑕併
3.榪炴帴璺濈葷煭錛屼環鏍艱緝楂
USB Link鐢電紗鐨勯暱搴︿竴鑸涓嶈秴榪3綾籌紝榪欏逛簬緔ч偦鐨勪袱鍙拌$畻鏈烘潵璇翠篃璁稿凡緇忓熺敤浜嗭紝浣嗗綋涓ゅ彴璁$畻鏈轟箣闂寸殑璺濈昏緝榪(濡備綅浜庝笉鍚岀殑鎴塊棿)鏃訛紝灝辨棤鑳戒負鍔涗簡銆傝屼笖錛屾ょ被鐢電紗鍙堟病鏈夋彁渚涘彲閫夌殑鍔犻暱鐢電紗鎴栬懼囥傚彟澶栵紝姣忔牴300鍏冧笂涓嬬殑鍞浠鳳紝浣跨敤鎴鋒劅瑙夊埌鏈変簺鐗╅潪鎵鍊箋
Ⅲ 用vc++實現usb介面通信編程的一般步驟
我來說下我做過的USB通信,我沒有做過DSP跟上位機的通信,我只做過ARM類的STM32跟上位機的數據傳遞,雖然做過但是也不是很 懂,只是略知一二,我來說說我怎麼做的吧,我是這么實現的:
USB是個很復雜的協議,你如果完全搞懂,我估計沒有幾個月專心鑽研是不行的,但是如果只是能實現你的這個功能,我估計不是很復雜。
首先來說說USB通信:
USB通信傳輸方式分為四種:控制,中斷,批量,同步傳輸四種,這個你可以看看網上資料,然後我用STM32通信,因為數據量不是很大,我用的是中斷傳輸方式,但是DSP數據量應該會比較大,不知道中斷傳輸行不行,但是一般問題不大。
傳輸方式說完了,再說說USB設備類型,你每次插usb設備到電腦上的時候就會有提示,這是一個什麼設備,USB設備類型就是說的這個意思,是滑鼠還是鍵盤還是別的什麼的,如果你選用標準的類,你就不用自己寫上位機(PC)的驅動程序,但是如果不用標準的類,就是用自定義的類就要自己寫上層的設備驅動程序,就是所謂的DDK,WDM,WDF什麼的,你沒寫過這方面的還真有點棘手,但是也不一定要寫驅動程序,你可以試試有個類叫HID類,這個類在USB通信的時候用的還挺多的,不過這個類也有缺點,這個地方還要說一點,USB還分低速,全速,高速三種,不太了解DSP,不知道他支持什麼模式,但是USB2.0的全速應該至少可以支持的。
USB2.0全速模式HID用中斷方式每秒最多可以傳輸64KB的數據,不知道能不能達到你的要求,但是我估計一般問題不大了,如果你這歀DSP能支持高速模式,每秒用這種方式可以傳輸高達22MB的數據,這個速度一般問題不大了。
你可以照著我說的思路,去網上搜搜人家寫好的程序,肯定有人做過DSP的USB通信,然後你按照自己的要求改一改,主要應該是USB的設備描述符部分要自己修改,然後可能還要根據自己的電路改改配置什麼的,上位機軟體網上有源代碼的多的是,然後自己摸索摸索,我估計你要是編程水平還可以的話,只是摸索USB,一兩個星期完全沒有問題,祝你好運!