1.
本文為微信群管理員小磊投稿作品,作者計劃編寫一系列文章,該篇為第一篇,如果有做STM32的同學這將是一個非常好的系列教程,歡迎關注。我15年剛建立了一個BLE的QQ群,很有幸認識了小磊同學,一個非常踏實的技術型男,當然還有好幾個非常不錯的管理員,在QQ群裡嗨得飛起,後面因為公司原因不能在公司登錄QQ,我就基本很少在QQ群露面,裡面的管理都是讓這幾位哥們打理了。最近小磊說他也很喜歡寫技術文章,所以就有了下面這篇開頭,一個好的開頭是成功的一半,大家拭目以待吧,覺得不錯,請幫忙轉發支持一下,謝謝。
2.【作者簡介】
各位攻城獅朋友,大家好,我是小磊,蘇州人,工作也在蘇州。不知不覺入行嵌入式已經若干年了,嵌入式這個行業是我始終熱愛的事業並且為之不知疲倦地學習和工作。我的工作崗位是蘇州某公司的嵌入式部門主管,本身是硬體工程師,但是一直都是軟硬體工作都做,甚至軟體比硬體做的都多。
嵌入式的書面定義為:「嵌入式系統是以應用為中心、以計算機技術為基礎,軟、硬體可裁剪,適應於應用系統對功能、可靠性、成本、體積、功耗等方面有特殊要求的專用計算機系統」。在不斷地實踐中,我深刻體會到另一句比較抽象的話:「硬體是基礎,軟體是靈魂」。
明明畢業好多年,但仍似學生,這大概是對嵌入式人的很形象的描述了。從事這個行業,似乎是永遠到不了登峰造極這麼一種境界,也是這種情況,吸引了無數人不斷探索、砥礪前行。
再來說說《和我一起探索嵌入式》,這是我利用閒暇時光,記錄和分享有關嵌入式專業技術的系列文章的總稱。在其下,我將會不定期寫下各篇文章,類型不定,各篇文章之間沒有關聯性。文章的主要方向包括:軟硬體體驗、技術探索、經驗分享、教程等。所有文章均為本人原著文章,不會有任何抄襲,也不會轉載或引用其他人的文章給大家看。由於時間關係,所有文章將以連載的形式出現。
在此聲明,歡迎大家轉載分享我的文章,但請一定要註明我使用的名字和郵箱。
我使用的名字:小磊
我使用的郵箱:j9tanke@live.com
3.【01硬體介紹】
一、前言
STM32系列晶片在嵌入式行業的流行程度堪比肯德基在中國的流行程度。STM32系列晶片是很多嵌入式人入門的必學晶片,甚至有人跳過51直接學STM32。STM32的流行是不無道理的,其有著良好的穩定性、廣泛的適用性、友好的開發環境、豐富的開發資源和不錯的價格優勢。
當然,其流行的同時,和肯德基一樣有「富貴病」。怎麼理解這個問題呢?簡單來說,就是晶片價格比較昂貴,很多型號數量稀少,批量供貨不穩,目前國內已經有很多更高性價比的替代方案。
在機緣巧合下,我買到了一塊價格不錯的全新Discovery開發板,這是我第一次買這種原廠板子,晶片是STM32L496AGI6。寫這篇文章的目的在於和大家一起體驗一下這塊板子,順便分享我寫的一種手環系統框架。開發板使用的這款晶片是沒有機會實現在產品上量產的,所以請大家跟我一起來學習體驗即可。
本篇文章整體安排如下:
01硬體介紹
02軟體介紹
03硬體開箱體驗
04軟體體驗
05項目實戰—智能手環01
06項目實戰—智能手環02
07項目實戰—智能手環03
08項目實戰—智能手環04
09項目實戰—智能手環05
10項目實戰—智能手環06
具體如下:
在【01硬體介紹】篇中,我將詳細地為大家介紹晶片、開發板以及板載資源。
在【02軟體介紹】篇中,我將詳細地為大家介紹軟體開發環境和軟體開發資源。
在【03硬體開箱體驗】篇中,我將和大家一起開箱一塊全新的開發板。
在【04軟體體驗】篇中,我將和大家一起體驗出廠自帶的軟體系統。
在【05項目實戰】至【10項目實戰】篇中,我將分享一種手環系統框架,並將之開源。
二、STM32L496AGI6晶片介紹
STM32L496AGI6這款晶片是意法半導體(ST)推出的一款超低功耗(L系列)微控制器(MCU),其使用了ARM Cortex M4F內核,主頻可達到80MHz。其Flash是1MB,SRAM為320kB,且可以外擴RAM。除了MCU常見的外設例如GPIO、TIMER、SPI、USART、IIC、CAN、SDMMC、RTC、ADC、OTG_FS等基本都具備之外,其還具備FSMC、QSPI、DFSDM、ART、DCMI、TSC、SAI等特性,而這些稍微獨特的特性中的一部分,導致其特別適合作為可穿戴設備的主控晶片。下面介紹一些關鍵的特性:
2.1自適應實時內存加速器(ART)
這一功能僅在STM32系列部分M4、M7內核晶片中存在,旨在解決CPU取指快而Flash讀取慢這一矛盾。使用這一技術後CPU頻率達到80MHz時從Flash取指執行仍能實現0等待。
2.2靈活的靜態存儲控制器(FSMC)
這一功能在很多引腳較多的STM32系列晶片上都會有,其可以並行訪問外部的存儲器,包括SRAM、PSRAM、NOR Flash、NAND Flash、LCD等,大幅加快外部設備靜態存儲器的讀寫速度。具體地應用在LCD應用場景時,可以減少CPU運算,提高LCD刷新率。
2.3六線SPI(QSPI)
相比於傳統的四線SPI(CS、SCK、MISO、MOSI),六線SPI(CS、SCK、IO0、IO1、IO2、IO3)使用並行傳輸提高了原來四線SPI的讀寫速度。速度提升比較明顯,四線SPI一個時鐘周期內只能傳輸1bit數據,而六線SPI能夠傳輸4bit數據。由於受SPI Flash元器件的影響,這類Flash的寫入速度不會提高,但是讀取速度會有大幅提高。
2.4低功耗
作為STM32L系列中的一款晶片,STM32L496AGI6同樣具有非常優秀的低功耗特性。理論上講,該晶片在關機模式僅耗電25nA,在等待模式僅108nA,在等待模式同時僅讓RTC保持工作僅426nA。當晶片內部電源工作在LDO模式時,具有91uA/MHz的功耗特徵,當工作在DCDC模式時,具有37uA/MHz的功耗特徵。
雖軟這款晶片在性能、功能和低功耗等諸多方面具有不錯的特性,但是我們仍然不能將其使用到實際產品中去。我在此提出三點,一是價格,二是供貨,三是封裝,這三點都是造成不能使用該晶片的原因。前兩點很容易理解,第三點具體是這樣的,這款晶片是UFBGA169封裝,引腳間距0.5mm,除外圈引腳外必須打盤中孔才能扇出,其制板難度已經讓很多板廠不能受理,其制板費用已經讓很多公司不能接受。
三、開發板介紹
我使用的開發板全稱是32L496GDISCOVERY,是意法半導體原廠設計和銷售的開發板。其功能十分全面,板級設計還不錯(如果像我一樣有點強迫症,可能覺得很糟糕),可拓展的功能也較多,更重要的是使用很方便。
如果您英文閱讀沒有障礙,請您移步ST官網,親自去下載開發板相關資料閱讀,文檔編號是UM2160。如果您英文閱讀水平有限,請您看我下文簡介,應該也能讓您足夠了解這款開發板了。
請看下圖(開發板功能框圖):
下面依次介紹一下這些功能。
3.1調試器ST-LINK
在這塊開發板上集成了一個ST-LINK調試器,使用標準的ARM JTAG-SWD協議。他的功能和JLINK是一樣的,適用範圍沒有JLINK廣泛,畢竟是意法半導體為自家晶片打造的調試器,沒必要強調普適性。使用的晶片是LQFP48封裝的STM32F103CBT6,一款銷量火爆的晶片,價格便宜,供貨量大。調試器與主晶片STM32L496AGI6的連接中有一個撥碼開關隔離,通過撥碼開關可以完全阻隔調試器與主晶片的連接,方便測量主晶片的功耗。其次,當撥碼開關關斷時,調試器能夠通過一個引出埠給其他板子調試,這樣自己又多了一個ST-LINK可以使用了。另外,調試器還有一個串口功能,與主晶片UART2相連,可以方便的輸出調試信息。
3.2存儲
開發板存儲資源豐富,共有三處,一是PSRAM,二是SPI Flash,三是SD卡。
第一處,PSRAM,使用的是ISSI公司的IS66WV51216EBLL-70BLI,1MB空間,48Ball BGA封裝。相對於主晶片的寬電壓(1.71-3.6V)特性,該PSRAM電壓範圍僅在2.5-3.3V之間,使用時需要格外注意。
第二處,SPI Flash,使用的是臺灣旺宏電子股份有限公司的MX25R6435FM2IL0,8MB空間,SOP8封裝。這款Flash也具有寬電壓的特性,1.65-3.6V。同時,其支持QSPI接口,實際上與主晶片的連接方法也被設計為QSPI方式連接,所以讀取該晶片內存儲的數據能夠有較快的速度。
第三處,SD卡,使用的是小卡TF卡。SD卡與主晶片通過SDMMC接口連接,其讀寫速度遠超SPI連接方式。
3.3一些有趣的外部設備
開發板上有一些有趣的外設,包括:Joystick(搖杆),LCD,LED,Audio,Microphone。其中,Audio使用的是CS42L51音頻編/解碼晶片,與主晶片通過IIC和SAI(數字音頻接口)接口連接,外部是一個3.5mm通用耳機接口。Microphone部分使用的是意法半導體自家的數字式的全向音頻傳感器MP34DT01TR,兩個MP34DT01TR作為左右通道,且依託主晶片帶有的DFSDM(數字濾波器)功能,實現外部音頻採集。LCD部分使用的是一塊1.54英寸TFT LCD屏幕,屏幕之上有一塊電容觸摸傳感器。
3.4極其豐富的接口
開發板有很多接口,用於拓展各種各樣的模塊。主要的接口有三種,Arduino、Pmod、STmod+。
Arduino真的是一款風靡全球的開源硬體了,與其搭配的模塊也是各種各樣層出不窮,WiFi模塊、BLE模塊、電機驅動模塊、溫溼度傳感器模塊、乙太網模塊等等。在這塊開發板上Arduino接口是標準的Arduino UNO接口。
Pmod是Digilent制定的拓展模塊接口規範,在國內幾乎無人使用。
STmod+是意法半導體自己提出的一種拓展模塊的接口規範,在ST官網上能夠找到幾種模塊可以使用,但是價格昂貴。另在國內某些電商平臺上你能找到STmod+接口轉Arduino UNO接口的模塊在銷售。
另外,在開發板上還有一個相機接口和一個USB-OTG接口,相機數據線寬度為8bit。
3.5功耗測量
意法半導體的Discovery開發板都帶有簡單的功耗測量功能,這塊板子也不例外。在這塊開發板上,ST使用自家的STM32L152CCT6晶片設計了一個簡單的功耗測量儀器,能夠測量60nA至50mA範圍內的電流。如果超過這個測量範圍,需要通過外部電流表來測量。
完,各位共勉~
推薦閱讀
我就隨便BB一下
誰都能看懂的網絡模型知識
沒有夢想,你跟鹹魚有什麼分別?
華為不做黑寡婦,開源編譯器,與友商共建安卓性能
C 語言內存分配
繼續推薦下我的知識小密圈
我的知識小密圈