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

基于MC9S12UF32的USB接口設(shè)計

2021-06-30 11:44:25徐建林聶章龍
科技風(fēng) 2021年1期
關(guān)鍵詞:單片機(jī)設(shè)備

徐建林 聶章龍

摘要:為了實(shí)現(xiàn)對Freescale MC9S12UF32芯片的USB2.0模塊的開發(fā),首先,闡述了MC9S12UF32單片機(jī)專門作為高速USB存儲設(shè)備接口設(shè)計芯片的優(yōu)勢和特點(diǎn);然后提出了海量存儲設(shè)備的USB2.0接口設(shè)計方案,在軟、硬件架構(gòu)上實(shí)現(xiàn)訪問MC9S12UF32芯片USB2.0接口,設(shè)計方案加速了USB2.0設(shè)備開發(fā),促進(jìn)了USB2.0設(shè)備接口的應(yīng)用,具有較好的理論和應(yīng)用價值。

關(guān)鍵詞:MC9S12UF32;USB2.0;設(shè)備枚舉;Bulk-Only傳輸協(xié)議;SCSI命令集

Design of USB interface Based on MC9S12UF32 Chip

Xu Jianlin1 Nie Zhanglong2

1.Bergstrom Company JiangsuChangzhou 213135;

2.Changzhou College of Information Technology JiangsuChangzhou 213164

Abstract:In order to implement development of USB2.0 module of MC9S12UF32 chip,firstly,describing the advantages and characteristics of MC9S12UF32 which is integrated high-speed USB storage device interface.Then,proposing the design scheme of USB2.0 mass storage device interface,the scheme realizes the access to USB2.0 interface of MC9S12UF32 in software and hardware architecture.This scheme not only effectively improves development of USB devices,It can also be widely used in the practical application design of USB2.0 equipment interface,and has good theoretical and application value

Key words:MC9S12UF32;USB2.0;device enumeration;bulk only transport protocol;SCSI command set

1 緒論

USB已成為微機(jī)和眾多電子設(shè)備的重要標(biāo)準(zhǔn)接口,USB1.1規(guī)范的推出已得到了廣泛應(yīng)用,但隨著電子技術(shù)的飛速發(fā)展,USB1.1規(guī)范已不能滿足電子消費(fèi)產(chǎn)品的性能要求,特別在傳輸速度和存儲容量方面。因而,很快推出USB2.0規(guī)范,快速催生了USB2.0接口的消費(fèi)電子產(chǎn)品。國外推出了大量集成USB2.0接口的芯片,國內(nèi)公司對擁有USB2.0接口芯片還在初步研發(fā)階段。本文基于16位單片機(jī)MC9S12UF32,提出了一種USB2.0設(shè)備接口的設(shè)計與實(shí)現(xiàn)。

2 USB接口類MC9S12UF32芯片特性

MC9S12UF32是恩智浦(源飛思卡爾)公司的HC/S12系列中的16位單片機(jī),它是一款低價位、高性能的單片機(jī),片內(nèi)資源豐富,F(xiàn)LASH EEPROM空間32K Bytes,RAM空間3.5K Bytes,QRAM隊列1.5K Bytes,集成高速USB2.0接口、集成隊列控制器(IQUE)、SCI接口,通過一條專用內(nèi)部總線,IQUE模塊可以實(shí)現(xiàn)從存儲接口到USB模塊進(jìn)行高速數(shù)據(jù)傳輸,最快達(dá)到60MB/S。

MC9S12UF32單片機(jī)是高速USB存儲設(shè)備接口設(shè)計的首先,支持高速、全速USB傳輸[1]。構(gòu)成該款芯片的主要模塊為IQUE模塊、USB2.0接口和存儲控制器接口。CPU是控制與處理的核心,但真正的數(shù)據(jù)傳輸是通過中介IQUE完成,它與CPU是并行工作,互不干擾。

IQUE模塊的組成:隊列控制器(QUE)、隊列控制器集成模塊(QIM)和QRAM隊列(1.5KB)。集成隊列模塊IQUE數(shù)據(jù)傳輸是以FIFO的方式寫入或傳出QRAM。

由USB物理層接口(UPHY)和USB設(shè)備控制器(UDC20)構(gòu)成USB2.0模塊,配合IP總線及USB全速和高速協(xié)議,實(shí)現(xiàn)數(shù)據(jù)傳輸。模塊的結(jié)構(gòu)框圖如圖1所示。

