STM32單片機硬件關鍵基礎精華及注意事項
轉載自 自動化論壇 [ http://www.autooo.net/]
STM32簡單介紹
一、背景
如果你正為項目的處理器而進行艱難的選擇:一方麵抱怨16位單片機有限的指令和性能,另一方麵又抱怨32位處理器的高成本和高功耗,那麼,基於 ARM Cortex-M3內核的STM32係列處理器也許能幫你解決這個問題。使你不必在性能、成本、功耗等因素之間做出取舍和折衷。
即使你還沒有看完STM32的產品手冊,但對於這樣一款融合ARM和ST技術的“新生兒”相信你和我一樣不會擔心這款針對16位MCU應用領域 的32位處理器的性能,但是從工程的角度來講,除了芯片本身的性能和成本之外,你或許還會考慮到開發工具的成本和廣泛度;存儲器的種類、規模、性能和容
量;以及各種軟件獲得的難易,我相信你看完本專題會得到一個滿意的答案。
對於在16位MCU領域用慣專用在線仿真器(ICE)的工程師可能會擔心開發工具是否能夠很快的上手?開發複雜度和整體成本會不會增加?產品上 市時間會不會延長?沒錯,對於32位嵌入式處理器來說,隨著時鍾頻率越來越高,加上複雜的封裝形式,ICE已越來越難勝任開發工具的工作,所以在32位嵌 入式係統開發中多是采用JTAG仿真器而不是你熟悉的ICE。但是STM32采用串行單線調試和JTAG,通過JTAG調試器你可以直接從CPU獲取調試 信息,從而將使你的產品設計大大簡化,而且開發工具的整體價格要低於ICE,何樂而不為?
有意思的是STM32係列芯片上印有一個蝴蝶圖像,據ST微控製器產品部Daniel COLONNA先生說,這是代表自由度,意在給工程師一個充分的創意空間。我則“曲解”為預示著一種蝴蝶效應,這種蝴蝶效應不僅會對方案提供商以及終端產
品供應商帶來舉足輕重的影響,而且會引起競爭對手策略的改變……翅膀已煽動,讓我們一起靜觀其變!
二、STM32市麵上流通的型號
截至2010年7月1日,市麵流通的型號有:
基本型:STM32F101R6,STM32F101C8,STM32F101R8,STM32F101V8 ,STM32F101RB,STM32F101VB
增強型:STM32F103C8,STM32F103R8,STM32F103V8,STM32F103RB,STM32F103VB,STM32F103VE,STM32F103ZE
三、STM32係列的作用
ARM公司的高性能”Cortex-M3”內核
1.25DMips/MHz,而ARM7TDMI隻有0.95DMips/MHz
一流的外設
1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻轉速度
低功耗
在72MHz時消耗36mA(所有外設處於工作狀態),待機時下降到2μA
最大的集成度
複位電路、低電壓檢測、調壓器、精確的RC振蕩器等
簡單的結構和易用的工具
四、STM32F10x重要參數
2V-3.6V供電
容忍5V的I/O管腳
優異的安全時鍾模式
帶喚醒功能的低功耗模式
內部RC振蕩器
內嵌複位電路
工作溫度範圍:-40℃至+85℃或105℃
五、性能特點
基本型STM32F101:36MHz CPU,多達16K字節SRAM,1x12位ADC溫度傳感器
增強型STM32F103:72MHz CPU,多達20K字節SRAM,2x12位ADC 溫度傳感,PWM定時器,CAN,USB
六、STM32互聯型係列簡介:
全新STM32互連型(Connectivity)係列微控製器增加一個全速USB(OTG)接口,使終端產品在連接另一個USB設備時既可以 充當USB主機又可充當USB從機;還增加一個硬件支持IEEE1588精確時間協議(PTP)的以太網接口,用硬件實現這個協議可降低CPU開銷,提高 實時應用和聯網設備同步通信的響應速度。
全新互連型係列還是STM32家族中首款集成兩個CAN2.0B控製器的產品,讓開發人員能夠研製可連接兩條工業標準CAN(控製器區域網)總
線的網關設備。此外,新係列微控製器還支持以太網、USB OTG和CAN2.0B外設接口同時工作,因此,開發人員隻需一顆芯片就能設計整合所有這些外設接口的網關設備。
STM32互連型係列產品強化了音頻性能,采用一個先進的鎖相環機製,實現音頻級別的I2S通信。結合USB主機或從機功能,STM32可以從
外部存儲器(U盤或MP3播放器)讀取、解碼和輸出音頻信號。設計人員還可以在新係列微控製器上開發人機界麵(HMI)功能,如播放和停止按鍵,以及顯示 器界麵。這個功能使其可用於各種家庭音響設備,如音響底座係統、鬧鍾/音樂播放器和家庭影院。
新係列產品整合先進的麵向連接的外設,標準的STM32外設(包括一個PWM定時器),高性能的32位ARM
Cortex-M3 CPU,這些特性使開發人員可以在設備上(如家電、樓宇或工業自動化)整合多種功能,如馬達控製、用戶界麵控製和設備互連功能。其它目標應用包括需要聯
網、數據記錄或USB外設擴展功能的係統,如病患監視、銷售終端機、自動售貨機和保安係統。
包括新的互連型係列在內的STM32係列微控製器具有多種配套軟件和開發工具,其中包括意法半導體免費提供的軟件庫以及第三方工具廠商的廣泛支持。意法半導體還將推出一個新的評估板,目前正在向大客戶提供STM32F105和STM32F107互連型係列的樣片。
七、STM32新係列產品的功能:
STM32互連型係列產品分為兩個型號:STM32F105和STM32F107。STM32F105具有USB OTG 和CAN2.0B接口。STM32F107在USB OTG 和CAN2.0B接口基礎上增加了以太網10/100 MAC模塊 。片上集成的以太網MAC支持MII和RMII,因此,實現一個完整的以太網收發器隻需一個外部PHY芯片。隻使用一個25MHz晶振即可給整個微控製器 提供時鍾頻率,包括以太網和USB OTG外設接口。微控製器還能產生一個25MHz或50MHz的時鍾輸出,驅動外部以太網PHY層芯片,從而為客戶節省了一個附加晶振。
音頻功能方麵,新係列微控製器提供兩個I2S音頻接口,支持主機和從機兩種模式,既用作輸入又可用作輸出,分辨率為16位或32位。音頻采樣頻 率從8kHz到96kHz。利用新係列微控製器強大的處理性能,開發人員可以用軟件實現音頻編解碼器,從而消除了對外部組件的需求。
把U盤插入微控製器的USB OTG接口,可以現場升級軟件;也可以通過以太網下載代碼進行軟件升級。這個功能可簡化大型係統網絡(如遠程控製器或銷售終端設備)的管理和維護工作。
八、充分發揮 STM32架構的優勢:
除新增的功能強化型外設接口外,STM32互連係列還提供與其它STM32微控製器相同的標準接口,這種外設共用性提升了整個產品家族的應用靈 活性,使開發人員可以在多個設計中重複使用同一個軟件。新STM32的標準外設包括10個定時器、兩個12位1-Msample/s 模數轉換器 (交錯模式下2-Msample/s)、兩個12位數模轉換器、兩個I2C接口、五個USART接口和三個SPI端口。新產品外設共有12條DMA通道, 還有一個CRC計算單元,像其它STM32微控製器一樣,支持96位唯一標識碼。
新係列微控製器還沿續了STM32產品家族的低電壓和節能兩大優點。2.0V到3.6V的工作電壓範圍兼容主流的電池技術,如鋰電池和鎳氫電 池,封裝還設有一個電池工作模式專用引腳Vbat。以72MHz頻率從閃存執行代碼,僅消耗 27mA電流。低功耗模式共有四種,可將電流消耗降至兩微安。從低功耗模式快速啟動也同樣節省電能;啟動電路使用STM32內部生成的8MHz信號,將微 控製器從停止模式喚醒用時小於6微秒。
九、存儲器和封裝選項:
在STM32F105和STM32F107互連型係列微控製器之前,意法半導體已經推出STM32基本型係列、增強型係列、USB基本型係列和 增強型係列;新係列產品沿用增強型係列的72MHz處理頻率。內存包括64KB到256KB閃存和 20KB到64KB嵌入式SRAM。新係列采用LQFP64、LQFP100和LFBGA100三種封裝,不同的封裝保持引腳排列一致性,結合STM32 平台的設計理念,開發人員通過選擇產品可重新優化功能、存儲器、性能和引腳數量,以最小的硬件變化來滿足個性化的應用需求。
STM32硬件關鍵設計精華集錦
如何保證ADC精度之STM32的ADC
共有最多3個ADC模塊,最多21個ADC輸入通道
特性
12位分辨率
自校準
轉換結束,注入轉換結束和發生模擬看門狗事件時產生中斷
帶內嵌數據一致的數據對齊
非常豐富的操作模式
雙重模式(帶2個或以上ADC的器件)
ADC轉換時間:
1μs:ADC時鍾為14MHz時達到最快
14個時鍾周期,轉換周期可調:14、20、26、41、54、68、84、252
ADC供電要求:2.4V~3.6V
ADC輸入範圍:VREF-≤VIN≤VREF+
規則通道轉換期間有DMA請求產生
模擬看門狗
ADC輸入通道映射
STM32的雙ADC操作模式
ADC的誤差種類
(1) 理想ADC轉換曲線
(2) 實際ADC轉換曲線
(3) 實際ADC兩終點連線
ET 總誤差:實際ADC轉換曲線與理想曲線間的最 大偏離
EO 偏移誤差:實際轉換曲 線上第一次躍遷與理想
曲線中第一次躍遷之差
EG 增益誤差:實際轉換曲 線上最後一次躍遷與理
想曲線中最後一次躍遷 之差
ED 微分線性誤差:實際轉 換曲線上步距與理想步
距(1LSB)之差
EL 積分線性誤差:實際轉 換曲線與終點曲線間最 大偏離
消除影響ADC精度的因素(1)
1、ADC模塊自身的誤差
積分線性誤差(ILE)和微分線性誤差(DLE)依賴於ADC模塊的設計,校準它們是困難的。進行多次轉換再做平均可以減小它們的影響。偏移和增益誤差可以簡單地使用ADC模塊的自校準功能補償。
2、電源噪聲,尤其是開關電源(SMPS)的高頻噪聲
線性穩壓器具有較好的輸出。強烈建議在整流輸出端連接濾波電容。如果使用開關型電源,建議使用一個線性穩壓器為模擬部分供電。建議在電源線和地
線之間連接具有良好高頻特性的電容,即在靠近電源一端應放置一個0.1μF和一個1~10μF的電容。每一對VDD和VSS管腳都需要使用單獨的去藕電 容。VDDA管腳必須連接到2個外部的去藕電容器(10nF瓷介電容+1μF的鉭電容或瓷介電容)對於100腳和144腳封裝的產品,可以在VREF+上 連接一個外部的ADC的參考輸入電壓,從而改善對輸入低電壓的精度。
消除影響ADC精度的因素(2)
消除影響ADC精度的因素(3)
1、電源輸出不穩,隨負載變化
ADC模塊使用VREF+或VDDA作為模擬參考,數字數值的輸出是這個參考電壓與模擬輸入信號的比值,VREF+必須在各種負載情況下保持穩定。可以使用諸如LM236作為VREF+的參考電壓,這是一個2.5V的電壓參考二極管
2、模擬輸入信號的噪聲
平均值方法:適合處理不頻繁變化的模擬輸入信號,增加一個外部濾波器消除高頻噪聲。
3、將最大的信號幅度與ADC動態範圍匹配
選擇參考電壓(僅適合於具有VREF+引腳的產品),使用一個外部的前級放大器。
4、I/O引腳間的串擾(臨近數字信號的翻轉)
模擬信號線的周圍布置地線產生屏蔽,能有效地減小串擾幹擾噪聲。
消除影響ADC精度的因素(4)
VDD與VDDA的處理
供電引腳
STM32共有7種封裝規格,共有多組VDD/VSS引腳,以及一組VDDA/VSSA引腳。
盡管所有VDD和所有VSS在內部相連,在芯片外部仍然需要連接上所有的VDD和VSS。因為導線較細,內部連接負載能力較差,抗幹擾的能力也較差,如果漏接VDD或VSS,容易造成內部線路損壞,同時抗幹擾能力下降。
VDD與VSS的去藕電容
每對VDD與VSS都必須在盡可能靠近芯片處分別放置一個10nF~100nF的高頻瓷介電容。在靠近VDD3和VSS3的地方放置一個4.7μF~10μF的鉭電容或瓷介電容。
VDD與VDDA的關係
VDDA為所有的模擬電路部分供電,包括:
ADC模塊,複位電路,PVD(可編程電壓監測器),PLL,上電複位(POR)和掉電複位(PDR)模塊,控製VBAT切換的開關等。即使不
使用ADC功能,也需要連接VDDA,強烈建議VDD和VDDA使用同一個電源供電。VDD與VDDA之間的電壓差不能超過300mV,VDD與VDDA 應該同時上電或調電。
供電方案
如何達到最優功耗水準
低功耗模式
I/O引腳的處理
1、如果需要減小I/O端口的電流消耗,可以根據具體情況配置I/O端口的狀態:
輸入端口????配置為浮空輸入,帶外部上拉的輸出端口????配置為推挽輸出並輸出’1’,,帶外部下拉的輸出端口????配置為推挽輸出並輸出’0’。
2、未用的內部外設:
保持為關閉和默認的複位狀態:
不要進行重映射,複位寄存器RCC_APB1RSTR和RCC_APB2RSTR。關閉對應的時鍾,時鍾使能寄存器:RCC_AHBENR、RCC_APB2ENR和RCC_APB1ENR。
進入SLEEP模式的省電操作
1、為了降低係統功耗,進入SLEEP模式時,執行如下操作流程:
關閉無需等待中斷或事件的外設時鍾;設置進入機製(Sleep-Now或Sleep-on-Exit);設置係統進入SLEEP模式。
2、退出睡眠模式的方式:
WFI(等待中斷),可由任一外設中斷觸發,WFE(等待事件),可由任一外設事件觸發。
進入STOP省電模式的操作
為了降低係統功耗,進入STOP模式的操作流程:
關閉設置為普通IO功能的GPIO口時鍾;
關閉已開啟時鍾的外設的使能位(尤其是ADC、DAC、USB等帶模擬模塊的外設);
關閉已開啟時鍾的外設的時鍾;
關閉預取緩衝區,並將Flash等待周期置為0;
設置PWR_CR中LPDS位選擇電壓調節器的模式:
正常模式:電壓調節器處於正常供電狀態;
低功耗模式:可降低電壓調節器自身的功耗,
將MCU從STOP模式喚醒的時間有所增加;
設置係統進入STOP模式。
退出STOP省電模式的操作
1、退出停止模式:
以WFI進入時:任意外部中斷線的中斷;
以WFE進入時:任意外部中斷線的事件;
不包括PVD和USB喚醒事件。
2、從STOP模式恢複後,時鍾的配置返回到複位時的狀態(係統時鍾為HSI),用戶程序必須重新配置整個時鍾係統,包括PLL。
如何獲得高精度的RTC
STM32使用Pierce振蕩器,原理圖及重要參數如下:
三個步驟選擇一個合適的LSE
第一步:增益裕量(Gainmargin)計算
選擇一個晶振(參考MCU的數據手冊確定晶振的頻率)
計算晶振的增益裕量(Gainmargin)並檢查其是否大於5:
如果Gainmargin《 5,說明這不是一個合適的晶振,應當再挑選一個低ESR值和低CL值的晶振,重新第一步。如果Gainmargin》 5,進行第二步。
第二步:外部負載電容的計算
計算CL1和CL2的值,並檢查標定為該計算值的電容是否能在市場上獲得。如果能找到容值為計算值的電容,則晶振可以在期望的頻率正常起振。然後轉到第三步。
如果找不到容值為計算值的電容:
該應用對頻率要求很高,你可使用一個可變電容並將其調整到計算值,然後轉到第三步。如果對頻率的要求不是特別苛刻,選擇市場上能獲得的電容中容值距計算值最近的電容。
第三步:驅動級別及外部電阻的計算
計算驅動級別DL並檢查其是否大於DLcrystal:
如果DL《 DLcrystal,沒必要使用外部電阻,祝賀你,你找到了合適的晶振。如果DL》 DLcrystal,你應該計算RExt 使其確保DL《 DLcrystal 並據此重新計算Gainmargin。如果Gainmargin》 5,祝賀你,你找到了合適的晶振。如果Gainmargin《 5,你別無選擇,再重新挑選另外一個晶振吧。然後重新回到第一步。
ST推薦的LSE型號
對於STM32™的LSE部分,推薦使用CL《7pF的晶振(過大的CL會導致過大的gmcrit,從而無法保證足夠的增益裕量)。
RTC是一個計數器,對輸入時鍾分頻、計數、比較
RTC的校準
設置BKP_RTCCR寄存器,每220(1048576)個時鍾周期中,減去相應周期數,每個單位能實現0.954(1000000/220)
ppm的精度校準,BKP_RTCCR寄存器取值範圍0-127,時鍾可以調慢0 -121 ppm。
對於32,768Hz晶振,可補償頻偏範圍為:32,768Hz
《 fLSE《 32,772Hz ????調慢,設置RTC預分頻寄存器RTC_PRLH / RTC_PRLL。
例如:由預設值32768調整為32766,再設置BKP_RTCCR寄存器,此時,對於32,768Hz晶振,可補償頻偏範圍:
複位電路
外部複位信號低脈衝至少保持300ns,係統複位信號不影響備份區域的工作,NRST複位引腳是CMOS工藝的開漏電路。在產生內部複位信號時,NRST引腳會輸出一個低電平。
SWJ調試電路
SWJ電路設計及注意事項
調試燒錄失敗的常見原因
1、目標芯片沒有正確連接,不能正常工作:
解決方法:確保目標板的最小係統正確連接,芯片能正常工作:VDD、VDDA及VSS 、VDDS已全部正確連接,複位電路能夠可靠複位,各複位源不互相影響。
2、芯片內原先燒錄的代碼影響了新的調試操作:
芯片內原先燒錄的代碼出錯,芯片上電運行,進入未定義狀態,不能進入調試模式。芯片內原先燒錄的代碼啟動了某些外設,或者將SWJ引腳配置為普通I/O口。
解決方法:選擇芯片的BOOT0/BOOT1引腳從RAM啟動,或先擦除芯片內代碼。
3、芯片已被讀/寫保護:
調試工具不能讀寫芯片內置的Flash。
解決方法:先使用調試工具解除芯片的讀/寫保護。
STM32硬件電路設計注意事項
STM32的基本係統主要涉及下麵幾個部分:
1、電源
1)、無論是否使用模擬部分和AD部分,MCU外圍出去VCC和GND,VDDA、VSSA、Vref(如果封裝有該引腳)都必需要連接,不可懸空;
2)、對於每組對應的VDD和GND都應至少放置一個104的陶瓷電容用於濾波,並接該電容應放置盡量靠近MCU;
2、複位、啟動選擇
1)、Boot引腳與JTAG無關。其僅是用於MCU啟動後,判斷執行代碼的起始地址;
2)、在電路設計上可能Boot引腳不會使用,但要求一定要外部連接電阻到地或電源,切不可懸空;
3、調試接口
4、ADC
1)、ADC是有工作電壓的,且與MCU的工作電壓不完全相同。MCU工作電壓可以到2.0V~3.6V,但ADC模塊工作的電壓在2.4V~3.6V。設計電路時需要注意。
5、時鍾
1)、STM32上電默認是使用內部高速RC時鍾(HSI)啟動運行,如果做外部時鍾(HSE)切換,外部時鍾是不會運行的。因此,判斷最小係統是否工作用示波器檢查OSC是否有時鍾信號,是錯誤的方法;
2)、RTC時鍾要求使用的32.768振蕩器的寄生電容是6pF,這個電容區別於振蕩器外部接的負載電容;
5、GPIO
1)、IO推動LED時,建議盡量考慮使用灌電流的方式。
2)、在Stop等低功耗模式下,為了更省電,通常情況下建議GPIO配置為帶上拉的輸出模式,輸出電平由外部電路決定;
6、FSMC
1)、對應100pin或144pin,FSMC的功能與I2C是存在衝突的,如果FSMC時鍾打開,I2C 1的硬件模式無法工作。這在STM32F10xxx的勘誤表中是有描述的。
ST官方推薦的幾大主流開發板的原理圖,在畫電路的時候可以做為參考依據:
1、IAR
1)、STM32F103RBT6
2)、STM32F103ZET6
2、MDK
1)、STM32F103RBT6
2)、STM32F103ZET6
3、Raisonance
1)、STM32F103RBT6
2)、STM32F103VET6
4、ST官方的板
1)、STM3210E-LK
2)、STM3210B-EVAL
3)、STM3210E-EVAL
4)、STM3210C-EVAL
沒有留言:
張貼留言