色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用USB總線實現分布式仿真系統之間的控制和通信設計

電子設計 ? 來源:微計算機信息 ? 作者:吉兵,單甘霖,關 ? 2020-07-09 07:55 ? 次閱讀

1、工作原理

情報指揮系統維修模擬產品訓練器屬于分布式仿真系統,系統結構如圖1所示。其中,各仿真節點由單體計算機和仿真單體組成,仿真網絡采用局域網,主控機用于集中配置各單體參數,觸摸屏用于模擬產品操作界面。因為USB總線具有結構簡單、即插即用、低功耗、廣泛的軟硬件支持等優點,傳輸速度也從USB1.1協議支持的12Mbps 發展到了USB2.0協議支持的480Mbps,另外其星型拓撲結構能支持多達127個外設同時工作,所以本系統采用USB總線來實現單體計算機和仿真單體之間的控制和通信。

采用USB總線實現分布式仿真系統之間的控制和通信設計

1.1 USB的枚舉與重枚舉

USB芯片具有軟特性,外設可以利用USB接口從主機下載8051程序代碼到內部RAM運行,而不需要外部程序存儲器,方便了固件調試和升級。為支持這種軟特性,USB將端點0作為默認地址,外設初次連接主機時作為默認設備使用端點0進行自動枚舉,當固件下載到內部RAM后,經過重枚舉使外設具有用戶在固件中設置的功能屬性。

外設和主機連接時會自動加載驅動程序,加載什么驅動程序由USB設備描述符中的VID(2個字節)和PID(2個字節)決定,默認設備的VID和PID是0547和2131。當有多個外設同時工作時,需要不同的VID和PID加以區分,可利用EEPROM來存儲外設的VID和PID信息,以便加載對應的驅動程序。

1.2 USB傳輸類型

USB定義了控制、中斷、批量和同步四種數據傳輸類型??刂苽鬏斒亲顝碗s和重要的傳輸類型,也是USB枚舉階段最主要的數據交換方式。USB設備初次連到主機后就是通過控制傳輸來讀取地址信息和設備描述符的,這樣主機才能識別設備并安裝相應的驅動程序,其它三種傳輸方式也才能夠得以使用。因此,控制傳輸是其它三種傳輸的前提和基礎。

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

在維修模擬產品訓練器中,單體計算機和仿真單體之間傳輸的主要是控制信息,數據量不大,因此主要采用控制傳輸。

2、 USB硬件電路設計

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

(1)一個總線周期包含4個時鐘周期,空閑周期被消去,而標準8051則為12個時鐘周期,因此速度提高了3倍;

(2)增加了第二個數據指針;

(3)增加了第二個UART;

(4)增加了第三個16位定時器;

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

(6)增加了8個中斷。

設計AN2131QC的外圍電路時,要注意以下幾個問題:

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

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

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

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

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

3、 固件程序

USB固件程序用Keil C編寫,使用Keil uVision編譯器進行編譯調試。一個USB固件主要包括以下文件:

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

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

Dscr.a51:USB描述符表,對加載驅動程序有重要意義的VID和PID信息就位于該文件的設備描述符中;

Ezusb.lib:EZ-USB固件函數庫;

USBJmpTb.OBJ:中斷向量和跳轉表。

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

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

(1)調用用戶函數SetupCommand(),判斷是否受到SETUP包;

(2)分析判斷SETUP包,如果是標準設備請求命令則執行標準請求,如果是用戶請求命令則調用TD_Poll()進行數據處理并反饋給主機結果;

(3)判斷是否收到USB掛起信號,收到則調用TD_Suspend()。從該函數返回后再檢測是否發生USB喚醒事件,未檢測到則處理器進入掛起狀態,否則調用TD_Resume(),程序繼續運行。

需要用戶自己編寫的代碼主要包括TD_Init()、TD_Poll()。在本系統中,TD_Init()主要完成端點的選擇和配置,以及外圍器件的初始化。TD_Poll()將根據接收的主機命令對數據進行處理,之后將處理結果或狀態信息反饋給主機。

4、 主機程序

主機程序主要用于發送用戶命令和參數,接收USB設備的運行狀態和處理結果。本系統的主機程序用VC++6.0編寫實現,因為采用的是控制傳輸,用到的主要函數是CreateFile()和DeviceIoControl()。前者用于獲得設備句柄,其本質是先由設備驅動器生成一個句柄,然后將這個句柄分配給外設。獲得設備句柄后,用DeviceIoControl()對設備進行讀寫。主要程序代碼如下:

