主機環境:Windows 7 SP1
開發環境:MDK5.14
目標板:STM32F103C8T6
開發庫:STM32F1Cube庫和STM32_USB_Device_Library
之前在STM32論壇里領取過一塊STM32開發板,本來以為是帶有USB模塊接口的,最后發現NUCLEO里是沒有把USB模塊外接出來的,所以就自個兒掏錢買了一塊單板,如下圖所示:
單板很簡單,單純是為了學習一下STM32的USB模塊,之所以選擇這個是因為它便宜,而且ST官方有提供USB模塊庫方便開發。
USB開發博大精深,比之串口,SPI,I2C來說多了很多東西,一個很簡單的例子就是串口,SPI,I2C都可以使用通用IO口來模擬實現,但USB卻很少有人這么做。學習USB模塊就要學習USB協議,USB協議從1.1到2.0再到3.0,現在貌似到3.1版本了都,版本更替了這么多但不影響我們學習,因為USB協議都是向后兼容的,學習了一個就夠了。STM32F103C8T6的USB模塊實現了USB2.0全速總線,符合USB2.0全速設備的計數規范,支持8個雙向端點等。
USB總線使用兩根線實現差分傳輸D+、D-,這跟485總線類似。因此,在USB總線上同一時刻只能有一個方向上的傳輸。
有關USB2.0協議規范可以從USB官網上下載,重點看第9章節即可,600多頁的文檔從頭看到尾是很枯燥的。當然如果有精力的話,整個規范都看完也是很有好處的。跟USB2.0規范相關的還有很多類規范,在開發時如果有需要再看就可以了。
一、USB器件庫概述
ST官網提供的USB文檔有STM32Cube USB器件庫,以及USB培訓的一些文檔,重點看USB器件庫文檔就好了,因為我們是把STM32的USB模塊當作從設備,當然如果STM32支持USB主機的話還有另外一個主機庫(不在這里討論)。通過查看STM32Cube USB器件庫,可以幫助我們快速理解USB模塊的架構,簡化應用開發。STM32CubeUSB設備庫在Cube中所處位置如下:
USB設備庫位于HAL驅動層之上,在開發中我們只需關注USB設備庫即可,不必關注USB設備的HAL驅動,不然USB設備庫就沒有存在的意義了。而且USB設備庫代碼是只讀的,不需要修改。
設備庫中使用的主要結構體為設備句柄,其類型為USBD_HandleTypeDef,我們不必刻意關注USB HAL驅動中USB所使用的數據結構,因為它們對于我們來說是隱藏的,只需關注設備庫曝露給我們的接口即可,設備庫是和USB2.0協議密切相關的,因此需要熟悉USB2.0文檔有助于我們理解設備庫的工作流程。
USB設備庫目錄分為兩層:一層為Core(核心層);另一層為Class(類層),目錄結構如下:
結構比較清晰,核心層是不需要動的,類層是擴展用的。
USB設備庫中核心層的usbd_conf文件是需要用戶自己實現的,用來配置USB的屬性,其各個文件的作用如下:
其中usbd_req改為了usbd_ioreq。由表7就可以看出USB2.0規范中第9章很重要。USB器件庫文檔還詳細說明了一下控制端點0,這在USB開發中是一個重要的端點。其作為默認的控制端點用于接收主機發來的各種請求,請求作為Setup包發送到設備,請求又分為標準請求和非標準請求,標準請求在控制端點0上就可處理了,對于非標準請求通過回調函數傳遞給特定類進行進一步處理。
USB設備庫的類層中各個文件作用如下:
其中的usbd_xxx_if_template文件需要由用戶實現,目前跟USB設備庫相關的文件有兩個需要用戶去實現即usbd_conf文件和usbd_xxx_if_template文件。至此USB器件庫的概述說明就完畢了,更多詳細情況查看USB器件庫文檔即可。
二、USB協議概述
USB協議中用到的一些邏輯部件:
端點:數據傳輸的最終對象
管道:主機和設備端點之間數據傳輸的模型
接口:用于描述特定的功能(有一組端點組成)
設備:由一個或多個接口組成
USB傳輸分為了3層:Packet、Transaction、Transfer,三者是由小到大,關系如下圖:
一次Transfer傳輸分為幾個Transaction,一次Transaction由幾次Packer組成。
Packet包格式如下:
所有的USB傳輸都是由USB主機發起,這點跟I2C通信有些類似。
USB的傳輸分為4類:控制傳輸、中斷傳輸、同步傳輸、批量傳輸,由此引申出4類端點類型:控制端點、中斷端點、同步端點、批量端點。
控制傳輸是雙向的,須有IN和OUT兩個方向上的端點號。其他類型的傳輸是單向的。各類傳輸差別不是很大,只是對時間的要求不同。
有關USB協議的大概情況就介紹到這,更多詳情請查閱USB2.0規范以及STM32F103的參考手冊。后面將通過VCP具體示例來分析USB開發。
上一篇:STM32 USB學習筆記2
下一篇:最后一頁
推薦閱讀
史海拾趣
在電子行業的激烈競爭中,Densitron公司始終堅持技術創新作為發展的核心動力。早期,公司投入大量研發資源,成功開發出一種新型的銦錫氧化物(ITO)材料,這種材料在觸摸屏領域具有出色的性能,使得公司的產品在市場上脫穎而出。隨著技術的不斷升級,Densitron公司又相繼推出了一系列創新產品,不僅滿足了客戶日益增長的需求,也推動了整個行業的進步。
隨著業務的不斷發展,Crouzet公司于1989年和1992年分別成功兼并了法國Syreles公司及墨西哥Gordos公司。這一系列的兼并活動不僅增強了公司的實力,還進一步擴大了公司的業務范圍。此后,Crouzet開始在全球范圍內布局,陸續在美國、德國、英國、荷蘭、比利時、瑞士、瑞典等國設立分公司,形成了一個覆蓋全球的銷售網絡。
面對激烈的市場競爭和行業變革,達利凱普積極推進數字化轉型和產業升級。公司引入了先進的生產設備和管理系統,實現了生產過程的自動化和智能化。同時,公司還加大了對新材料、新工藝的研發力度,不斷提升產品的性能和品質。這些舉措使達利凱普在激烈的市場競爭中保持了領先地位,也為公司的持續發展奠定了堅實基礎。
隨著公司產品的不斷完善和升級,AR RF/Microwave Instrumentation開始積極拓展市場。他們不僅在國內建立了廣泛的銷售網絡,還積極尋求與國際合作伙伴的合作。通過與國外知名企業的合作,公司不僅引進了先進的技術和管理經驗,還進一步提升了產品的國際競爭力。
進入1950年代,Eclipse Magnetics迎來了一次重要的創新。公司決定將磁鐵涂上紅色,這一獨特的紅色磁鐵迅速在市場上獲得了認可。同時,公司還設計了與紅色磁鐵相配的馬蹄形標志,這一標志后來成為Eclipse Magnetics的國際通用標記。隨著品牌的國際化,Eclipse Magnetics的產品開始進入全球市場。
博巨興公司一直注重技術研發和自主創新,近年來公司研發費用投入均占當年銷售額的10%以上。憑借科學的管理手段和雄厚的技術力量,公司于2006年被認定為“深圳市軟件企業”,2007年被認定為“深圳市高新技術企業”,2011年更是榮獲“國家高新技術企業”稱號。這些榮譽的獲得不僅是對公司技術實力的認可,也為公司的進一步發展奠定了堅實基礎。
調試好的can(匯編及C語言)程序,sja1000+tja1040 調試好的can(匯編及C語言)程序,與大家分享! //************************************程序功能***************************************************//節點1向CAN節點2發送數據,數據的頭兩個字節分別是:節點1的ID和要求節點2回復的數據長度//節 ...… 查看全部問答∨ |
雖然不是我自己整理的,但是我是綜合很多的相關資料整理的,發出來不為別的,只為養家糊口,大家看著有用的話就收藏吧! 算了 還是不賣了,來這的新手也不容易,大家實惠才是真的!… 查看全部問答∨ |
是這樣的,我最近在弄socket編程方面的東西。基uC/TCPIP 的,連接是建立好了,就是收發數據有問題:我將收發函數放在循環while(1)里面,發端開始一直發,發了一會就不發了,收端只能接收一次數據,第二次循環到recv時就卡死了…… 想 ...… 查看全部問答∨ |
|
看了版主的博客,自己也很想用單片機做點事情。馬上快畢業了,發現自己沒有真正學到什么本領。最近找了個項目練手。用單片機做一個光源追蹤的裝置。大體是:弄2個光敏電阻,中間放一個擋板,光照偏向任何一個光敏電阻都會引起電機轉動調整光敏電阻 ...… 查看全部問答∨ |
#include <AT89X52.H> unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0 &nbs ...… 查看全部問答∨ |
哪位大蝦能發給我個串口通信的實例呀??最好用EVC寫的。。感激涕零。\\ 我的郵箱6094189ye@163.com 我看到書上有CSerial 這個類,但STANDARDSDK下面沒有這個類呀。。。???… 查看全部問答∨ |
我的是DELL1501本本,要實現純DOS下使用串口(RS232)通信,在市場上買了個prolific USB轉串口,不知是否可行?之前試過在DOS下可以使用USB鼠標,和讀取USB軟驅(B:)里的資料!… 查看全部問答∨ |
也是偶然看到一個節目,當初算是有炒作的因素在里面,是北大才子賣豬肉。好像是廣州那邊的,某人在九幾年的時候從政府辭職下海,前后做過房地產、醋飲料等。讓我感興趣的是,當其瞅準豬肉市場時,帶著自己手下千來口子,一齊轉型。于是那些人一齊跨 ...… 查看全部問答∨ |
我的電腦是筆記本,現在要ISP燒程序,用了一個BUS轉RS232的轉接卡,主控芯片是PL-2303,晶振12M,BUS轉RS232后 我設置為端口2; 現在我用的單片機STM32F103C8T6,在使用STMicroelectronics Flas ...… 查看全部問答∨ |