本文作者:Miler Shao STM32家族中有腳位少又帶USB或CAN功能的芯片嗎?答案是肯定的。 目前STM32家族9大系列中的STM32F0系列中就有20腳并帶USB和CAN外設模塊的芯片,他們是STM32F042Fx或STM32F070Fx [x識具體料號而定]。  剛好最近有人詢問希望從STM32芯片中挑一款腳位少且帶USB設備功能的芯片,為其推薦了STM32F042F6P6。 當使用STM32CUBEMx去嘗試對STM32F042F6P6做管腳配置定義時,突然發現有點不對勁!左邊的外設管腳配置欄里的USB灰灰如也,呈無效狀態。數據手冊有誤還是STM32CUBEMX配置工具不健全?這種情況下,優先研讀數據手冊為準。打開其數據手冊,手冊上赫然寫著各類片上資源,USB模塊就是其中之一。
 數據手冊里的管腳圖如下:


從管腳圖上不難看出第17、18腳的PA9/PA10與PA11/PA12的管腳安排定義的頗為別具一格。結合管腳圖下方的那句說明與管腳描述,我們可以知曉,對于20腳的SMT32F042來講,第17、18腳的默認就是PA9/PA10,可以復用為表格中標明的相關外設功能腳,但不能作為其它額外功能腳,比方USB端口。如果通過SYSCFG控制器進行相關配置,可以將第17、18腳的功能重映射為PA11、PA12,并可復用為表格中標明的其它外設功能腳,也可以作為USB的端口的額外功能腳。 看到這里我們基本明白了剛才在STM32CUBEMX配置那里看不到有效的USB外設的原因,很可能是缺少SYSCFG控制器的相關配置。回到STM32CUBEMX再看看。在PIN CONFIG欄的SYS位置,點開即可看到關于PA11/12代替PA9/10的選項,勾選后立即看道另外一番情景。USB外設也由灰色無效狀態轉為有效狀態,然后可以繼續做USB相關配置的勾選。  顯然,這顆小小20腳芯片是支持USB FS設備功能的,注意它支持DEVICE功能,只做從機,不能做主機。
前面還提到STM32F042F6P6也支持CAN功能,在配置時我們不難發現,開啟了USB就沒法同時開啟CAN,反之亦然。這不難理解,畢竟有時魚和熊掌很難兼得。 如果要配置CAN功能,同樣也得在SYSCFG外設那里要先做上面提過的第17、18腳的重映射操作,否則沒法做CAN的配置。 STM32的管腳復用是其一大特色,靈活可調的特性給工程應用帶來極大方便的同時,往往也會給初次使用者帶來些許難度或困惑。幸好ST官方出品了STM32CUBEMX圖形配置工具,可以解放很多研究手冊的工作量。不過在使用CUBEMX配置遇到疑惑時,還請回頭看看數據手冊找原因或做確認。

?最后順便提下基于STM32F0系列MCU開發的三個參考軟件代碼庫: STM32Snippets:基于寄存器訪問級的STM32芯片外設應用的示例代碼集合。對于希望兼顧程序容量和性能最優化的用戶來說是最佳選擇。對于那些之前從事8位 MCU開發而想過渡到32位MCU應用的用戶來說,也是個不錯的選擇。STM32F0 MCU參考手冊中書寫了許多STM32Snippets F0示例代碼,可以幫助理解文字描述,非常值得一讀。 Standard Peripheral Library:即標準外設庫,估計很多人都不陌生了。基于各STM32系列的外設操作的通用函數集合,尤其在STM32系列內部可以非常方便地實現移植。 STM32Cube嵌入式軟件庫:拓展和強化了STM32產品各系列間實現可移植的通用性。除了標準庫具有的外設操作函數庫外,還集成了大量中間件函數庫與參考工程例程,比如FATFS,RTOS,USB,EMWIN等應用的軟件應用套件。 當然了,上面三種參考代碼庫可以認為是屬于不同風格、不同量級的產品,最終選擇哪一款結合你自己的工程項目需求和個人偏好即可。 |