DeviceHANDLE=CreateFile(“.ezusb-0”,

GENERIC_WRITE,

FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

0,

NULL);

If (DeviceHANDLE==INVALID_HANDLE_VALUE)

MessageBox(“無法創建設備”,“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);

在本系統中,主機發送給外設最多的是VENDOR_OR_CLASS_REQUEST_CONTROL類型的請求,其結構定義如下:

typedef struct _VENDOR_OR_CLASS_REQUEST_CONTROL

{

UCHAR direction; //傳輸方向,0為主機到設備,1為設備到主機

UCHAR requestType; //請求類型,0為用戶,1為類

UCHAR recepient; //接收者類型,0為設備,1為接口,2為端點,3為其他

UCHAR requestTypeReservedBits;

UCHAR request;

USHORT value;

USHORT index;

};

其中后四個參數分別對應于設備請求命令的bRequestType、bRequest、wValue和wIndex,因為發送的是用戶自己的設備請求命令而非標準設備請求命令,所以bRequestType的值可設為0;且bRequest的值不能與標準設備請求命令的bRequest值相沖突;雙字節的value和index可用來傳遞主機給USB設備的參數。

5、 驅動程序

要實現USB設備的固件下載和重枚舉需要編寫兩個驅動程序,通用驅動(GPD)和固件裝載驅動。前者完成主機與外設的通信和控制,一般不用重新編寫,可直接采用Cypress公司提供的ezusb.sys。后者負責在外設連到主機時將正確的驅動程序裝載到AN2131QC的RAM中,完成對外設的重新設置。主機根據新的設置安裝通用驅動,重新枚舉外設為一個新的USB設備。固件裝載驅動的開發過程如下:

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

(2)打開該目錄下的sources文件,將TARGETNAME=ezloader改為TARGETNAME=dev_io。

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

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

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

(6)為了使該驅動程序正確工作,必須為它寫一個安裝信息文件,即.inf文件。它將設備的VID和PID綁定到特定的設備驅動程序上??煞抡臻_發包提供的inf文件編寫,具體步驟參見文獻[5]。

6、結束語

本文從工作原理、硬件設計、固件程序、主機程序和驅動程序五個方面系統論述了情報指揮系統維修模擬產品訓練器中USB接口開發的全過程,并給出了基于控制傳輸的USB系統設計方法,為今后的維修模擬訓練系統開發提供了一種規范、快捷的接口設計方法。

本文的創新觀點主要有兩點:1、與傳統的VXI、PXI等總線相比,在情報指揮系統維修模擬訓練器中采用USB總線作為仿真單體和單體計算機之間的接口能簡化硬件,即插即用,使仿真單體具有便攜能力。2、USB接口支持多達127個外設的能力使系統具有很強的單體擴展能力,而且支持多個單體同時工作。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7979

    瀏覽量

    265608
  • 仿真
    +關注

    關注

    50

    文章

    4124

    瀏覽量

    133874
  • 總線
    +關注

    關注

    10

    文章

    2900

    瀏覽量

    88293
