標(biāo)題: USB雙虛擬串口,全雙工收發(fā)! [打印本頁]

作者: xiaos    時(shí)間: 2015-4-4 01:51
標(biāo)題: USB雙虛擬串口,全雙工收發(fā)!
背景資料
眾所周知,國內(nèi)開發(fā)學(xué)習(xí)板80%以上的市場(chǎng),已被意法半導(dǎo)體占領(lǐng),鋪天蓋地的中文資料,眾多新生力量
的加入,使意法半導(dǎo)體的DSC芯片逆襲成為眾多高校電子信息工程的必修科目。事實(shí)上,NXP等眾多廠家
芯片的實(shí)力更強(qiáng),然而意法半導(dǎo)體在價(jià)格上以絕對(duì)優(yōu)勢(shì)占領(lǐng)了市場(chǎng),塵埃落定,其它IC廠家只剩眼紅而已。

桂林電子科技大學(xué),主要使用NXP的Cortex-M3,北航各家都有,主要是ST的,清華大學(xué)2014年開始
布局ST公司的芯片研究,同時(shí)也不放棄50MHz以下的Cortex-M0,江蘇的大學(xué)主要研究其它廠商的
Cortex-M4,F(xiàn)在隨隨便便一個(gè)電子專業(yè)的畢業(yè)生,都對(duì)Cortex-M3芯片了如指掌。

一、USB Serial tools 軟件簡(jiǎn)介
USB Serial tools 是本人于2012-2013年業(yè)余制作的開發(fā)調(diào)試工具軟件包,通過注冊(cè)WINDOWS消息通知,
具備了USB虛擬串口設(shè)備插拔檢測(cè)的能力,不同于傳統(tǒng)的調(diào)試工具,該軟件還可以讓技術(shù)開發(fā)人員便捷地
查看USB虛擬串口設(shè)備的生產(chǎn)廠商信息。

二、USB雙虛擬串口簡(jiǎn)介
意法半導(dǎo)體官方在2007-2013年,在多個(gè)Cortex-M3系列上實(shí)現(xiàn)了各種USB設(shè)備,其中包含 CDC 設(shè)備,即
USB虛擬串口,經(jīng)過多年數(shù)個(gè)版本的更新,意法半導(dǎo)體的USB CDC例程仍然存在很多不足之處,和一些
BUG,本人參考了國外大牛的基本通訊例程,和意法半導(dǎo)體最新的4.0版本CDC例程,經(jīng)過大約1個(gè)星期
斷斷續(xù)續(xù)的改進(jìn),終于實(shí)現(xiàn)了USB雙虛擬串口,測(cè)試硬件平臺(tái)為大蝦開發(fā)板
(STM32F103VCT6核心板),軟件平臺(tái)為MDK-ARM 4.74。

國外大牛實(shí)現(xiàn)的雙虛擬串口,使用自己編寫的驅(qū)動(dòng)文件,沒有經(jīng)過微軟數(shù)字簽名,而且收發(fā)通訊只做演示,
并沒有設(shè)置任何緩沖,不能作為產(chǎn)品。本人在前人的基礎(chǔ)上修改而成的USB雙虛擬串口,驅(qū)動(dòng)文件在ST
官方inf文件的基礎(chǔ)上修改,能通過微軟數(shù)字簽名。

USB Serial tools和通過微軟數(shù)字簽名認(rèn)證的USB雙虛擬串口這一套組合產(chǎn)品

USB Serial tools軟件正準(zhǔn)備申請(qǐng)軟件著作權(quán)專利。

三、USB雙虛擬串口的測(cè)試
利用USB Serial tools軟件對(duì)USB雙虛擬串口的部分測(cè)試,如圖1-1所示。


圖1-1 USB雙虛擬串口全雙工收發(fā)壓力測(cè)試



圖1-2  USB Serial Tools對(duì)USB雙虛擬串口設(shè)備的識(shí)別信息


圖1-3   WIN7-X64對(duì) USB雙虛擬串口的識(shí)別信息(驅(qū)動(dòng)程序通過微軟數(shù)字簽名)



圖1-4  專業(yè)工具Bus Hound對(duì)USB雙虛擬串口通訊過程的監(jiān)視情況


Bus Hound對(duì)虛擬串口(COM16)的監(jiān)視及說明:


