chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用USB總線實(shí)現(xiàn)分布式仿真系統(tǒng)之間的控制和通信設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:吉兵,單甘霖,關(guān) ? 2020-07-09 07:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、工作原理

情報(bào)指揮系統(tǒng)維修模擬產(chǎn)品訓(xùn)練器屬于分布式仿真系統(tǒng),系統(tǒng)結(jié)構(gòu)如圖1所示。其中,各仿真節(jié)點(diǎn)由單體計(jì)算機(jī)和仿真單體組成,仿真網(wǎng)絡(luò)采用局域網(wǎng),主控機(jī)用于集中配置各單體參數(shù),觸摸屏用于模擬產(chǎn)品操作界面。因?yàn)?a target="_blank">USB總線具有結(jié)構(gòu)簡(jiǎn)單、即插即用、低功耗、廣泛的軟硬件支持等優(yōu)點(diǎn),傳輸速度也從USB1.1協(xié)議支持的12Mbps 發(fā)展到了USB2.0協(xié)議支持的480Mbps,另外其星型拓?fù)浣Y(jié)構(gòu)能支持多達(dá)127個(gè)外設(shè)同時(shí)工作,所以本系統(tǒng)采用USB總線來(lái)實(shí)現(xiàn)單體計(jì)算機(jī)和仿真單體之間的控制和通信。

采用USB總線實(shí)現(xiàn)分布式仿真系統(tǒng)之間的控制和通信設(shè)計(jì)

1.1 USB的枚舉與重枚舉

USB芯片具有軟特性,外設(shè)可以利用USB接口從主機(jī)下載8051程序代碼到內(nèi)部RAM運(yùn)行,而不需要外部程序存儲(chǔ)器,方便了固件調(diào)試和升級(jí)。為支持這種軟特性,USB將端點(diǎn)0作為默認(rèn)地址,外設(shè)初次連接主機(jī)時(shí)作為默認(rèn)設(shè)備使用端點(diǎn)0進(jìn)行自動(dòng)枚舉,當(dāng)固件下載到內(nèi)部RAM后,經(jīng)過(guò)重枚舉使外設(shè)具有用戶在固件中設(shè)置的功能屬性。

外設(shè)和主機(jī)連接時(shí)會(huì)自動(dòng)加載驅(qū)動(dòng)程序,加載什么驅(qū)動(dòng)程序由USB設(shè)備描述符中的VID(2個(gè)字節(jié))和PID(2個(gè)字節(jié))決定,默認(rèn)設(shè)備的VID和PID是0547和2131。當(dāng)有多個(gè)外設(shè)同時(shí)工作時(shí),需要不同的VID和PID加以區(qū)分,可利用EEPROM來(lái)存儲(chǔ)外設(shè)的VID和PID信息,以便加載對(duì)應(yīng)的驅(qū)動(dòng)程序。

1.2 USB傳輸類型

USB定義了控制、中斷、批量和同步四種數(shù)據(jù)傳輸類型。控制傳輸是最復(fù)雜和重要的傳輸類型,也是USB枚舉階段最主要的數(shù)據(jù)交換方式。USB設(shè)備初次連到主機(jī)后就是通過(guò)控制傳輸來(lái)讀取地址信息和設(shè)備描述符的,這樣主機(jī)才能識(shí)別設(shè)備并安裝相應(yīng)的驅(qū)動(dòng)程序,其它三種傳輸方式也才能夠得以使用。因此,控制傳輸是其它三種傳輸?shù)那疤岷突A(chǔ)。

中斷傳輸主要用于數(shù)據(jù)量小、速度要求不高的數(shù)據(jù)傳輸,如鼠標(biāo)、鍵盤(pán)等;批量傳輸主要用于大容量數(shù)據(jù)的傳輸,比如硬盤(pán)接口、刻錄機(jī)接口等;同步傳輸多用于音頻流等需要恒定傳輸速率的數(shù)據(jù)傳輸,比如音箱、顯示器的接口等。

在維修模擬產(chǎn)品訓(xùn)練器中,單體計(jì)算機(jī)和仿真單體之間傳輸?shù)闹饕强刂菩畔?,?shù)據(jù)量不大,因此主要采用控制傳輸。

2、 USB硬件電路設(shè)計(jì)