USB設(shè)備控制器模塊通過IP總線與S12內(nèi)核進(jìn)行交互。交互的通道為6個獨(dú)立的端點(diǎn)。共有5個64字節(jié)的端點(diǎn)緩沖區(qū),其中兩個分配給物理端點(diǎn)1,另外三個分配給了物理端點(diǎn)2、3和6。

端點(diǎn)數(shù)據(jù)是通過IP FIFO總線保存于集成隊列控制器模塊,然后片內(nèi)模塊才能與USB2.0模塊進(jìn)行連續(xù)的數(shù)據(jù)通信。

綜上所述,USB接口與存儲器接口間的高速數(shù)據(jù)通道是由IQUE模塊、USB2.0模塊和存儲設(shè)備接口構(gòu)成的,其中IQUE模塊起到了橋梁的作用。

3 USB2.0設(shè)備接口的設(shè)計

USB2.0設(shè)備接口設(shè)計主要由硬件設(shè)計和固件設(shè)計[2],USB2.0協(xié)議中的鏈路層功能是由硬件完成;USB2.0協(xié)議及設(shè)備子類協(xié)議是由固件來完成。基于硬件架構(gòu),增強(qiáng)型MCHS12UF32核的USB2.0接口設(shè)計應(yīng)包括以下幾個模塊。

(1)USB傳輸處理模塊。底層硬件送來的各種信號需要USB傳輸處理模塊進(jìn)行分析處理,Endpoint中接收到的主機(jī)命令/數(shù)據(jù)需要由該模塊上傳到主機(jī)命令解析模塊,并返回命令處理結(jié)果。

(2)主機(jī)命令解析模塊。分析處理USB傳輸處理模塊送來的主機(jī)命令,并返回分析處理結(jié)。

(3)設(shè)備應(yīng)用處理模塊。外部應(yīng)用系統(tǒng)接收到具體的操作命令執(zhí)行,并返回外部器件相關(guān)狀態(tài)。固件的功能可分為設(shè)備枚舉、傳輸控制、命令解析、外部應(yīng)用操作等幾個過程,如圖2所示。

3.1 USB海量存儲設(shè)備固件的設(shè)計

IP核固件主要元素為Bulk-Only傳輸協(xié)議和SCSI命令集[3]。

3.1.1 固件流程

圖3是大容量USB存儲設(shè)備固件工作流程。工程流程中主要是4類中斷處理,即Bulk-In端點(diǎn)中斷、Bulk-Out端點(diǎn)中斷和Command端點(diǎn)0的In中斷及Out中斷。Command端點(diǎn)是實(shí)現(xiàn)設(shè)備枚舉過程中主機(jī)與設(shè)備間的交互,Bulk端點(diǎn)是實(shí)現(xiàn)枚舉成功后主機(jī)與設(shè)備間的交互。

3.1.2 設(shè)備枚舉

USB設(shè)備在接入USB電纜后需要一個枚舉過程,為什么要枚舉?枚舉就是從設(shè)備讀取各種描述符信息,這樣主機(jī)就可以根據(jù)這些信息來加載合適的驅(qū)動程序,從而知道設(shè)備是什么樣的設(shè)備,如何進(jìn)行通信等,用戶首先需要將枚舉過程中所需要的各種描述符表設(shè)置好后存放于指定存儲單元。枚舉過程如圖4所示。

3.1.3 Bulk-Only傳輸控制

USB設(shè)備枚舉成功后,就可以通過Bulk端點(diǎn)進(jìn)行數(shù)據(jù)傳輸了,Bulk-Only傳輸控制過程如下:

(1)主機(jī)通過Bulk-Out端點(diǎn)發(fā)送CBW命令包;

(2)設(shè)備接收拆分CBW包,解析SCSI命令;

(3)設(shè)備執(zhí)行SCSI命令;

(4)設(shè)備通過Bulk-In端點(diǎn),向主機(jī)返回命令狀態(tài)包CSW;

(5)設(shè)備等待主機(jī)的下一個CBW命令包。

3.1.4 SCSI命令解析

特定的海量存儲設(shè)備可以過濾無意義的SCSI命令,當(dāng)設(shè)備確認(rèn)接收到是有效的SCSI命令后,它將根據(jù)命令類型和要求,做好數(shù)據(jù)的發(fā)送或接收的準(zhǔn)備。

