999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STM32CubeMX的全速USB通信及測(cè)速模塊設(shè)計(jì)*

2018-09-07 02:31:50,,,
關(guān)鍵詞:程序設(shè)備設(shè)計(jì)

,,,

(西安工程大學(xué) 電子信息學(xué)院,西安 710048)

引 言

USB設(shè)備因具備傳輸速率快,且通信較為穩(wěn)定、抗擾能力強(qiáng)以及便于插拔等特性,成為電子通信設(shè)計(jì)、有線數(shù)據(jù)傳輸中首選的通信接口[1]。其中USB1.0協(xié)議的全速USB設(shè)備理論速率可達(dá)12 Mbps,USB2.0協(xié)議的高速USB設(shè)備理論速率可達(dá)480 Mbps。

目前市場(chǎng)上大多數(shù)微處理器都具備USB功能但不同芯片的集成度不同,主要分為USB芯片集成于處理器內(nèi)部和需要外擴(kuò)USB芯片兩種模式[2]。當(dāng)芯片內(nèi)部集成時(shí),可以有效降低外部電路設(shè)計(jì)的復(fù)雜性[3]。故在數(shù)據(jù)傳輸速率要求不是很高的情況下,選用適當(dāng)?shù)脑O(shè)計(jì)方式可以有效提高設(shè)計(jì)效率[4]。但與此同時(shí)USB設(shè)備通信協(xié)議以及底層驅(qū)動(dòng)設(shè)計(jì)的復(fù)雜性仍然是制約USB應(yīng)用的主要原因[5],在傳統(tǒng)USB開發(fā)中不僅要針對(duì)USB從機(jī)進(jìn)行相應(yīng)的定義,還要在主機(jī)設(shè)備上編寫運(yùn)行相應(yīng)驅(qū)動(dòng)才能最終實(shí)現(xiàn)通信[6-7]。

本設(shè)計(jì)方案以USB數(shù)據(jù)采集[8]為設(shè)計(jì)背景,采用ST(意法半導(dǎo)體)開發(fā)的基于HAL庫的STM32CubeMX快速完成USB從機(jī)端的通信協(xié)議配置[9-10],USB主機(jī)端使用LabVIEW編寫,并借助NI-VISA軟件生成USB驅(qū)動(dòng)[11-13],完成USB鏈接,實(shí)現(xiàn)主機(jī)、從機(jī)之間的全速USB設(shè)計(jì),從而極大節(jié)省開發(fā)中底層驅(qū)動(dòng)及通信協(xié)議開發(fā)的時(shí)間,降低了USB通信開發(fā)的難度[14]。

1 全速USB通信模塊方案設(shè)計(jì)

本設(shè)計(jì)由作為數(shù)據(jù)采集核心的STM32F4x部分,以及在PC上由LabVIEW編寫的包括采集數(shù)據(jù)展示以及速率測(cè)試等功能的數(shù)據(jù)處理部分構(gòu)成[15]。其中數(shù)據(jù)采集入口為STM32F4x本身所帶有的片上A/D轉(zhuǎn)換器來實(shí)現(xiàn),通信部分由片上全速USB實(shí)現(xiàn),無需進(jìn)行外擴(kuò)USB高速芯片電路設(shè)計(jì)[16],因而采集端主要由STM32F4x芯片以及相應(yīng)的外圍電路和STM32CubeMX生成再由MDK keil5進(jìn)行編譯的主程序構(gòu)成[17]。PC端主要由LabVIEW編寫的可供鍵入采集指令以及進(jìn)行后期數(shù)據(jù)展示的上位機(jī)程序和利用NI-VISA生成的用于識(shí)別接口的驅(qū)動(dòng)構(gòu)成[18-20]。其程序流程為通過PC端LabVIEW程序發(fā)送數(shù)據(jù)采集持續(xù)時(shí)間等指令,啟動(dòng)采集端開始采集數(shù)據(jù),經(jīng)過A/D轉(zhuǎn)換后由DMA傳輸至待發(fā)送緩存區(qū),通過全速USB反饋至PC端予以展示,同時(shí)對(duì)其傳輸速率等進(jìn)行實(shí)時(shí)測(cè)定。其總體框圖如圖1所示。

圖1 基于STM32的全速USB通信模塊設(shè)計(jì)方案

2 全速USB通信硬件設(shè)計(jì)

