WINDOWS環(huán)境下PC機(jī)與單片機(jī)的通信
2、RS-485的串行通訊
RS-485與RS-232C相類似,其區(qū)別在于它使用了雙端平衡驅(qū)動及半雙工模式,這些措施使RS- 485傳輸距離更遠(yuǎn),同時,RS-485還可以組網(wǎng)。在同一個RS-485網(wǎng)絡(luò)中,可以多達(dá)32個模塊,某些器件可以多達(dá)256個甚至更多。相應(yīng)的,RS-485具有接收/發(fā)送控制端,RS-485的接收控制端可以在需要接收的時候打開或者一直打開以便無條件的接收線路上的數(shù)據(jù)。RS-485的發(fā)送控制端僅在需要發(fā)送時打開,平時應(yīng)關(guān)閉發(fā)送器,因為在同一RS-485網(wǎng)絡(luò)中在同一時刻僅允許一個發(fā)送器工作。在數(shù)據(jù)發(fā)送完成后關(guān)閉發(fā)送器。這可以通過以下兩種方法實(shí)現(xiàn)。①、在數(shù)據(jù)完全移出后,對于PC機(jī)為發(fā)送移位寄存器空,以MCS-51系列單片機(jī)為例則為TI置位。這些條件既可使用查詢的方法得到,也可以在中斷程序中實(shí)現(xiàn)。②、將RS-485的接收器始終打開,這樣一來,所有在RS-485上的數(shù)據(jù)均被接收回來,包括自己發(fā)送出去的數(shù)據(jù)。因此,當(dāng)自己發(fā)送的數(shù)據(jù)完全被自己接收回來時即可關(guān)閉發(fā)送器。原則上說,這一方法無論是查詢或中斷方式都適用,但實(shí)際上,由于RS-485的數(shù)據(jù)通常打包后發(fā)送,因此,使用查詢的方法并不理想。這一方法非常適合中斷方式,尤其是以數(shù)據(jù)包傳送的RS-485通訊。
3、USB接口的通訊:
USB(通用串行總線Universal Serial Bus),其傳輸方式分為4種:控制傳輸,塊傳輸,同步傳輸和中斷傳輸。在實(shí)際開發(fā)中使用了控制傳輸和塊傳輸。控制傳輸主要用來完成主機(jī)對設(shè)備的各種控制操作,也就是用來實(shí)現(xiàn)位于主機(jī)上的USB總線驅(qū)動程序(USBD.SYS)以及編寫的功能驅(qū)動程序?qū)υO(shè)備的各種控制操作。塊傳輸主要用來完成主機(jī)和設(shè)備間的大批量數(shù)據(jù)傳輸以及對傳輸數(shù)據(jù)進(jìn)行錯誤檢測(若發(fā)生錯誤,它支持重傳功能)。單片機(jī)系統(tǒng)控制USB控制器的工作過程可以簡單地概括為:當(dāng)USB控制器從USB總線檢測到主機(jī)啟動的某一傳輸請求后,通過中斷方式將此請求通知單片機(jī)系統(tǒng),單片機(jī)系統(tǒng)通過訪問USB控制器的狀態(tài)寄存器和數(shù)據(jù)寄存器獲得與此次傳輸有關(guān)的各種參數(shù),并根據(jù)具體的傳輸參數(shù),對USB控制器的控制寄存器和數(shù)據(jù)寄存器進(jìn)行相應(yīng)的操作,以完成主機(jī)的傳輸請求。USB設(shè)備驅(qū)動程序包括如下幾部分:
①初始化模塊提供一個入口函數(shù)DriverEntry(),所有對各種IRP(I/O Request Packet,IRP請求包)的處理例程都在此入口函數(shù)中做出定義。②即插即用管理模塊實(shí)現(xiàn)USB設(shè)備的熱拔插及動態(tài)配置。當(dāng)硬件檢測到USB設(shè)備接入時,Windows查找響應(yīng)的驅(qū)動程序,并調(diào)用它的DriverEntry例程,PnP(即插即用)管理器調(diào)用驅(qū)動程序的AddDevice例程,告訴它添加了一個設(shè)備;在此處理過程中,驅(qū)動程序收到一個設(shè)備啟動請求(IRP_MN_START_DEVICE)的IRP。同理,當(dāng)要拔除時,PnP管理器會發(fā)出一個設(shè)備刪除請求(IRP_MN_REMOVE_DEVICE)的IRP,由驅(qū)動程序進(jìn)行處理。通過對這些PnP請求的處理,可支持設(shè)備的熱插拔和即插即用功能。③電源管理模塊負(fù)責(zé)設(shè)備的掛起與喚醒。④I/O功能實(shí)現(xiàn)模塊完成I/O請求的大部分工作。若應(yīng)用程序想對設(shè)備進(jìn)行I/O操作,它便使用 Windows API函數(shù),對WIN32子系統(tǒng)進(jìn)行WIN32調(diào)用。此調(diào)用由I/O系統(tǒng)服務(wù)接收并通知I/O管理器,I/O管理器將此請求構(gòu)造成一個合適的I/O請求包 (IRP)并把它傳遞給USB設(shè)備驅(qū)動程序,USB設(shè)備驅(qū)動程序接收到這個IRP以后,根據(jù)IRP中包含的具體操作代碼,構(gòu)造相應(yīng)的USB請求塊并把此 URB(USB請求塊)放到一個新的IRP中,然后把此IRP傳遞到USB總線驅(qū)動程序,USB總線驅(qū)動程序根據(jù)IRP中所含的URB執(zhí)行相應(yīng)的操作(如從USB設(shè)備讀取數(shù)據(jù)等),并把操作結(jié)果通過IRP返還給USB設(shè)備驅(qū)動程序。USB設(shè)備驅(qū)動程序接收到此IRP后,將操作結(jié)果通過IRP返還給I/O管理器,最后I/O管理器將此IRP中操作結(jié)果返還給應(yīng)用程序,至此應(yīng)用程序?qū)SB設(shè)備的一次I/O操作完成。
4、以上幾種通訊模式的比較
對于RS-232和RS-485兩種通訊方式,速度相對而言慢一點(diǎn),但傳輸?shù)木嚯x遠(yuǎn),完全能滿足工業(yè)控制的要求,因而在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。我們知道PC機(jī)的串口個數(shù)是有限的,它在單片機(jī)較多的情況下要實(shí)現(xiàn)相互通訊有一定的困難。而USB接口的通訊方式是后起之秀,它的通訊速度快,但不能實(shí)現(xiàn)遠(yuǎn)距離傳輸,而將RS-485與USB結(jié)合能有效地解決這一問題。
參考文獻(xiàn)
1.張念淮,江浩. USB總線接口開發(fā)指南. [M] 北京:國防工業(yè)出版社 .2002
2.李朝青. PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù) [M] .北京:北京航空航天出版社 .2000
3.高登芳,潘承武,朱英杰. 微型計算機(jī)實(shí)用測控接口技術(shù) [M]. 北京:北京科學(xué)技術(shù)出版社 1990.
4.余永權(quán) 汪明慧 黃英 單片機(jī)在控制系統(tǒng)中的應(yīng)用 [M] 北京:電子工業(yè)出版社 2003
5.劉復(fù)華 8098單片機(jī)及其應(yīng)用系統(tǒng)設(shè)計 [M] 北京:清華大學(xué)出版社 1991
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論