3.2 USB海量存儲設(shè)備接收和發(fā)送過程設(shè)計

傳輸由OUT、IN、SETUP等事務(wù)構(gòu)成,傳輸分為同步傳輸、控制傳輸、中斷傳輸和批量傳輸,批量轉(zhuǎn)輸和中斷傳輸結(jié)構(gòu)相同,同步傳輸結(jié)構(gòu)簡單,而控制傳輸結(jié)構(gòu)復(fù)雜。

3.2.1 USB海量存儲設(shè)備的Bulk_Only傳輸類

批量傳輸是USB海量存儲應(yīng)用的一種[4],另外有巨量中斷傳輸方式,還有其他的傳輸方式等。傳輸中存在三種類型的命令塊數(shù)據(jù)包:第一種主機(jī)發(fā)送數(shù)據(jù)到設(shè)備,第二種是不帶數(shù)據(jù)傳輸?shù)拿顗K數(shù)據(jù)包,第三種是主機(jī)要從設(shè)備接收數(shù)據(jù)的命令。

(1)端點(diǎn)0配置。USB設(shè)備接入主機(jī)時,主機(jī)通過默認(rèn)地址0與默認(rèn)端口0進(jìn)行通信。在此期間,主機(jī)發(fā)出相關(guān)描述符請求,并得獲取所需的設(shè)備描述符,從而了解設(shè)備的情況,再通過Set Address指令設(shè)置一個唯一的設(shè)備地址,然后,主機(jī)就通過該地址與設(shè)備通信,不再使用默認(rèn)地址0,端點(diǎn)0的配置過程也是類似的。

(2)其他端點(diǎn)數(shù)據(jù)通信。在配置階段,主機(jī)獲取到設(shè)備端點(diǎn)的使用情況后,現(xiàn)在可以通過這些端點(diǎn)進(jìn)行特定數(shù)據(jù)通信。海量存儲設(shè)備有BULK ONLY和CBI兩種傳輸方式,使用Bulk Only較為常見,主要是使用特定的Bulk端點(diǎn),由于Bulk端點(diǎn)的沒有特定的數(shù)據(jù)格式,所以需要使用某種命令集來約定其傳輸格式,一般配備使用UFI或SCSI命令集。

3.2.2 Bulk-Only傳輸協(xié)議

當(dāng)設(shè)備插入到USB后,完成枚舉過程,主機(jī)便可識別出為海量存儲設(shè)備類型,隨后USB接口與設(shè)備間通過Bulk-In和Bulk-Out進(jìn)行數(shù)據(jù)傳輸??蓚鬏?shù)臄?shù)據(jù)類型有:CBW、CSW和普通數(shù)據(jù)[5]。CBW是符合SCSI傳輸命令集格式的一種命包,由主機(jī)發(fā)送給設(shè)備。當(dāng)USB設(shè)備解析出CBW包中的SCSI命令并執(zhí)行后,還需要向主機(jī)返回命令執(zhí)行狀態(tài)包CSW,最后,主機(jī)根據(jù)命令狀態(tài)包決定是否繼續(xù)發(fā)送下一個CBW或數(shù)據(jù)。

3.3 USB2.0海量存儲設(shè)備接口的軟件設(shè)計

3.3.1 MCU方軟件

USB模塊化編程,主要包括初始化、主函數(shù)和中斷處理函數(shù)三部分,主要是實(shí)現(xiàn)主機(jī)獲取設(shè)備描述符,進(jìn)行端點(diǎn)數(shù)據(jù)傳輸[6]。初始化函數(shù)主要包括UF32單片機(jī)和外圍電路接口初始化;中斷處理函數(shù)主要是進(jìn)行各種中斷的處理;主函數(shù)主要是完成設(shè)備特定要求的流程處理;

利用MCHS12UF32核中的USB端口5進(jìn)行批量輸入,端口4進(jìn)行批量輸出,函數(shù)框架如下:

voidBulkOnly_Init(void)//USB2.0初始化

{ … }

voidStartUP(void)//設(shè)備運(yùn)行時啟動函數(shù),系統(tǒng)的基本設(shè)置

{ … }