收藏 人收藏

    評論

    相關推薦

    分布式軟件系統

    、分布式程序設計語言及其編譯(解釋)系統、分布式文件系統分布式數據庫系統等。 分布式操作
    發表于 07-22 14:53

    基于虛擬儀器的城市景觀照明分布式控制系統設計與實現

    基于虛擬儀器的城市景觀照明分布式控制系統設計與實現針對城市級景觀照明系統分布廣,數量多的特點,設計一種基于虛擬儀器的可組分布式城市景觀照明控制系統
    發表于 12-01 10:19

    分布式控制系統

    和集中控制的自動控制系統。分布式控制系統采用微處理機分別控制各個回路,而用中小型工業控制計算機或
    發表于 03-01 22:19

    利用NI VeriStand 2010特性創建分布式系統

    VeriStand 2010創建分布式處理和I/O系統,其中包含將開發分布式系統變得更為有效和有力的許多特性。例如飛機、汽車或其他工業項目中的控制
    發表于 04-08 09:42

    如何基于分布式總線進行“三步走”極簡開發

    ),以及開發者如何基于分布式總線進行“三步走”極簡開發(見下方視頻解說)分布式總線為設備之間的互聯互通提供了統一的
    發表于 12-24 10:43

    分布式總線系統

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

    一文帶你看懂分布式總線在家庭場景的應用

    終端融為一體,形成超級終端,為消費者帶來全場景智慧生活新體驗。如何讓各種不同的設備融合為一體,形成超級終端呢?這就需要分布式總線實現分布式
    發表于 01-06 11:32

    分布式總線實現近場設備間統一的分布式通信管理能力如何?

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

    基于CAN 總線分布式潛水電機監控系統

    介紹了基于CAN 總線分布式潛水電機監控系統,分析了系統的構成及實現方法,簡述了控制節點、CA
    發表于 05-25 11:39 ?19次下載

    CAN總線實現工業網絡分布式測控系統

    本文選用can總線設計了分布式熱電阻智能節點,利用can總線連接各個網絡節點,可以直接與主控卡或上位機通信,組建成工業網絡分布式測控
    發表于 09-08 15:19 ?2019次閱讀

    基于總線分布式水下航行器控制器設計

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

    基于CAN/LIN 實現車門分布式控制系統的設計與研究

    結合 CAN 總線和 LIN 總線各自的優缺點,設計實現了基于 CAN/LIN 總線的分層車門控制系統
    發表于 09-08 10:58 ?7次下載
    基于CAN/LIN <b class='flag-5'>實現</b>車門<b class='flag-5'>分布式控制系統</b>的設計與研究

    基于CAN總線分布單元控制實現高壓變頻分布式控制系統的設計

    針對傳統控制系統過于復雜的缺點,本文提出一種高壓變頻的分布式控制策略,系統采用“中央控制單元-總線
    的頭像 發表于 11-27 08:00 ?3014次閱讀
    基于CAN<b class='flag-5'>總線</b>和<b class='flag-5'>分布</b>單元<b class='flag-5'>控制</b>器<b class='flag-5'>實現</b>高壓變頻<b class='flag-5'>分布式控制系統</b>的設計

    如何設計和實現基于UART的機器人分布式控制通信協議概述

    為了實現機器人應用系統的協調問題,實現多個控制模塊之間通信,現設計并
    發表于 12-19 16:46 ?7次下載
    如何設計和<b class='flag-5'>實現</b>基于UART的機器人<b class='flag-5'>分布式控制</b><b class='flag-5'>通信</b>協議概述

    分布式總線實現設備無感發現和高效傳輸

    分布式總線是OpenHarmony社區開源的分布式設備通信基座,為設備之間的互通互聯提供統一的分布式
    發表于 07-23 16:04 ?4145次閱讀
    主站蜘蛛池模板: 牲高潮99爽久久久久777 | 欧美极限扩肛 | 蜜芽资源高清在线观看 | 黄 色 网 站 免 费 涩涩屋 | 5580免费午夜福利院 | 99久久亚洲综合精品 | 99久久精品免费看国产一区二区 | 久久精品嫩草影院免费看 | 国产99视频在线观看 | 一区二区三区四区国产 | 亚洲色欲色欲综合网站 | 色久久一个亚洲综合网 | 中文字幕欧美日韩VA免费视频 | 3D内射动漫同人资源在线观看 | 精品国产乱码久久久久久人妻 | 欧美最猛性XXX孕妇 欧美最猛性xxxxx亚洲精品 | 伊人久久影院大香线蕉 | 做暖免费观看日本 | 真实国产精品视频国产网 | 久久精品国产男包 | 夜夜女人国产香蕉久久精品 | 长泽梓黑人初解禁bdd07 | 精品无码久久久久久久动漫 | 性色欲情网站IWWW九文堂 | 最新无码国产在线视频9299 | 美女大本营 | 在线观看精品视频看看播放 | 一二三四高清中文版视频 | 人与禽交3d动漫羞羞动漫 | 日本红怡院亚洲红怡院最新 | 热久久视久久精品18 | 亚洲精品无码一区二区三区四虎 | 樱桃视频影院在线播放 | a圾片目录大全 | 国产福利视频一区二区 | jizzjizz中国大学生 | 99精品中文字幕在线观看 | 欧美高清一区二区三 | 恋夜秀场支持安卓版全部视频国产 | 免费特黄一区二区三区视频一 | 亚洲蜜桃AV色情精品成人 |