本文提出的全速USB通信模塊的設(shè)計(jì)方案以基于STM32的USB數(shù)據(jù)采集器為設(shè)計(jì)背景,主要構(gòu)成為STM32F4x的最小系統(tǒng),因USB1.0傳輸協(xié)議傳輸帶寬為12 Mbps,即理想環(huán)境下傳輸速率最大可達(dá)1.5 MB/s,可滿足設(shè)計(jì)需求,故設(shè)計(jì)中無需外擴(kuò)高速USB芯片,只需將全速USB引腳引出至USB接口即可,但實(shí)際電路設(shè)計(jì)中需注意USB中的D+、D-與STM32F4x的連接走線需遵循平行等長(zhǎng)的原則,否則可能出現(xiàn)USB無法識(shí)別或識(shí)別為未知設(shè)備而無法通信等問題。實(shí)際電路原理如圖2所示。

圖2 USB通信模塊從機(jī)原理圖

3 USB數(shù)據(jù)采集器軟件設(shè)計(jì)

本設(shè)計(jì)中軟件部分包括以LabVIEW編寫的PC端程序,以及基于STM32CubeMX生成初始代碼再經(jīng)過MDK編譯的采集端程序。最后通過二者之間的通信來共同完成USB數(shù)據(jù)采集器的設(shè)計(jì)。

3.1 STM32F4x全速USB通信模塊從機(jī)程序設(shè)計(jì)

本部分程序主要包括作為STM32F4x的數(shù)據(jù)處理程序以及USB通信程序。首先利用STM32CubeMX進(jìn)行硬件初始化程序配置,從而完成原始代碼生成。其配置過程為:首先在STM32CubeMX中新建STM32F4x的工程,本設(shè)計(jì)選用的芯片型號(hào)為STM32F4IGT6,在新建工程時(shí)根據(jù)微處理器的型號(hào)進(jìn)行選擇,系列 Series 中選擇STM32F4,引腳Lines中STM32F407/417,封裝中Package選擇STM32F407IGTx,由此完成硬件的選擇;之后使能相關(guān)引腳并完成引腳定義,如使能全速USB功能引腳PA11、PA12,以及其它功能引腳。

根據(jù)設(shè)計(jì)需求在時(shí)鐘樹中通過分頻以及倍乘等工具完成時(shí)鐘的配置,之后對(duì)所用到的引腳進(jìn)行初始狀態(tài)的定義,例如對(duì)GPIO口的輸入/輸出設(shè)計(jì),以及ADC入口的狀態(tài)等進(jìn)行定義,隨后利用報(bào)告生成模塊生成整體配置的報(bào)告文件,進(jìn)行核對(duì)確認(rèn)無誤后即可生成基于HAL庫的初始代碼。

STM32CubeMX可生成支持EWARM、MDK等多個(gè)編譯器,此處選擇MDK編譯器生成工程。系統(tǒng)開始運(yùn)行后首先進(jìn)行初始化操作,硬件中間層代碼在STM32CubeMX配置中已經(jīng)生成,在MDK中主要完成主程序的編寫。主程序主要包含STM32F4x的硬件初始化、采集數(shù)據(jù)緩存處理、USB通信程序三個(gè)部分。

STM32F4x初始化主要包括:重置所有外設(shè),初始化Flash的HAL_Init()函數(shù),系統(tǒng)時(shí)鐘配置SystemClock_Config()函數(shù),以及初始化I/O的MX_GPIO_Init()函數(shù)等。同時(shí)需要進(jìn)行USB協(xié)議棧初始化,包括初始化設(shè)備庫、添加支持類和啟動(dòng)設(shè)備庫。完成初始化設(shè)置之后即可進(jìn)行USB發(fā)送程序編寫,首先設(shè)置1024字節(jié)的緩存區(qū)UserTxBuffer[1024],對(duì)緩存區(qū)進(jìn)行按位清零,判定USB接收標(biāo)志位(USB_FS_Receive_Flag)是否為0,若不為0,則進(jìn)行清零操作,當(dāng)標(biāo)志位清零后,開始通過庫函數(shù)CDC_Transmit_FS進(jìn)行數(shù)據(jù)的發(fā)送,傳輸過程借鑒乒乓傳輸模式,將傳輸緩存區(qū)按順序分為前后兩段,每段設(shè)置為512,發(fā)送過程中每存滿512長(zhǎng)度即進(jìn)行一次傳輸,同時(shí)另半?yún)^(qū)繼續(xù)進(jìn)行緩存操作以提高程序運(yùn)行效率。最后進(jìn)行發(fā)送數(shù)據(jù)量的判斷,若發(fā)送數(shù)據(jù)幀數(shù)滿足預(yù)設(shè)值,則發(fā)送幀計(jì)數(shù)清零,程序跳回,判斷USB標(biāo)志位操作重新開始下一循環(huán),若規(guī)定時(shí)間內(nèi)未發(fā)滿設(shè)定幀數(shù),則回到USB標(biāo)志清零處進(jìn)行單次發(fā)送以滿足條件。其程序流程如圖3所示。