USB硬件電路的核心是USB芯片,本電路采用的是Cypress公司提供的AN2131QC,封裝形式為80引腳PQFP。其結(jié)構(gòu)框圖如圖2所示,USB收發(fā)器與USB總線的 D+和D-相連,串行接口引擎對(duì)串行數(shù)據(jù)進(jìn)行編碼和譯碼,并執(zhí)行錯(cuò)誤更正、位填充等操作,最后發(fā)送數(shù)據(jù)字節(jié)到端口或從端口接收數(shù)據(jù)字節(jié)。內(nèi)部微處理器是一個(gè)改進(jìn)的8051內(nèi)核,使用標(biāo)準(zhǔn)的8051指令系統(tǒng),但執(zhí)行速度更快,功能更強(qiáng),與標(biāo)準(zhǔn)8051相比具有以下不同:

(1)一個(gè)總線周期包含4個(gè)時(shí)鐘周期,空閑周期被消去,而標(biāo)準(zhǔn)8051則為12個(gè)時(shí)鐘周期,因此速度提高了3倍;

(2)增加了第二個(gè)數(shù)據(jù)指針;

(3)增加了第二個(gè)UART;

(4)增加了第三個(gè)16位定時(shí)器;

(5)非多路復(fù)用的16位地址總線;

(6)增加了8個(gè)中斷。

設(shè)計(jì)AN2131QC的外圍電路時(shí),要注意以下幾個(gè)問(wèn)題:

(1)AN2131QC有總線供電和外部供電兩種供電方式,主機(jī)可以向外圍USB設(shè)備提供最大500mA的電流,當(dāng)USB設(shè)備耗電小于500mA時(shí)就可以使用總線供電。AN2131QC的工作電壓是+3.3V,總線提供的電壓是+5V,可以用電壓轉(zhuǎn)換芯片MAX882或AMS1117進(jìn)行電壓轉(zhuǎn)換。電源引腳2、21、22、42、62都接+3.3V,并通過(guò)一個(gè)0.1uF電容接地,使電壓更加穩(wěn)定。引腳5、6、13、14、72通過(guò) 1K電阻接地。

(2)USBD+和USBD-通過(guò)24Ω電阻接到USB總線的D+和D-,可抑制噪聲干擾。

(3)Xin(19)和Xout(20)之間接12MHz晶振,并通過(guò)兩個(gè)30pF電容接地。

(4)Reset(25)引腳通過(guò)0.1uF電容接+3.3V,10K電阻接地。

(5)SDA(64)、SCL(65)、Wakeup(66)、WR(40)、RD(41)通過(guò)10K上拉電阻接+3.3V。

3、 固件程序

USB固件程序用Keil C編寫(xiě),使用Keil uVision編譯器進(jìn)行編譯調(diào)試。一個(gè)USB固件主要包括以下文件:

Fw.c:固件框架源文件,main()函數(shù)就位于該文件中;

Periph.c:用戶函數(shù)定義,用戶初始化函數(shù)TD_Init()和用戶函數(shù)TD_Poll()的定義就位于該文件中;

Dscr.a51:USB描述符表,對(duì)加載驅(qū)動(dòng)程序有重要意義的VID和PID信息就位于該文件的設(shè)備描述符中;

Ezusb.lib:EZ-USB固件函數(shù)庫(kù);

USBJmpTb.OBJ:中斷向量和跳轉(zhuǎn)表。

Ezusb.h、Ezregs.h:編寫(xiě)程序時(shí)必須包括的頭文件,前者包含USB函數(shù)庫(kù)的常量定義、宏定義、全局變量聲明和函數(shù)原型等,后者包含位標(biāo)志定義和寄存器變量聲明。

固件程序的運(yùn)行流程如圖3所示,USB上電復(fù)位后進(jìn)入main()函數(shù)先初始化內(nèi)部狀態(tài)變量,然后調(diào)用用戶初始化函數(shù)TD_Init()。從該函數(shù)返回后使能中斷,然后每隔1s進(jìn)行一次設(shè)備重枚舉直到端點(diǎn)0接受到主機(jī)的SETUP數(shù)據(jù)包。檢測(cè)到SETUP包后開(kāi)始任務(wù)調(diào)度,任務(wù)調(diào)度的步驟如下:

(1)調(diào)用用戶函數(shù)SetupCommand(),判斷是否受到SETUP包;

(2)分析判斷SETUP包,如果是標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令則執(zhí)行標(biāo)準(zhǔn)請(qǐng)求,如果是用戶請(qǐng)求命令則調(diào)用TD_Poll()進(jìn)行數(shù)據(jù)處理并反饋給主機(jī)結(jié)果;

(3)判斷是否收到USB掛起信號(hào),收到則調(diào)用TD_Suspend()。從該函數(shù)返回后再檢測(cè)是否發(fā)生USB喚醒事件,未檢測(cè)到則處理器進(jìn)入掛起狀態(tài),否則調(diào)用TD_Resume(),程序繼續(xù)運(yùn)行。

