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