有朋友問:我學(xué)習(xí)過51,接下來我是先學(xué)習(xí)STM8,還是STM32呢?
1寫在前面
想要明白這個問題,其實(shí)就需要明白STM8和STM32之間有些什么差異,包括MCU基本信息、開發(fā)難度、以及應(yīng)用場景等。
站在客觀的角度來說,STM8比STM32學(xué)起來更容易,C語言功底還不錯的朋友,直接上STM32也不是問題。
從大的方向來說,當(dāng)你對一種MCU掌握的比較透徹,再學(xué)其他型號、其他廠商的MCU,相對來說,上手都要容易的多。
針對本文問題,我下面講述一下相關(guān)知識。
2
STM8和STM32內(nèi)核差異
STM8 CPU 是一種專有架構(gòu),它保持了以前的 ST7 內(nèi)核的傳統(tǒng),同時在 8 位 CPU 效率和代碼密度方面實(shí)現(xiàn)了突破。
STM32 圍繞行業(yè)標(biāo)準(zhǔn) ARM Cortex-M 32 位內(nèi)核構(gòu)建,并受益于與 ARM 處理器有關(guān)的開發(fā)工具和軟件解決方案的完整生態(tài)產(chǎn)業(yè)環(huán)境。
盡管它們被認(rèn)為是兩種完全不同的處理器,但它們在架構(gòu)方面實(shí)際有許多相似之處。
下面對比STM8S 和 STM32F1 (Cortex-M3)這兩種內(nèi)核差異:
兩種內(nèi)核均基于哈佛架構(gòu),它們采用 3 級流水線執(zhí)行,可將執(zhí)行時間降至最低,對于 STM8S,時鐘速度高達(dá) 24 MHz,對于 STM32F1系列,時鐘速度高達(dá) 72 MHz。
在代碼密度方面,它們均有優(yōu)異的表現(xiàn),這歸功于 STM8S 系列的 8 位CISC 指令集以及 STM32F1系列的 Cortex 內(nèi)核引入的 16 位Thumb-2 模式。
3
片上外設(shè)差異
ST 8位和 32位 MCU 產(chǎn)品線之間的片上外設(shè)具有一致性,大多數(shù)基本 MCU 外設(shè)均定義和構(gòu)建為可從一個產(chǎn)品系列移植到另一個產(chǎn)品系列。
這通過將 8 位外設(shè)簡單但有效地修改為 32 位字來實(shí)現(xiàn)。這樣做的好處是可節(jié)約成本和功耗,并且資源易于了解。
如果需要更高性能,可在系統(tǒng)層面通過更寬的總線和 DMA 控制器對資源加以補(bǔ)充。在了解了外設(shè)的工作原理后,可以將外設(shè)應(yīng)用到 STM8S 和 STM32 系列,從而加速兩種器件之間的轉(zhuǎn)換。
ARM 處理器和外設(shè)符合 AMBA 總線規(guī)范,采用 32 位數(shù)據(jù)總線,而 STM8S 器件使用更為簡單但有效的8 位總線標(biāo)準(zhǔn)。從功能角度看,它們僅在以下方面存在差異:
寄存器大小: 8 位與 16 或 32 位
直接取決于 CPU 運(yùn)行速度的最大時鐘頻率
DMA,可通過簡單數(shù)據(jù)管理減輕 CPU 的負(fù)荷并提高最大數(shù)據(jù)吞吐量
一些產(chǎn)品特定功能,如 I/O 端口管理
對比STM8S 和 STM32F1 的 SPI 框圖:
SPI寄存器:
從上面框圖和寄存器可以看出:除了幾個有區(qū)別的位和寄存器大小外,寄存器和位的名稱以及在寄存器中的位置都是相似的。
4
系統(tǒng)外設(shè)
當(dāng)今的 MCU 是復(fù)雜的 SoC(片上系統(tǒng)),其中不僅包含許多外設(shè),還包含一些高級系統(tǒng)特性,旨在縮減物料清單或增強(qiáng)系統(tǒng)的安全性和穩(wěn)定性。
1.復(fù)位
STM8S 和 STM32 基本具有相同的復(fù)位電路,僅有細(xì)微的差異:
NRST 引腳既是輸入也是具有內(nèi)置上拉電阻的開漏輸出。為實(shí)現(xiàn) EMS(電磁敏感度)魯棒性,插入了一個濾波器以避免毛刺傳播到數(shù)字電路中。雙向復(fù)位有三個優(yōu)點(diǎn):
對于多 MCU 系統(tǒng),雙向復(fù)位可確保在啟動或熱復(fù)位時所有子處理器均正確同步
對于其它 IC,在系統(tǒng)層面還可以使用 MCU 內(nèi)嵌的電壓監(jiān)控器(上電復(fù)位和欠壓復(fù)位)
當(dāng)生成假內(nèi)部復(fù)位時,在調(diào)試過程中會有很大幫助
2.時鐘
STM8和STM32時鐘都具有很強(qiáng)大的功能,特別是最近推出的STM32G0具有高精度內(nèi)部時鐘,可以省去外部晶振,減少硬件及PCB。
STM8不具備倍頻功能,各方面相對要弱一點(diǎn)。STM32具有倍頻、外設(shè)時鐘分頻等強(qiáng)大功能。同時,STM8和32都具有獨(dú)立外設(shè)時鐘使能功能,以降低功耗。
看下STM32F1時鐘樹,就大概了解有哪些功能了:
3.存儲器
兩種產(chǎn)品線均基于非易失性存儲器并具有一個選項(xiàng)字節(jié)加載器。此機(jī)制取代了用于 MCU 上電配置的傳統(tǒng)熔絲位:用戶可以在編程時選擇多種選項(xiàng),這些選項(xiàng)會隨程序二進(jìn)制映像一起寫入。
所有新型微控制器都具有以下幾個特性:
暫停、停止或待機(jī)模式下的復(fù)位:可在 MCU 意外進(jìn)入低功耗模式時避免發(fā)生死鎖情況,適用于不能處理此類配置的應(yīng)用
硬件/軟件看門狗,可以在復(fù)位之后立即通過硬件啟動看門狗
存儲器讀保護(hù),用于防止對程序內(nèi)容的竊取
存儲器寫保護(hù),用于保護(hù)存儲器中包含關(guān)鍵代碼的部分。通常,這適用于自舉代碼或IAP(應(yīng)用內(nèi)編程)驅(qū)動程序
這些選項(xiàng)可自動使能安全性和可靠性特性,這樣即使在 CPU 獲取第一個指令之前出現(xiàn)干擾或攻擊,應(yīng)用也可以恢復(fù)。
STM8S 和 STM32 器件具有嵌入式自舉加載器,通過它可以使用板上串行接口(例如 UART)重新燒寫內(nèi)部 Flash。隨后可以將任何具有串行通訊接口的 PC 用作編程工具,來燒寫或更新 Flash 以及數(shù)據(jù) EEPROM 存儲器的內(nèi)容。 ST 提供了一個軟件實(shí)用程序來執(zhí)行自舉加載器支持的所有操作。
當(dāng)然,還有更多系統(tǒng)特性相關(guān)的內(nèi)容,比如安全性、低功耗方面。這些設(shè)計(jì)都具有高度一致性。
5
軟件
STM8和STM32除了上面描述的一些內(nèi)容具有高度一致性之外,其實(shí),對應(yīng)我們軟件開發(fā)工程師來說,軟件才是最為關(guān)心的一點(diǎn)。
在STM8和STM32產(chǎn)品設(shè)計(jì)之初,工程師早就考慮過這個問題。因?yàn)槎呦到y(tǒng)、內(nèi)核及外設(shè)都具有一致性,所以軟件庫也是設(shè)計(jì)具有一致性。
1.寄存器、庫開發(fā)
這個我就不說了,從51過來的都知道,對于寄存器比較少的MCU來說,不是問題。對于STM8來說,其實(shí)我覺得還好,使用寄存器開發(fā),就是需要更多時間了解寄存器。
我其實(shí)不是很建議大家使用寄存器開發(fā),現(xiàn)在STM8有標(biāo)準(zhǔn)外設(shè)庫,庫的API函數(shù)接口也容易理解,直接拿來省事,也能方便理解寄存器。
那么對于STM32這種有大量寄存器的MCU,我同樣也是不建議大家直接使用寄存器開發(fā),部分功能可以針對庫優(yōu)化成寄存器。
2.STM8、32CubeMX工具
STM8CubeMX和STM32CubeMX這兩個工具我不止一次在公眾號提到,ST官方的目前的趨勢就是希望用戶使用這個工具來開發(fā)。
而且,大家已經(jīng)發(fā)現(xiàn),STM32有些新出來的MCU是沒有標(biāo)準(zhǔn)外設(shè)庫了。所以,這兩個工具建議大家也要學(xué)習(xí)。
STM8CubeMX目前更新至V1.3.0,只能提供配置,方便了解MCU使用資源情況,還不具備自動生成代碼功能,不過我覺得后面應(yīng)該具有這個功能。
所以:如果基礎(chǔ)不怎么好,建議先STM8,等學(xué)到一定基礎(chǔ)可以再學(xué)STM32。如果自認(rèn)基礎(chǔ)還可以,C語言也行,那么直接上STM32不成問題。
-
STM32
+關(guān)注
關(guān)注
2266文章
10873瀏覽量
354867 -
ARM處理器
+關(guān)注
關(guān)注
6文章
360瀏覽量
41667 -
引腳
+關(guān)注
關(guān)注
16文章
1182瀏覽量
50286 -
STM8
+關(guān)注
關(guān)注
18文章
392瀏覽量
56714
發(fā)布評論請先 登錄
相關(guān)推薦
評論