• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種基于STM32的USB接口數(shù)據(jù)通信方法研究

    2021-04-28 08:05:34趙曉娜
    山西電子技術(shù) 2021年2期
    關(guān)鍵詞:發(fā)送數(shù)據(jù)機軟件描述符

    趙曉娜

    (山西大眾電子信息產(chǎn)業(yè)集團有限公司,山西 太原 030024)

    0 引言

    隨著嵌入式系統(tǒng)的不斷發(fā)展,通過單片機采集并發(fā)送數(shù)據(jù)到PC端供人們研究,已經(jīng)成為目前熱門的研究領(lǐng)域。單片機到PC之間數(shù)據(jù)的傳輸方式主要有并口傳輸、串口傳輸、I2C傳輸和USB傳輸?shù)?。大多?shù)的數(shù)據(jù)傳輸方式具有連接復雜,速度慢等缺點,而USB傳輸有速度快,連接簡單、擴展性相對強、支持熱插拔等優(yōu)勢,也是目前使用最廣泛且最方便的傳輸方式[1]。

    本文主要是通過USB接口將上位機軟件的數(shù)據(jù)指令發(fā)送給STM32,對其指示燈進行點亮。通過上位機軟件發(fā)送數(shù)據(jù)到單片機,也是新的研究課題之一,具有很好的研究價值。

    1 總體設(shè)計

    USB一般有主設(shè)備和從設(shè)備之分,并且當主設(shè)備發(fā)起數(shù)據(jù)傳輸時,作為從設(shè)備只能被動地接收數(shù)據(jù)。本系統(tǒng)設(shè)計主要包含兩部分,下位機STM32端USB數(shù)據(jù)接收和上位機端USB數(shù)據(jù)發(fā)送。上位機通過自定義協(xié)議發(fā)送兩位字節(jié)數(shù)據(jù)給下位機,下位機對數(shù)據(jù)進行解析后將其指示燈進行點亮控制,兩者相互配合實現(xiàn)了可靠、高速的數(shù)據(jù)傳輸。

    2 上位機軟件設(shè)計

    2.1 設(shè)計流程

    該系統(tǒng)上位機軟件開發(fā)是在Windows操作系統(tǒng)下,通過VC6.0開發(fā)工具,采用MFC框架進行界面設(shè)計的。該設(shè)計中USB驅(qū)動程序的開發(fā)使用了LibUSB-Win32庫函數(shù)。主要的USB驅(qū)動庫函數(shù)如圖1所示。

    圖1 USB驅(qū)動庫函數(shù)

    上位機軟件的實質(zhì)就是Windows應用程序,即通過界面的形式把與用戶的交互式命令形象地展示出來。它是通過消息對話框窗口實現(xiàn)命令交互,該窗口可以接收和反饋用戶的輸入數(shù)據(jù)、進行多方位窗口拖動和窗口關(guān)閉操作,具體設(shè)計流程如圖2所示[2]。

    圖2 流程圖

    2.2 模塊實例

    界面的設(shè)計采用了模塊化的設(shè)計理念,主要分為HID設(shè)備模塊、報告模塊、發(fā)送模塊、狀態(tài)顯示模塊、發(fā)送數(shù)據(jù)輸入模塊(見圖3)。

    圖3 界面圖

    HID模塊的功能主要是通過查找輸入USB設(shè)備的VID和PID,點擊連接設(shè)備程序?qū)⑼ㄟ^不斷的掃描查找到與之匹配的設(shè)備,找到設(shè)備后就可以對設(shè)備進行正常的輸入輸出操作。 當輸入HID設(shè)備信息時,其廠商ID(VID)和產(chǎn)品ID(PID)在電腦端設(shè)備管理器中可找到(見圖4)。

    圖4 HID設(shè)備信息

    在發(fā)送數(shù)據(jù)輸入模塊輸入ab或AB字符,點擊發(fā)送模塊的發(fā)送數(shù)據(jù),即可將數(shù)據(jù)發(fā)送出去,指示燈點亮,輸入其他的任意兩個字符數(shù)據(jù)都將熄滅指示燈。在發(fā)送模塊中對數(shù)據(jù)發(fā)送的端點進行了默認設(shè)置為端點2,同時對單片機的USB接收端也選擇了端點2接收。

    狀態(tài)顯示模塊主要是提示設(shè)備有沒有連接成功,數(shù)據(jù)有沒有發(fā)送成功。報告模塊對報告描述符的ID設(shè)置為0,報告描述符大小設(shè)為32字節(jié)。點擊“退出”就關(guān)閉整個窗口。

    該系統(tǒng)中上位機的界面設(shè)置實現(xiàn)了基本的USB設(shè)備的管理和數(shù)據(jù)傳輸功能,做到了簡潔,直觀。

    3 下位機軟件設(shè)計

    3.1 文件導入

    下位機軟件設(shè)計核心是對STM32芯片進行USB固件庫的設(shè)計和使用。單片機中USB協(xié)議本身就很復雜,對于USB接口的程序設(shè)計相對難度也很大。ST公司專門提供了關(guān)于STM32系列芯片的USB固件庫驅(qū)動程序,這樣就簡化了USB接口的程序設(shè)計,大大地縮短了軟件的開發(fā)周期。本系統(tǒng)也使用了STM32標準的固件庫程序,相關(guān)的程序文件如圖5所示[3]。

    圖5 程序文件包

    USB固件庫主要由內(nèi)核層(STM32_USB-FS-LIB)和應用接口層(USB_OEM)組成,內(nèi)核層主要功能是對USB底層的控制傳輸處理、設(shè)備信息的注冊、協(xié)議的解析和硬件模塊的配置與實現(xiàn),所以內(nèi)核層在程序開發(fā)時一般不需要做大的改動;應用接口層的函數(shù)是與上位機進行通信的直接接口函數(shù),在實際的固件庫開發(fā)過程中,一般只需要對應用接口層的函數(shù)進行相應的修改即可。

    3.2 USB描述符設(shè)置

    1) 配置描述符(Configuration Descriptor)用于定義設(shè)備的配置信息,一個設(shè)備同時可以有多個配置描述符。配置描述符中包含了描述符大小(0x09)、類型(USB_CONFIGURATION_DESCRIPTOR_TYPE)、數(shù)據(jù)長度(KVMCLIENT_SIZE_CONFIG_DESC)、配置支持的接口數(shù)量(0x01)、配置參數(shù)選擇(0x01)、字符串索引(0x04)、供電模式選擇(0xa0)和最大電流消耗值(0x32)。

    2) 接口描述符(InterfaceDescriptor)說明了接口的配置。接口描述符中包含了描述符大小(0x09)、類型( USB_INTERFACE_DESCRIPTOR_TYPE)、接口編號(0x00)、備用接口標號(0x00)、端點使用數(shù)目(0x02)、類型代碼(0x03)、子類型代碼(0x01)、協(xié)議代碼(0x01)、字符串索引(05)。

    3) 端點描述符(Endpoint Descriptor)描述了接口使用的端點屬性(端點0除外)。端點描述符中設(shè)置了描述符大小(0x07)、類型(USB_ENDPOINT_DESCRIPTOR_TYPE)、端點地址(0x81)、端點屬性(0x03)、信息包大小(0x40)、數(shù)據(jù)傳輸時間間隔(0x0A)。本文將設(shè)置端點2 為輸入端。

    4 實驗結(jié)果

    使用USB數(shù)據(jù)線連接PC端的上位機與STM32單片機,通過上位機發(fā)送數(shù)據(jù)指令ab(AB),點亮STM32端的指示燈;發(fā)送其他任意兩位字符指示燈熄滅,效果圖如圖6所示。

    圖6 實驗結(jié)果

    5 結(jié)論

    本系統(tǒng)提出了一種PC機作為發(fā)送端,STM32單片機作為接收端,基于USB接口進行數(shù)據(jù)傳輸?shù)姆椒?,兩者連接之后發(fā)送端首先進行USB設(shè)備的識別,識別之后開始連接通信。發(fā)送端發(fā)送十六進制形式的兩位數(shù)據(jù)字符給STM32單片機,單片機端進行數(shù)據(jù)的解析,最終實現(xiàn)了對其指示燈進行開關(guān)控制,傳輸穩(wěn)定,速度快,具有很好的應用價值。

    猜你喜歡
    發(fā)送數(shù)據(jù)機軟件描述符
    移動自組網(wǎng)中MAC層協(xié)議研究
    基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
    測繪學報(2022年12期)2022-02-13 09:13:01
    基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點性能分析
    帶標記方式的CRDSA++協(xié)議性能分析*
    Linux單線程并發(fā)服務器探索
    利用CNN的無人機遙感影像特征描述符學習
    使用IPSec安全傳輸數(shù)據(jù)
    道岔監(jiān)測系統(tǒng)上位機軟件設(shè)計
    基于正交試驗法的北斗用戶機軟件測試用例設(shè)計
    PCI-e高速數(shù)據(jù)采集卡的驅(qū)動與上位機軟件設(shè)計
    電子器件(2015年5期)2015-12-29 08:43:12
    彭州市| 任丘市| 永丰县| 美姑县| 临西县| 潜山县| 五家渠市| 奉节县| 精河县| 芮城县| 章丘市| 高密市| 莒南县| 卢氏县| 留坝县| 屯门区| 黔西| 墨竹工卡县| 沁水县| 故城县| 伊宁市| 广昌县| 枞阳县| 和田市| 泾阳县| 北流市| 濮阳县| 临澧县| 紫金县| 柳州市| 陇南市| 武冈市| 合川市| 胶州市| 垣曲县| 舞阳县| 五华县| 沾化县| 兰西县| 郁南县| 阜宁县|