圖1-5  64字節(jié)數(shù)據(jù)包循環(huán)發(fā)送測(cè)試(10次循環(huán))
備注:
1. 發(fā)送方為虛擬串口COM15,發(fā)送周期: 30毫秒 數(shù)據(jù)包長(zhǎng)度: 64字節(jié)
2. 之所以測(cè)試64字節(jié),是因?yàn)閁SB 2.0 Full Speed (USB1.1)通訊數(shù)據(jù)包最大只有64字節(jié);
    數(shù)據(jù)包小于64字節(jié)時(shí),Windows知道這個(gè)包收完就沒有了,會(huì)馬上讀取;
   數(shù)據(jù)包等于64字節(jié)時(shí),Windows不知道后面還有沒有發(fā)完,要求USB虛擬串口設(shè)備再發(fā)一個(gè)空包,告訴它數(shù)據(jù)包結(jié)束了。


圖1-5  129字節(jié)數(shù)據(jù)包循環(huán)發(fā)送測(cè)試2(5次循環(huán)2Mbps)


圖1-5  129字節(jié)數(shù)據(jù)包循環(huán)發(fā)送測(cè)試1(5次循環(huán)2Mbps)
備注:
1.Windows驅(qū)動(dòng)每次都讀到129字節(jié),但實(shí)際的USB傳輸還是按照3次傳輸,一般是(64+64+1)。
2.注意這里測(cè)試波特率提高到1-2Mbps是為了減少數(shù)據(jù)傳輸時(shí)間。
   串口波特率不能提高到1Mbps以上,主要是受到RS485物理層收發(fā)芯片及高速光藕的價(jià)格影響,另外串口
  速度高,通訊距離也收到限制,常規(guī)應(yīng)用串口波特率基本都在500kbps以內(nèi)。

四、USB CDC設(shè)備可靠性的決定性因素

  USB 雙虛擬串口屬于USB復(fù)合設(shè)備中的其中一種,也成為雙CDC通訊設(shè)備。
  USB CDC設(shè)備可靠性,取決于軟硬件系統(tǒng)的整體設(shè)計(jì)。不管是X893的inf還是stmcdc.inf,
  實(shí)際上都是調(diào)用微軟的驅(qū)動(dòng)文件usbser.sys,usbser.sys不會(huì)出現(xiàn)問題,所以CDC設(shè)備的
  可靠性就取決于上位機(jī)上層軟件和下位機(jī)的整體設(shè)計(jì)水平。
  上位機(jī)有多種CDC設(shè)備的工具軟件,可以相互取代,因此下位機(jī)底層驅(qū)動(dòng)軟件的魯棒性及
   硬件的可靠性設(shè)計(jì)就顯得尤為重要(這也是為什么我花很多時(shí)間去測(cè)試的原因)。

  
   硬件方面,USB的TVS保護(hù)和布線,由于時(shí)鐘信號(hào)只有12MHz,處理比較簡(jiǎn)單。

   軟件方面,主要是看設(shè)計(jì)者對(duì)通信的各種情況考慮的是否周全,是否會(huì)有bug。
   比如ST公司的工程師參考了中國設(shè)計(jì)者的代碼,但沒有理解的很深刻,將63字節(jié)
   的緩沖定義改為64字節(jié),但在數(shù)據(jù)包剛好是64字節(jié)時(shí),未添加空字節(jié)包確認(rèn),這個(gè)bug至今未修改。

   如無人值守的場(chǎng)合,可以利用USB雙虛擬串口的其中之一,提供一個(gè)周期性的信號(hào),
   利用STM32或外部獨(dú)立的芯片,監(jiān)視這個(gè)周期性信號(hào)是否存在,從而通知STM32F103
   "移除設(shè)備",延時(shí)一段時(shí)間后再恢復(fù)工作。當(dāng)然還需上位機(jī)的配合,上位機(jī)必須要
   具備USB設(shè)備移除和插入的檢測(cè)功能,防止自己崩潰,才能恢復(fù)正常的工作。

   一般場(chǎng)合,USB設(shè)備出現(xiàn)故障的概率很低,不需要另外的監(jiān)控信號(hào)。









作者: feixue2007    時(shí)間: 2021-4-14 09:19
上例程看看效果,樣品板卡有嗎???




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1