IsrProcess(void)/中斷處理函數(shù),,包括對解析SETUP包的處理函數(shù)USB_DecodeSETUP

{ … }

CBWProcessor(void)//該函數(shù)主要是對各種包(CBW、CSW等)的處理

{ … }

主函數(shù)根據(jù)MCHS12UF32核的USB設(shè)備上電或復(fù)位后,首先對所有內(nèi)部變量初始化,現(xiàn)調(diào)用BulkOnly_Init()函數(shù),打開中斷檢測控制端口0是否收到SETUP包,如果收到,則調(diào)用函數(shù)IsrProcess()。后續(xù)一直往復(fù)這個過程,直到枚舉成功,即找到海量存儲設(shè)備(Mass Storage Device),并安裝好驅(qū)動程序,之后就是主機(jī)發(fā)CBW包,執(zhí)行Bulk_Only傳輸協(xié)議,通過CBWProcessor()函數(shù)不斷檢測主機(jī)是否發(fā)來CBW包,并做相應(yīng)處理。

3.3.2 PC方軟件

PC方軟件包括USB的驅(qū)動程序和主機(jī)應(yīng)用程序兩部分。USB驅(qū)程序是一種標(biāo)準(zhǔn)的WDM驅(qū)動程序,支持即插即用,提供控制傳輸、中斷傳輸和批傳輸?shù)葮?biāo)準(zhǔn)接口函數(shù)。主機(jī)應(yīng)用程序是實(shí)現(xiàn)與操作系統(tǒng)的交互,操作系統(tǒng)監(jiān)測到新設(shè)備時,自動調(diào)用相應(yīng)的設(shè)備驅(qū)動程序。為了實(shí)現(xiàn)操作的方便性和可視性,利用VC++進(jìn)行了UI界面設(shè)計,通過CreateFile獲得USB句柄,用DeviceIoControl向設(shè)備驅(qū)動程序發(fā)送請求,完成基于MC9S12UF32單片機(jī)的USB2.0接口的批量數(shù)據(jù)傳輸。上位機(jī)的主要程序模塊如下:

//獲取設(shè)備ezusb0的句柄

DeviceHandle=CreateFile(\\\\.\\ezusb0,GENERIC_WRITE,F(xiàn)ILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);

//設(shè)備初始化

(1)子函數(shù)名:IQUE_Module_Init(void),功能:IQUE模塊初始化_使能IQUE模塊;

(2)子函數(shù)名:USB_ModuleInit(void),功能:USB模塊初始化-使能USB模塊;

(3)子函數(shù)名:USB_InitBulkOnlyTransport(void),功能:USB批量傳輸初始化-配置1x64字節(jié)BULK in和1x64字節(jié)BULK out;

//數(shù)據(jù)接收與發(fā)送子函數(shù)

(1)子函數(shù)名:Data_Tx(muint16*pBuffer,muint8 Len),功能:將長度為Len的數(shù)據(jù)移到pBuffer緩沖區(qū);

(2)子函數(shù)名:Data_Rx(muint16*pBuffer),功能:將PC方發(fā)來的數(shù)據(jù)移到pBuffe緩沖區(qū);

(3)子函數(shù)名:USB_Move2LocalBuffer(*FR_ptr,*TO_ptr,Len),功能:從指針FR_ptr所指向的位置移動長度為len數(shù)據(jù)到TO_ptr指針?biāo)?

(4)子函數(shù)名:USB_Move2QUE3(FR_ptr,Len),功能:從指針FR_pt處移動長度為len數(shù)據(jù)到QUE1 FIFO緩沖區(qū);

(5)子函數(shù)名:SCSIList28(),功能:Read指令集處理PC方向設(shè)備方索取數(shù)據(jù);

(6)子函數(shù)名:SCSIList2A(),功能:Write指令集處理,PC方向設(shè)備方發(fā)數(shù)據(jù)。

4 結(jié)語

本文對基于MC9S12UF32 MCU的USB2.0接口的一般開發(fā)方法和技術(shù)特點(diǎn)、設(shè)備端軟件和主機(jī)端軟件的設(shè)計進(jìn)行了討論,并給出了海量存儲設(shè)備的USB2.0接口設(shè)計方案和軟件設(shè)計的過程和實(shí)現(xiàn)方式,重點(diǎn)對設(shè)計枚舉過程和Bulk_Only傳輸進(jìn)行了較詳細(xì)的闡述和研究,希望能對UF32芯片的設(shè)計和開發(fā)者起到一定的借鑒和拋磚引玉的作用。