需要用戶自己編寫(xiě)的代碼主要包括TD_Init()、TD_Poll()。在本系統(tǒng)中,TD_Init()主要完成端點(diǎn)的選擇和配置,以及外圍器件的初始化。TD_Poll()將根據(jù)接收的主機(jī)命令對(duì)數(shù)據(jù)進(jìn)行處理,之后將處理結(jié)果或狀態(tài)信息反饋給主機(jī)。

4、 主機(jī)程序

主機(jī)程序主要用于發(fā)送用戶命令和參數(shù),接收USB設(shè)備的運(yùn)行狀態(tài)和處理結(jié)果。本系統(tǒng)的主機(jī)程序用VC++6.0編寫(xiě)實(shí)現(xiàn),因?yàn)椴捎玫氖强刂苽鬏?,用到的主要函?shù)是CreateFile()和DeviceIoControl()。前者用于獲得設(shè)備句柄,其本質(zhì)是先由設(shè)備驅(qū)動(dòng)器生成一個(gè)句柄,然后將這個(gè)句柄分配給外設(shè)。獲得設(shè)備句柄后,用DeviceIoControl()對(duì)設(shè)備進(jìn)行讀寫(xiě)。主要程序代碼如下:

DeviceHANDLE=CreateFile(“.ezusb-0”,

GENERIC_WRITE,

FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

0,

NULL);

If (DeviceHANDLE==INVALID_HANDLE_VALUE)

MessageBox(“無(wú)法創(chuàng)建設(shè)備”,“Information Box”,MB_OK|MB_ICONINFORMATION);

else

bResult=DeviceIoControl(DeviceHANDLE,

IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST,

myrequest,

sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL),

returndata,

n,

nBytes,

NULL);

在本系統(tǒng)中,主機(jī)發(fā)送給外設(shè)最多的是VENDOR_OR_CLASS_REQUEST_CONTROL類型的請(qǐng)求,其結(jié)構(gòu)定義如下:

typedef struct _VENDOR_OR_CLASS_REQUEST_CONTROL

{

UCHAR direction; //傳輸方向,0為主機(jī)到設(shè)備,1為設(shè)備到主機(jī)

UCHAR requestType; //請(qǐng)求類型,0為用戶,1為類

UCHAR recepient; //接收者類型,0為設(shè)備,1為接口,2為端點(diǎn),3為其他

UCHAR requestTypeReservedBits;

UCHAR request;

USHORT value;

USHORT index;

};

其中后四個(gè)參數(shù)分別對(duì)應(yīng)于設(shè)備請(qǐng)求命令的bRequestType、bRequest、wValue和wIndex,因?yàn)榘l(fā)送的是用戶自己的設(shè)備請(qǐng)求命令而非標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令,所以bRequestType的值可設(shè)為0;且bRequest的值不能與標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令的bRequest值相沖突;雙字節(jié)的value和index可用來(lái)傳遞主機(jī)給USB設(shè)備的參數(shù)。

5、 驅(qū)動(dòng)程序

要實(shí)現(xiàn)USB設(shè)備的固件下載和重枚舉需要編寫(xiě)兩個(gè)驅(qū)動(dòng)程序,通用驅(qū)動(dòng)(GPD)和固件裝載驅(qū)動(dòng)。前者完成主機(jī)與外設(shè)的通信和控制,一般不用重新編寫(xiě),可直接采用Cypress公司提供的ezusb.sys。后者負(fù)責(zé)在外設(shè)連到主機(jī)時(shí)將正確的驅(qū)動(dòng)程序裝載到AN2131QC的RAM中,完成對(duì)外設(shè)的重新設(shè)置。主機(jī)根據(jù)新的設(shè)置安裝通用驅(qū)動(dòng),重新枚舉外設(shè)為一個(gè)新的USB設(shè)備。固件裝載驅(qū)動(dòng)的開(kāi)發(fā)過(guò)程如下:

(1)新建一個(gè)目錄dev_io,將Cypressusbdriversezloader目錄下的文件復(fù)制到該目錄下。

(2)打開(kāi)該目錄下的sources文件,將TARGETNAME=ezloader改為T(mén)ARGETNAME=dev_io。

(3)利用hex2c將dev_io.hex轉(zhuǎn)換為dev_io.c: hex2c dev_io.hex dev_io.c

(4)將fireware.c中的fireware[]數(shù)組用dev_io.c中的fireware[]數(shù)組替換。