圖3 采集端USB通信主程序流程圖

3.2 基于LabVIEW的USB主機(jī)端程序設(shè)計(jì)

主機(jī)端程序由LabVIEW編寫,由前面板和后面板兩部分構(gòu)成,其中前面板主要用于用戶操作。具體包含數(shù)據(jù)幀計(jì)數(shù)模塊、數(shù)據(jù)計(jì)數(shù)模塊、采集器選擇模塊、各通道采集持續(xù)時(shí)間定義模塊以及波形顯示模塊。本設(shè)計(jì)PC端系統(tǒng)選用的是Windows10操作系統(tǒng),數(shù)據(jù)采集端所選用的通信方式為USB虛擬串口,故連接時(shí)需借助NI-VISA工具生成對(duì)應(yīng)驅(qū)動(dòng)以供PC端程序識(shí)別[16],此外后面板設(shè)計(jì)中需要用到的VISA函數(shù)如表1所列。

為了滿足數(shù)據(jù)通信的要求,首先應(yīng)保證LabVIEW程序能夠成功鏈接到USB設(shè)備中,這部分通過表1中的VISA打開函數(shù)實(shí)現(xiàn),在選定USB設(shè)備后通過創(chuàng)建數(shù)組函數(shù)以及VISA函數(shù)寫入采集持續(xù)時(shí)間等常量,隨后通過VISA讀取函數(shù)讀取數(shù)據(jù)采集器返回?cái)?shù)據(jù),并按照對(duì)應(yīng)幀格式進(jìn)行幀計(jì)數(shù)和數(shù)據(jù)計(jì)數(shù)。在讀取數(shù)據(jù)完成后,通過對(duì)數(shù)據(jù)進(jìn)行隊(duì)列操作和數(shù)據(jù)類型轉(zhuǎn)換,最后通過數(shù)組創(chuàng)建函數(shù)生成波形數(shù)據(jù),并通過波形顯示模塊予以展示。最后設(shè)置VISA關(guān)閉函數(shù),當(dāng)持續(xù)時(shí)間滿足鍵入值或通信出現(xiàn)錯(cuò)誤時(shí),關(guān)閉VISA函數(shù)停止數(shù)據(jù)采集。

表1 VISA函數(shù)

4 STM32全速USB通信模塊測(cè)試

本設(shè)計(jì)中的USB通信測(cè)試是基于STM32CubeMX設(shè)計(jì)的數(shù)據(jù)采集下位機(jī)程序發(fā)送數(shù)據(jù)到基于LabVIEW編寫的PC端程序的傳輸速率測(cè)試。方案設(shè)計(jì)速率要求為400 kbps。首先連接USB數(shù)據(jù)采集器至PC機(jī),在設(shè)備管理器中可見NI-VISA設(shè)備,若所選設(shè)備的識(shí)別碼與采集端程序預(yù)設(shè)相同,鏈接成功;接下來發(fā)送采集命令給采集端。

測(cè)試通過在順序結(jié)構(gòu)中設(shè)置兩個(gè)時(shí)間獲取控件來獲得傳輸開始到結(jié)束所用的時(shí)間,通過數(shù)據(jù)讀取計(jì)數(shù)模塊來統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù),最后通過除法運(yùn)算計(jì)算傳輸速率。因硬件干擾等產(chǎn)生的傳輸誤差導(dǎo)致速率波動(dòng)過大,測(cè)速過程中為避免這種情況導(dǎo)致偶然性,故在LabVIEW上位機(jī)設(shè)計(jì)中采用了雙循環(huán)結(jié)構(gòu)進(jìn)行設(shè)計(jì),其中內(nèi)循環(huán)次數(shù)默認(rèn)設(shè)計(jì)為100,即每傳輸100幀數(shù)據(jù)利用除法運(yùn)算求出傳輸速率,并利用波形圖表予以顯示;最后利用LabVIEW中統(tǒng)計(jì)樣板中的Mean函數(shù)計(jì)算整體傳輸過程中的速率均值并通過顯示模塊展示,其中運(yùn)行150 000 ms的測(cè)試結(jié)果如圖4所示,經(jīng)過10次不同時(shí)長(zhǎng)測(cè)試得出的傳輸速率如表2所列,從而使得使用者能夠清晰直觀地觀測(cè)傳輸過程中的速率情況。此外,實(shí)時(shí)速率的圖表顯示也方便了使用者對(duì)干擾原因的定位以及修改驗(yàn)證。