參考文獻(xiàn):

[1]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].清華大學(xué)出版社,2004

[2]閏波,田茂,李廣軍.一種基于層次模型的USB2.0接口芯片核固件的設(shè)計與實(shí)現(xiàn)[J].半導(dǎo)體技術(shù),29(3)

[3]張宇,程秀玲.基于OpenVPX的高速集成處理器USB接口設(shè)計[J].無線互聯(lián)科技,2020(04)

[4]陳玉輝,鐘洪聲,李廷軍.基于CY7C68013a的USB2.0接口設(shè)計[J].大眾科技,2010(10)

[5]孫瑜,張悅,陳勁操.基于USB接口的多路溫度采集系統(tǒng)設(shè)計[J].電力與能源,2017(02)

[6]陳旭輝,楊紅云.USB接口的虛擬多串口通信設(shè)備設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2020(04)

[7]USB Mass Storage Class-UFI Command Specification[EB/OL]

作者簡介:徐建林(1987— ),男,安徽阜陽人,大專,助理工程師,研究方向:機(jī)械設(shè)計、非標(biāo)自動化;聶章龍(1974— ),男,江蘇常州人,碩士,教授/高級工程師,研究方向:嵌入式系統(tǒng)、智能控制。

猜你喜歡
單片機(jī)設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
基于單片機(jī)的SPWM控制逆變器的設(shè)計與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計
電子制作(2017年19期)2017-02-02 07:08:27
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 美女无遮挡被啪啪到高潮免费| 日本道综合一本久久久88| 99精品视频九九精品| 2021国产乱人伦在线播放 | 人妻精品久久无码区| 久久亚洲精少妇毛片午夜无码| 国产无码网站在线观看| 日韩不卡高清视频| 色天堂无毒不卡| 欧美伦理一区| 不卡午夜视频| 中文字幕久久亚洲一区| 日韩第九页| 久久永久免费人妻精品| 亚洲精品少妇熟女| 日韩免费无码人妻系列| 先锋资源久久| 免费看美女毛片| 日韩黄色精品| 亚洲第一在线播放| 欧美另类视频一区二区三区| 成人免费网站在线观看| 日韩资源站| 免费观看成人久久网免费观看| 蜜臀av性久久久久蜜臀aⅴ麻豆| 亚洲AⅤ综合在线欧美一区| 无码aaa视频| 国产在线观看91精品亚瑟| 伊人久久久久久久| 亚洲国产欧洲精品路线久久| 香蕉伊思人视频| 88av在线| 国产免费网址| 久久黄色毛片| 无码区日韩专区免费系列 | 色综合久久综合网| 人妻精品久久无码区| 国产三级韩国三级理| 中文字幕无码中文字幕有码在线| 精品免费在线视频| 欧美日韩在线亚洲国产人| 日本在线欧美在线| 久久a毛片| 国产哺乳奶水91在线播放| 欧美日韩精品一区二区视频| 亚洲欧洲自拍拍偷午夜色| 少妇精品网站| 色综合狠狠操| 亚洲日韩AV无码一区二区三区人 | 欧美亚洲另类在线观看| 亚洲第一成年人网站| 超级碰免费视频91| 波多野结衣久久高清免费| 免费人成视网站在线不卡| 欧美一区二区三区欧美日韩亚洲| 日韩美毛片| 欧美日韩免费在线视频| 日韩精品资源| 激情综合激情| 99精品这里只有精品高清视频| 日韩欧美中文字幕在线韩免费| 亚洲天堂首页| 波多野结衣爽到高潮漏水大喷| 国产精品亚洲欧美日韩久久| 国产成人亚洲日韩欧美电影| 色悠久久综合| 91福利在线观看视频| 欧美黄网在线| 亚洲欧美日本国产综合在线| 国产地址二永久伊甸园| 国产乱子伦视频在线播放| 国产系列在线| 国产乱子伦精品视频| 欧美三级视频在线播放| 中文字幕乱码二三区免费| 91九色视频网| 91原创视频在线| 九九免费观看全部免费视频| 国产毛片高清一级国语 | 国产色爱av资源综合区| 伊人色在线视频| 中文成人在线视频|