基于STM32的MIT-BIH心電數(shù)據(jù)的D/A回放
1.3 USB全速設(shè)備接口
USB外設(shè)接口實現(xiàn)了USB 2.0全速總線和APB1總線間的接口,為PC主機和微控制器所實現(xiàn)的功能之間提供了符合USB規(guī)范的通信連接。PC主機和微控制器之間通過共享USB端點緩沖區(qū)來實現(xiàn)數(shù)據(jù)的傳輸。
STM32芯片內(nèi)部集成了USB外設(shè),大大減輕了USB電路的設(shè)計負擔,只需設(shè)計USB接口電路,就可以實現(xiàn)STM32芯片的電路板的USB通信設(shè)計。D/A回放系統(tǒng)選用的USB硬件接口電路如圖3所示:USB上拉電壓接在D+線上,所以本設(shè)計USB實現(xiàn)全速通信,PC機為USB接口供電。USB+連接在GPIO管腳PA11,USB-連接在GPIO管腳PA12,如圖2所示:
2 固件程序設(shè)計
固件程序是運行于USB設(shè)備中的程序代碼,用于輔助硬件完成USB的功能。該系統(tǒng)固件程序選用的是STM提供的The USB-FS-Device Libra ry固件程序庫。主要完成如下功能:一是處理USB標準請求和用戶自定義請求;二是根據(jù)USB規(guī)范設(shè)置設(shè)備的各種描述符;三是初始化系統(tǒng)得各級中斷和內(nèi)部端點的配置。在Keil編譯環(huán)境下,利用現(xiàn)成固件程序框架函數(shù),根據(jù)設(shè)備需求在STM提供的固件程序的框架中添加相應(yīng)的程序代碼,完成本回放系統(tǒng)的功能目的。
2.1 STM32F103xxUSB固件程序庫簡介
STM32F103xxUSB固件程序庫是意法半導體公司專為STM32F103XX系列ARM微處理器提供的固件程序庫,主要分為內(nèi)核層和應(yīng)用接口層,結(jié)構(gòu)框圖如圖4所示。本文引用地址:http://www.ex-cimer.com/article/161152.htm
內(nèi)核層:該層管理使用USB IP硬件與USB標準協(xié)議兩者間的直接通信。USB庫內(nèi)核遵從USB 2.0標準并和標準的STM32F103XX固件庫分離。
應(yīng)用程序接口層:該層為用戶提供了內(nèi)核和最終應(yīng)用程序之間的完整接口。應(yīng)用接口層和最終應(yīng)用與固件庫通信來管理應(yīng)用的硬件需求。
2.2 固件程序的設(shè)計
在本系統(tǒng)的開發(fā)中,沒有對內(nèi)核層進行深入研究和修改,僅對應(yīng)用接口層進行完成設(shè)備功能需要的設(shè)計。應(yīng)用層的開發(fā)主要包括:系統(tǒng)初始化,主要開啟系統(tǒng)和所用外設(shè)的時鐘;USB時鐘配置,設(shè)置并使能USB時鐘,為48 MHz;USB初始化主要是完成USB設(shè)備的枚舉;定時器模塊配置、DAC和DMA模塊配置主要是完成所用外設(shè)的初始化;最后配置好標志位后等待上位機發(fā)送數(shù)據(jù)。所有代碼都是用庫函數(shù)來完成的,主程序流程圖如圖5所示。
插入USB設(shè)備時,主機輪回查詢各個USB端口,檢測到D+和D-之間有電壓差,會識別出有USB設(shè)備的插入,然后對設(shè)備進行枚舉。在設(shè)計的D/A回放系統(tǒng)中,枚舉過程的實現(xiàn)主要是對USB設(shè)備的設(shè)備描述符、配置描述符、端口描述符和端點描述符的配置來實現(xiàn)的。USB設(shè)備枚舉的過程就是通過讀取各個描述符來獲取USB設(shè)備的信息,然后將它配置為其中的一種功能。
評論