圖4 速率測(cè)試結(jié)果

由于該方案是基于STM32的官方庫函數(shù)實(shí)現(xiàn)的,相比于直接針對(duì)寄存器的開發(fā)來說,庫函數(shù)版本具有開發(fā)便捷、操作難度小等特點(diǎn),同時(shí)也有代碼量較大、程序運(yùn)冗余較大而導(dǎo)致的程序運(yùn)行時(shí)間較長(zhǎng)等缺點(diǎn),因而本方案實(shí)驗(yàn)結(jié)果還存在優(yōu)化可能,使用寄存器直接開發(fā)既可提升代碼效率也可獲取更高的效率。

表2 運(yùn)行時(shí)間及平均速率

結(jié) 語

本文給出的設(shè)計(jì)方案以STM32F4IGT6為例,以8位數(shù)據(jù)采集器位應(yīng)用背景,提出了一種基于STM32CubeMX的USB通信模塊設(shè)計(jì)方法,能夠高效、便捷地完成STM32微處理器與PC端 LabVIEW程序之間USB通信。

鄧鑫(研究生在讀),主要研究方向?yàn)樾盘?hào)與信息處理、嵌入式硬件設(shè)計(jì)。

猜你喜歡
程序設(shè)備設(shè)計(jì)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
試論我國未決羈押程序的立法完善
瞞天過?!律O(shè)計(jì)萌到家
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
“程序猿”的生活什么樣
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動(dòng)“離婚”程序程序
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: 国产成人综合亚洲欧洲色就色| 亚洲中文无码h在线观看 | 欧美激情首页| 欧美劲爆第一页| 国产无人区一区二区三区| 女高中生自慰污污网站| 视频国产精品丝袜第一页| 97人人做人人爽香蕉精品| 中国国语毛片免费观看视频| 日韩视频精品在线| 国产综合在线观看视频| 亚洲视频四区| 亚洲人成网站18禁动漫无码| 日韩欧美国产成人| 一级全免费视频播放| 色屁屁一区二区三区视频国产| 粉嫩国产白浆在线观看| 色婷婷成人| 日韩精品一区二区三区大桥未久| 久久精品只有这里有| 国产97公开成人免费视频| 亚洲成a人片77777在线播放| 亚洲区视频在线观看| 91精品免费久久久| 国产产在线精品亚洲aavv| 97视频在线精品国自产拍| 久草国产在线观看| 久久中文无码精品| 广东一级毛片| 日本精品一在线观看视频| 国产丝袜无码一区二区视频| 好久久免费视频高清| 波多野结衣二区| 国产精品不卡永久免费| 在线观看亚洲人成网站| 亚洲精品午夜无码电影网| 亚洲三级a| 狂欢视频在线观看不卡| 亚洲天堂网视频| 精品久久国产综合精麻豆| 亚洲天堂视频网站| 色偷偷一区| 国内精品视频| 亚洲精品久综合蜜| 免费一级毛片不卡在线播放| 亚洲第一视频网| 亚洲精品在线观看91| 手机在线免费不卡一区二| 一级黄色网站在线免费看| 88av在线播放| 国产人成乱码视频免费观看| 久久亚洲日本不卡一区二区| 黄片一区二区三区| 中文字幕日韩视频欧美一区| 国产在线视频福利资源站| 精品无码一区二区三区电影| 精品少妇人妻无码久久| 国产欧美网站| 欧美成人一区午夜福利在线| 一级黄色片网| 欧美人在线一区二区三区| 国产偷倩视频| 亚洲精品在线影院| 亚洲天堂日韩av电影| 毛片免费观看视频| 一边摸一边做爽的视频17国产 | 91啦中文字幕| 九九九久久国产精品| 久久美女精品| 国产亚洲美日韩AV中文字幕无码成人| 欧美色图第一页| 久久国产精品国产自线拍| 成年看免费观看视频拍拍| 国产欧美日韩另类精彩视频| 国产另类乱子伦精品免费女| 免费中文字幕在在线不卡| 试看120秒男女啪啪免费| 色婷婷国产精品视频| 亚洲人成网站色7799在线播放| 国内精品久久久久久久久久影视| 日韩在线中文| 综合五月天网|