(5)進(jìn)入C:NTDDKBIN目錄,在命令行方式下鍵入SETENV C:NTDDK回車,此時(shí)顯示設(shè)置環(huán)境完成,然后返回dev_io運(yùn)行BUILD Cc,這時(shí)會(huì)在dev_iolibi386free或checked目錄下生成我們需要的固件裝載設(shè)備驅(qū)動(dòng)程序,將該驅(qū)動(dòng)程序復(fù)制到c:windowssystem32drivers目錄下。

(6)為了使該驅(qū)動(dòng)程序正確工作,必須為它寫(xiě)一個(gè)安裝信息文件,即.inf文件。它將設(shè)備的VID和PID綁定到特定的設(shè)備驅(qū)動(dòng)程序上??煞抡臻_(kāi)發(fā)包提供的inf文件編寫(xiě),具體步驟參見(jiàn)文獻(xiàn)[5]。

6、結(jié)束語(yǔ)

本文從工作原理、硬件設(shè)計(jì)、固件程序、主機(jī)程序和驅(qū)動(dòng)程序五個(gè)方面系統(tǒng)論述了情報(bào)指揮系統(tǒng)維修模擬產(chǎn)品訓(xùn)練器中USB接口開(kāi)發(fā)的全過(guò)程,并給出了基于控制傳輸?shù)腢SB系統(tǒng)設(shè)計(jì)方法,為今后的維修模擬訓(xùn)練系統(tǒng)開(kāi)發(fā)提供了一種規(guī)范、快捷的接口設(shè)計(jì)方法。

