關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > USB總線在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用

USB總線在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用

作者: 時(shí)間:2009-12-22 來源:網(wǎng)絡(luò) 收藏

  RS485協(xié)議只是物理層,上層協(xié)議需要用戶自己定義。 由于介紹RS485的文章很多,其他程序略。

  3.2 軟件設(shè)計(jì):

  設(shè)備與主機(jī)通過四根線連接,電源、地,以及兩根數(shù)據(jù)線,該模塊使用計(jì)算機(jī)提供的5v電源。連接速度由D+ , D-連線上的電阻位置決定的, 如果D+ 線上有上拉電阻, 設(shè)備為全速設(shè)備,如果D-連線上有上拉電阻, 則USB 設(shè)備為低速設(shè)備。PDIUSBD12 的softconnect 技術(shù)在片內(nèi)集成了1.5k的上拉電阻, 可以通過微處理器發(fā)送命令來控制D+上的上拉電阻是否與電源連接。

  在usb設(shè)備中,我們使用描述符區(qū)別不同的設(shè)備、端口等。描述符主要包括設(shè)備描述符、配置描述符、接口描述符,在設(shè)備中預(yù)先設(shè)置這些參數(shù),主機(jī)通過對(duì)這些描述符的讀取,獲得該設(shè)備的信息。

  當(dāng)一個(gè)設(shè)備剛插入計(jì)算機(jī)時(shí),主機(jī)需要對(duì)該設(shè)備枚舉,讀取該設(shè)備的相關(guān)參數(shù),首先使用默認(rèn)的設(shè)備地址0進(jìn)行通信。主機(jī)端先向設(shè)備地址0,端點(diǎn)0發(fā)送Get_Descriptor(獲取描述符)請(qǐng)求來查詢接入什么樣的設(shè)備,設(shè)備使用設(shè)備描述符回答,然后通過發(fā)送Set_Address(設(shè)定地址)請(qǐng)求來分配一個(gè)單獨(dú)的地址給設(shè)備。設(shè)備讀取這個(gè)請(qǐng)求,返回一個(gè)確認(rèn)且保存新的地址。主機(jī)給新地址發(fā)送一個(gè)Get_Descriptor請(qǐng)求來讀取這個(gè)設(shè)備完整的描述符,包括端點(diǎn)最大包的大小,設(shè)備支持的配置號(hào),以及該設(shè)備的其它信息,主機(jī)將這些信息用于往后的通信中。而后發(fā)出Get_configuration_Descriptor(獲取配置描述符)命令,用來獲取設(shè)備的節(jié)點(diǎn)和端點(diǎn)的配置信息。而后發(fā)出(Set_configuration)設(shè)定配置請(qǐng)求,以該配置號(hào)配置設(shè)備。設(shè)備就完全正確處于可操作狀態(tài),完成了枚舉過程,便可以通過端點(diǎn)進(jìn)行數(shù)據(jù)傳輸了。

  以下是主設(shè)備讀取從設(shè)備描述符的過程

  主機(jī)發(fā)起的setup包,使用默認(rèn)的地址0,端點(diǎn)0。其中SYNC字段為同步序列數(shù)據(jù)域,固定為01H,緊接著為標(biāo)識(shí)符數(shù)據(jù)域PID字段,用來表示數(shù)據(jù)封裝包的類型,可分為令牌、數(shù)據(jù)、握手或特殊四種封裝包類型。其中令牌封裝包細(xì)分為OUT,IN,SETUP,SOF四種封裝格式。隨后為地址數(shù)據(jù)域ADDR字段,用來尋址高達(dá)127個(gè)外圍設(shè)備,每個(gè)設(shè)備只有對(duì)應(yīng)唯一的地址,ENDP字段為端點(diǎn)數(shù)據(jù)域,最多可尋址32個(gè)端點(diǎn),它僅在IN,OUT,SETUP令牌封裝包中,最后為CRC校驗(yàn)和。

  主機(jī)發(fā)送數(shù)據(jù),其中數(shù)據(jù)域中的數(shù)據(jù)80表示設(shè)備標(biāo)準(zhǔn)請(qǐng)求,06描述符命令(get_descriptor)00 01 代表請(qǐng)求設(shè)備的描述符,00 00為語言類型,40 00,指出期望從設(shè)備返回的數(shù)據(jù)個(gè)數(shù),如果描述符的個(gè)數(shù)大于指定的字節(jié)個(gè)數(shù),則按照指定個(gè)數(shù)返回,如果描述符小于指定的字節(jié)數(shù),返回實(shí)際的字節(jié)個(gè)數(shù)。

  該幀為設(shè)備收到數(shù)據(jù)后的確認(rèn)幀

  該幀為向設(shè)備發(fā)送數(shù)據(jù)請(qǐng)求。


  12為描述符長度,01為設(shè)備類型,10 01 為usb版本號(hào),bcd碼,這里是usb1.1,00 為設(shè)備類型碼,00為子類設(shè)備代碼,00為USB分配的設(shè)備協(xié)議代碼,10為端點(diǎn)0最大包的大小,d8,0d為廠商編號(hào),01 c0為產(chǎn)品編號(hào),04 01為設(shè)備出廠編號(hào),01為廠商字符串索引,02 為產(chǎn)品字符串索引,00為序列號(hào),01為設(shè)置編號(hào)。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