|
STM32 的核心Cortex-M3 處理器
STM32 的核心Cortex-M3 處理器是一個(gè)標準化的微控制器結構,希望思考一下,何為標準化?
簡(jiǎn)言之,Cortex-M3 處理器擁有32 位CPU,并行總線(xiàn)結構,嵌套中斷向量控制單元,調試系
統以及標準的存儲映射。
嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡(jiǎn)稱(chēng)NVIC)是Cortex-M3 處理器中
一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3 的微控制器提供了標準的中斷架構和優(yōu)秀的中斷
響應能力,為超過(guò)240 個(gè)中斷源提供專(zhuān)門(mén)的中斷入口,而且可以賦予每個(gè)中斷源單獨的優(yōu)先
級。利用NVIC 從可以達到極快的中斷響應速度,從收到中斷請求到執行中斷服務(wù)的第一條
指令僅需12 個(gè)周期。這種極快的響應速度一方面得益于Cortex-M3 內核對堆棧的自動(dòng)處理
機制,這種機制是通過(guò)固化在CPU 內部的微代碼實(shí)現的。另一方面,在中斷請求連續出現
的情況下,NVIC 使用一種稱(chēng)為“尾鏈”的技術(shù),使連續而來(lái)的中斷可以在6 個(gè)時(shí)鐘周期內得
到服務(wù)。在中斷的壓棧階段,更高優(yōu)先級的中斷可以不耗費任何額外的CPU 周期就能完成
嵌入低優(yōu)先級中斷的動(dòng)作。具體的細節后面我會(huì )繼續總結的。用戶(hù)可以通過(guò)設置CPU 自動(dòng)
進(jìn)入低功耗狀態(tài),而使用中斷來(lái)將其喚醒,CPU 在中斷時(shí)間來(lái)臨之前會(huì )一直保持睡眠狀態(tài)。
這個(gè)后面我也會(huì )再總結。
Cortex-M3 的CPU 支持兩種運行模式:線(xiàn)程模式(Thread Mode)與處理模式(Handler Mode)
并且需要注意的是,這兩種模式都擁有各自獨立的堆棧。這種設計使得開(kāi)發(fā)人員可以進(jìn)行更
為精密的程序設計,對實(shí)時(shí)操作系統的支持也就更好了。
Cortex-M3 處理器還包含了一個(gè)24 位可自動(dòng)重裝載定的定時(shí)器,可以為內核(RTOS)提供
一個(gè)周期中斷。
在指令集方面,ARM7 和ARM9 都有兩種指令集(32 位指令集和16 位指令集),而Cortex-M3
系列處理器支持Thumb-2 指令集。由于Thumb-2 指令集融合了Thumb 指令集和ARM 指令
集,使得32 位指令集的性能和16 位指令集的代碼密度之間取得了平衡。
而且,ARM Thumb-2 專(zhuān)門(mén)為C/C++編譯器設計,這就意味著(zhù)Cortex-M3 系列處理器的開(kāi)發(fā)應
用可以全部在C 語(yǔ)言環(huán)境中完成。
STM32 微控制器的推出標志著(zhù)ST 公司在兩條產(chǎn)品主線(xiàn)(低價(jià)位主線(xiàn)和高性能主線(xiàn))上邁出
了重大一步。STM32 最初發(fā)布時(shí)有14 個(gè)不同型號,分為兩個(gè)版本:最高CPU 時(shí)鐘為72MHZ
的“增強型”和最高CPU 時(shí)鐘為36MHZ 的“基本型”。這些不同STM32 型號里內置的Flash 最
大可達128KB,SRAM 最大為20KB,在STM32 發(fā)布之初,配置更大Flash,RAM 和更復雜外設
的版本就已經(jīng)在規劃之中了。不管是什么版本,什么型號的STM32 器件,它們在引腳功能
和應用軟件上是兼容的。這就使得開(kāi)發(fā)人員在使用STM32 系列微控制器時(shí),不必改動(dòng)PCB
就可以根據需要隨意更換器件型號。
乍一看STM32 的設備配備,與往日熟悉的51 單片機倒有幾分相似。一般,STM32 都會(huì )配備
常見(jiàn)外設,諸如多通道ADC,通用定時(shí)器,I2C 總線(xiàn)接口,SPI 總線(xiàn)接口,CAN 總線(xiàn)接口,USB
控制器,實(shí)時(shí)時(shí)鐘RTC 等。但是,它的每一個(gè)外部設備都具有獨特之處。例如,12 位精度
的ADC 具備多種轉換模式,并帶有一個(gè)內部溫度傳感器,帶有雙ADC 的STM32 器件,還可
以使兩個(gè)ADC 同時(shí)工作,從而衍生出了更為高級的9 種轉換模式;STM32 的每一個(gè)定時(shí)器
都具備4 個(gè)捕獲比較單元,而且每個(gè)定時(shí)器都可以和另外的定時(shí)器聯(lián)合工作以生成更為精密
的時(shí)序;STM32 有專(zhuān)門(mén)為電機控制而設的高級定時(shí)器,帶有6 個(gè)死區時(shí)間可編程的PWM 輸
出通道,同時(shí)其帶有的緊急制動(dòng)通道可以在異常情況出現時(shí),強迫PWM 信號輸出保持在一
個(gè)預訂好的安全狀態(tài);SPI 接口含有一個(gè)硬件CRC 單元,支持8 位字節和16 位半字數據的
CRC 計算。在對SD 或MMC 等存儲介質(zhì)進(jìn)行數據存取時(shí)相當有用。
而且,STM32 還包含了7 個(gè)DMA 通道。沒(méi)惡搞通道都可以用來(lái)在設備與內存之間進(jìn)行8 位,
16 位,32 位數據的傳輸。每個(gè)設備都可以向DMA 控制器請求發(fā)送或者接收數據。STM32
內部總線(xiàn)仲裁器和總線(xiàn)矩陣將CPU 數據接口和DMA 通道之間的連接大大的簡(jiǎn)化了,這就意
味著(zhù)DMA 通道單元是很靈活的其使用方法簡(jiǎn)單,足以應付微控制器應用中常見(jiàn)的數據傳輸
要求。
我們前面說(shuō)過(guò)了,STM32 是低功耗,高性能的微控制器。在低功耗方面,STM32 表現也是
不錯的。它可以在2V 供電的情況下運行,在所有設備同時(shí)打開(kāi)且運行在滿(mǎn)速72MHZ 主頻的
情況下,也僅消耗36mA 的電流,在與Cortex-M3 內核的低功耗模式結合之后,只有2uA 的
電流消耗。即便外部振蕩器處在待啟動(dòng)狀態(tài),STM32 使用內部8MHZ 的RC 振蕩器也可迅速
退出低功耗模式。這種快速進(jìn)出低功耗模式的特性,也進(jìn)一步降低了微控制器整體的功率消
耗,同時(shí)使微控制器仍然可以保持器件的整體高性能。
在電子領(lǐng)域,對器件的要求精度高是一方面,另一方面,還要求器件穩定性要好,處于可靠
性的考慮,STM32 配備了一系列硬件來(lái)支持對可靠性的高度要求。這些硬件有:一個(gè)低電
壓檢測器,一個(gè)時(shí)鐘安全管理系統和兩個(gè)看門(mén)狗定時(shí)器。時(shí)鐘管理系統可以檢測到外部主振
蕩器的失效,并隨即安全的將STM32 內部8MHZ 的RC 振蕩器切換為主時(shí)鐘源。兩個(gè)看門(mén)狗
定時(shí)器中的一個(gè)稱(chēng)為窗口看門(mén)狗。窗口看門(mén)狗必須在事先定義好的時(shí)間上下限到達之前刷新,
如果過(guò)早或過(guò)晚的刷新它,將會(huì )觸發(fā)窗口看門(mén)狗復位。第二個(gè)看門(mén)狗稱(chēng)為獨立看門(mén)狗。獨立
看門(mén)狗使用外部振蕩器驅動(dòng),該振蕩器與主系統時(shí)鐘是相互獨立的,這樣即便STM32 的主
系統時(shí)鐘崩潰,獨立看門(mén)狗也能“力挽狂瀾”。
在現代電子設計行業(yè)中,有一個(gè)問(wèn)題是無(wú)法逃避的,那就是你不得不想方設法提高代碼的安
全性以防止被破解人員盜用。聽(tīng)師傅說(shuō),在極難得電子市場(chǎng),復制一個(gè)芯片只需要幾分鐘。
STM32 可以鎖住其內部Flash 使破解人員無(wú)法通過(guò)調試端口讀取其內容。當Flash 的讀保護
功能開(kāi)啟后,其寫(xiě)保護功能也隨之開(kāi)啟。寫(xiě)保護功能常用于防止一些來(lái)歷不明的代碼寫(xiě)入中
斷向量表。但是,寫(xiě)保護不僅可以保護中斷向量表,還可以進(jìn)一步將其保護范圍延伸到整個(gè)
Flash 中的未被使用區域。另外,STM32 還有一小塊電池備份RAM 區,這個(gè)RAM 區域對應
于一個(gè)入侵檢測引腳應用,當這個(gè)引腳上產(chǎn)生電平變化時(shí),STM32 會(huì )認為遭遇了入侵事件,
隨即自動(dòng)將電池備份RAM 區的內容全部清除。
目前好多開(kāi)發(fā)工具都開(kāi)始支持Thumb-2 指令集和STM32 系列,即使不支持也沒(méi)有關(guān)系,我
們只需要將軟件升級一下即可。同時(shí),ST 公司還提供了一個(gè)設備驅動(dòng)固件庫和一個(gè)USB 開(kāi)
發(fā)應用庫,以方便調用。對于STM32 來(lái)說(shuō),一些早期微控制器比如早期的STR7 和STR9 發(fā)
布的ANSI C 庫和源代碼都是可移植的。這些程序的接口已經(jīng)在許多流行的編譯工具上得到
了整合。相似的,許多開(kāi)源的或者商用的RTOS,還有一些中間件(比如TCP/IP 棧,文件系
統)對以STM32 系列微控制器來(lái)說(shuō)也是可用的。
Cortex-M3 還帶有一個(gè)全新調試系統CoreSight。用戶(hù)可以使用標準的JTAG 接口或者雙線(xiàn)串
行接口通過(guò)調試端口(Debug Access Port)實(shí)現和CoreSight 系統的對接。除了提供調試運行
控制服務(wù)之外,STM32 上的CoreSight 還提供斷點(diǎn)數據查看功能以及一個(gè)指令跟蹤器。指令
跟蹤器可以將用戶(hù)選擇的應用信息上傳到調試工具里。從而可以為用戶(hù)提供額外的調試信息,
并且它在軟件運行期間同樣可以使用。
“入門(mén)既不難,深造也是辦得到的”,只要你有恒心、有決心,跟隨我們的“連載”一步步走下去,將來(lái)就一定能在魅力的電子世界里遨游。
更多C語(yǔ)言 嵌入式學(xué)習,請咨詢(xún)余工Q 二八五九七八零二零三
|
|