本文的創(chuàng)新觀點(diǎn)主要有兩點(diǎn):1、與傳統(tǒng)的VXI、PXI等總線相比,在情報(bào)指揮系統(tǒng)維修模擬訓(xùn)練器中采用USB總線作為仿真單體和單體計(jì)算機(jī)之間的接口能簡(jiǎn)化硬件,即插即用,使仿真單體具有便攜能力。2、USB接口支持多達(dá)127個(gè)外設(shè)的能力使系統(tǒng)具有很強(qiáng)的單體擴(kuò)展能力,而且支持多個(gè)單體同時(shí)工作。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8319

    瀏覽量

    279039
  • 仿真
    +關(guān)注

    關(guān)注

    52

    文章

    4356

    瀏覽量

    137235
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2999

    瀏覽量

    90861
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    分布式軟件系統(tǒng)

    分布式程序設(shè)計(jì)語(yǔ)言及其編譯(解釋)系統(tǒng)、分布式文件系統(tǒng)分布式數(shù)據(jù)庫(kù)系統(tǒng)等。 分布式操作
    發(fā)表于 07-22 14:53

    基于虛擬儀器的城市景觀照明分布式控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于虛擬儀器的城市景觀照明分布式控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)針對(duì)城市級(jí)景觀照明系統(tǒng)分布廣,數(shù)量多的特點(diǎn),設(shè)計(jì)一種基于虛擬儀器的可組分布式城市景觀照明控制系統(tǒng)
    發(fā)表于 12-01 10:19

    分布式控制系統(tǒng)

    和集中控制的自動(dòng)控制系統(tǒng)。分布式控制系統(tǒng)采用微處理機(jī)分別控制各個(gè)回路,而用中小型工業(yè)控制計(jì)算機(jī)或
    發(fā)表于 03-01 22:19

    利用NI VeriStand 2010特性創(chuàng)建分布式系統(tǒng)

    VeriStand 2010創(chuàng)建分布式處理和I/O系統(tǒng),其中包含將開(kāi)發(fā)分布式系統(tǒng)變得更為有效和有力的許多特性。例如飛機(jī)、汽車或其他工業(yè)項(xiàng)目中的控制
    發(fā)表于 04-08 09:42

    如何基于分布式總線進(jìn)行“三步走”極簡(jiǎn)開(kāi)發(fā)

    ),以及開(kāi)發(fā)者如何基于分布式總線進(jìn)行“三步走”極簡(jiǎn)開(kāi)發(fā)(見(jiàn)下方視頻解說(shuō))分布式總線為設(shè)備之間的互聯(lián)互通提供了統(tǒng)一的
    發(fā)表于 12-24 10:43

    分布式總線系統(tǒng)

    分布式總線系統(tǒng)簡(jiǎn)介目錄約束使用涉及倉(cāng)簡(jiǎn)介設(shè)備通信方式多種多樣(USB/WIFI/BT等),不同通信
    發(fā)表于 04-23 17:12

    一文帶你看懂分布式總線在家庭場(chǎng)景的應(yīng)用

    終端融為一體,形成超級(jí)終端,為消費(fèi)者帶來(lái)全場(chǎng)景智慧生活新體驗(yàn)。如何讓各種不同的設(shè)備融合為一體,形成超級(jí)終端呢?這就需要分布式總線來(lái)實(shí)現(xiàn)。分布式
    發(fā)表于 01-06 11:32

    分布式總線實(shí)現(xiàn)近場(chǎng)設(shè)備間統(tǒng)一的分布式通信管理能力如何?

    現(xiàn)實(shí)中多設(shè)備間通信方式多種多樣(WIFI、藍(lán)牙等),不同的通信方式使用差異大,導(dǎo)致通信問(wèn)題多;同時(shí)還面臨設(shè)備間通信鏈路的融合共享和沖突無(wú)法處理等挑戰(zhàn)。那么
    發(fā)表于 03-16 11:03

    基于CAN 總線分布式潛水電機(jī)監(jiān)控系統(tǒng)

    介紹了基于CAN 總線分布式潛水電機(jī)監(jiān)控系統(tǒng),分析了系統(tǒng)的構(gòu)成及實(shí)現(xiàn)方法,簡(jiǎn)述了控制節(jié)點(diǎn)、CA
    發(fā)表于 05-25 11:39 ?19次下載

    CAN總線實(shí)現(xiàn)工業(yè)網(wǎng)絡(luò)分布式測(cè)控系統(tǒng)

    本文選用can總線設(shè)計(jì)了分布式熱電阻智能節(jié)點(diǎn),利用can總線連接各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),可以直接與主控卡或上位機(jī)通信,組建成工業(yè)網(wǎng)絡(luò)分布式測(cè)控
    發(fā)表于 09-08 15:19 ?2330次閱讀

    基于總線分布式水下航行器控制器設(shè)計(jì)

    提出了一種基于CAN總線分布式水下航行器控制器的設(shè)計(jì)方法,主要描述了其硬件總體設(shè)計(jì)方案和實(shí)現(xiàn)辦法。控制器作為
    發(fā)表于 06-08 17:54 ?31次下載
    基于<b class='flag-5'>總線</b>的<b class='flag-5'>分布式</b>水下航行器<b class='flag-5'>控制</b>器設(shè)計(jì)

    基于CAN/LIN 實(shí)現(xiàn)車門(mén)分布式控制系統(tǒng)的設(shè)計(jì)與研究

    結(jié)合 CAN 總線和 LIN 總線各自的優(yōu)缺點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了基于 CAN/LIN 總線的分層車門(mén)控制系統(tǒng)
    發(fā)表于 09-08 10:58 ?7次下載
    基于CAN/LIN <b class='flag-5'>實(shí)現(xiàn)</b>車門(mén)<b class='flag-5'>分布式控制系統(tǒng)</b>的設(shè)計(jì)與研究

    基于CAN總線分布單元控制實(shí)現(xiàn)高壓變頻分布式控制系統(tǒng)的設(shè)計(jì)

    針對(duì)傳統(tǒng)控制系統(tǒng)過(guò)于復(fù)雜的缺點(diǎn),本文提出一種高壓變頻的分布式控制策略,系統(tǒng)采用“中央控制單元-總線
    的頭像 發(fā)表于 11-27 08:00 ?3461次閱讀
    基于CAN<b class='flag-5'>總線</b>和<b class='flag-5'>分布</b>單元<b class='flag-5'>控制</b>器<b class='flag-5'>實(shí)現(xiàn)</b>高壓變頻<b class='flag-5'>分布式控制系統(tǒng)</b>的設(shè)計(jì)

    如何設(shè)計(jì)和實(shí)現(xiàn)基于UART的機(jī)器人分布式控制通信協(xié)議概述

    為了實(shí)現(xiàn)機(jī)器人應(yīng)用系統(tǒng)的協(xié)調(diào)問(wèn)題,實(shí)現(xiàn)多個(gè)控制模塊之間通信,現(xiàn)設(shè)計(jì)并
    發(fā)表于 12-19 16:46 ?7次下載
    如何設(shè)計(jì)和<b class='flag-5'>實(shí)現(xiàn)</b>基于UART的機(jī)器人<b class='flag-5'>分布式控制</b><b class='flag-5'>通信</b>協(xié)議概述

    分布式總線實(shí)現(xiàn)設(shè)備無(wú)感發(fā)現(xiàn)和高效傳輸

    分布式總線是OpenHarmony社區(qū)開(kāi)源的分布式設(shè)備通信基座,為設(shè)備之間的互通互聯(lián)提供統(tǒng)一的分布式
    發(fā)表于 07-23 16:04 ?4759次閱讀