welcom ! Handel home

2014年7月27日 星期日

ARM和x86幾大簡單比較


 轉載 自 自動化論壇



處理器通常是指一台電腦運算核心和控制核心。但是隨著移動設備的興起,處理器在智慧手機和平板電腦等移動終端設備中的也逐漸興起,讓處理器市場的變化始了。
英特爾是PC和企業級處理器市場上毋庸置疑的霸主,ARM則是在移動終端市場發展起來的新興霸主。英特爾專注高性能,為個人用戶、企業使用者提供出色的性能支援;ARM則專注低功耗,為手機和平板用戶帶來超長待機。這兩個看似沒有交集的企業為何會發展成如今對立局面呢?
  技術發展是兩家公司直接競爭的主要原因,在Web2.0時代,Facebook、穀歌這些公司的崛起使得資料中心三大核心技術發生了改變,三大核心技術指的是:計算、存儲和網路
ARM是如何滿足資料中心需求的?
  低功耗是ARM處理器的一個優勢,但是在面向企業級領域的時侯,其發現並沒有64位架構處理器,於是在20121031ARM推出新款ARMv8架構ARMCortex-A50處理器系列產品,來滿足企業級級市場應用的需求。
  而為了彌補自己在企業級市場的經驗劣勢,ARM還拉攏了原本跟英特爾同一陣營的AMDAMD在伺服器領域積累的相當的成功經驗,其擁有業界領先的64位元微處理器技術以及廣泛的智慧財產權組合與OEMODMISV合作的經驗,將促進ARM在資料中心領域的擴展,滿足資料中心領域的特定需求。

一、性能:
    X86結構的電腦論如何都比ARM結構的系統在性能方面要快得多、強得多。X86CPU隨便就是1G以上、雙核、四核大行其道,通常使用45nm(甚至更高級)制程的工藝進行生產;而ARM方面:CPU通常是幾百兆,最近才出現1G左右的CPU,制程通常使用不到65nm制程的工藝,可以說在性能和生產工藝方面ARM根本不是X86結構系統的對手。
ARM的優勢不在於性能強大而在於效率,ARM採用RISC流水線指令集,在完成綜合性工作方面根本就處於劣勢,而在一些任務相對固定的應用場合其優勢就能發揮得淋漓盡致。 

二、擴展能力
    X86結構的電腦採用的方式與擴展設備(如:硬碟、記憶體等)進行連接,而且x86結構的電腦出現了近30年,其配套擴展的設備種類多、價格也比較便宜,所以x86結構的電腦能很容易進行性能擴展,如增加記憶體、硬碟等。
ARM結構的電腦是通過專用的資料介面使CPU與資料存放裝置進行連接,所以ARM的存儲、記憶體等性能擴展難以進行(一般在產品設計時已經定好其記憶體及資料存儲的容量),所以採用ARM結構的系統,一般不考慮擴展。基本奉行夠用就好的原則。

三、作業系統的相容性
    X86系統由微Intel構建的Wintel聯盟一統天下,壟斷了個人電腦作業系統近30年,形成巨大的用戶群,也深深固化了眾多用戶的使用習慣,同時x86系統在硬體和軟體發展方面已經形成統一的標準,幾乎所有x86硬體平臺都可以直接使用微軟的視窗系統及現在流行的幾乎所有工具軟體,所以x86系統在相容性方面具有無可比擬的優勢。
ARM系統幾乎都採用Linux的作業系統,而且幾乎所有的硬體系統都要單獨構建自己的系統,與其他系統不能相容,這也導致其應用軟體不能方便移植,這一點一直嚴重制約了ARM系統的發展和應用。GOOGLE開發了開放式的Android系統後,統一了ARM結構電腦的作業系統,使新推出基於ARM結構的電腦系統有了統一的、開放式的、免費的作業系統,為ARM的發展提供了強大的支援和動力。

四、軟體發展的方便性及可使用工具的多樣性
   X86結構的系統推出已經近30年,在此期間,x86電腦經過飛速發展的黃金時期,使用者的應用、軟體配套、軟體發展工具的配套及相容等工作,已經到達非常成熟甚至可以說是完美的境界。所以使用X86電腦系統不僅有大量的協力廠商軟體可供選擇,也有大量的軟體程式設計工具可以説明您完成您所希望完成的工作。
Arm結構的電腦系統因為硬體性能的制約、作業系統的精簡、以及系統相容等問題的制約,造成Arm結構的電腦系統不可能像X86電腦系統那樣有眾多的程式設計工具和協力廠商軟體可供選擇及使用,ARM的程式設計語言大多採用CJAVA
對這一點的比較,更直接的結論是:基於x86結構電腦系統平臺開發軟體比arm結構系統更容易、更簡單、實際成本也更低,同時更容易找到協力廠商軟體(免去自己開發的時間和成本),而且軟體移植更容易。
從以上對比分析,給了我們的一個很清晰的感覺,ARMX86結構的電腦根本就無法對比,ARM根本就不是X86電腦的的對手。是的,如果只考慮上述幾個方面的要數,ARM確實無法與X86電腦競爭,甚至連比較的資格都沒有。但是近12年,ARM的產品在終端應用特別是手持終端應用飛速發展(如:智慧手機、平板電腦等),其銷售數量已經遠遠超出x86結構的電腦銷售數量,可見ARM是具有其與X86結構電腦不可對比的優勢。該優勢就是:功耗.

五、功耗
    X86電腦因考慮要適應各種應用的需求,其發展思路是:性能+速度。20多年來x86電腦的速度從原來8088的幾M發展到現在隨便就是幾G,而且還是幾核,其速度和性能已經提升了千、萬倍,技術進步使x86電腦成為大眾生活中不可缺少的一部分。但是x86電腦發展的方向和模式,使其功耗一直居高不下,一台電腦隨便就是幾百瓦,即使是號稱低功耗節能的手提電腦或上網本,也有十幾、二十多瓦的功耗,這與ARM結構的電腦就無法相比。

ARM的設計及發展思路是:滿足某個特殊方面的應用即可,在某一專項領域是最強的,(哪怕在其他方面一無是處),這樣Arm以其不是最強的技術,同樣也不是很高級制程的製造工藝,生產出性能不是很強的電腦系統,但在某個專業應用方面則是最好的,特別是在眾多終端應用,尤其在移動終端應用上佔有絕對優勢的統治地位,這個原因就是:功耗。

高功耗導致了一系列X86系統無法解決的問題出現:系統的續航能力弱、體積無法縮小、穩定性差、對使用環境要求高等問題。從這裡我們可以看到x86系統與ARM系統是在兩個完全不同領域方面的應用,他們之間根本不存在替換性,在伺服器、工作站以及其他高性能運算等應用方面,是可以不考慮功耗和使用環境等條件時,X86系統占了優絕對優勢;但受功耗、環境等條件制約且工作任務固定的情況下ARM就佔有很大的優勢,在掌上型移動終端領域,X86的功耗更使他英雄毫無用武之地。

     但在很多的應用終端領域,現正成為兩大陣營爭奪的重點,ARM陣營努力增加其性能和系統(特別是作業系統)的通用性,蠶食x86系統的部分終端應用市場;X86陣營努力降低功耗保住其市場,同時侵入手持移動終端市場。


STM32單片機硬件關鍵基礎精華及注意事項

 STM32單片機硬件關鍵基礎精華及注意事項

轉載自 自動化論壇 [http://www.autooo.net/]
STM32簡單介紹
  一、背景
  如果你正為項目的處理器而進行艱難的選擇:一方麵抱怨16位單片機有限的指令和性能,另一方麵又抱怨32位處理器的高成本和高功耗,那麼,基於 ARM Cortex-M3內核的STM32係列處理器也許能幫你解決這個問題。使你不必在性能、成本、功耗等因素之間做出取舍和折衷。
  即使你還沒有看完STM32的產品手冊,但對於這樣一款融合ARMST技術的“新生兒”相信你和我一樣不會擔心這款針對16MCU應用領域 的32位處理器的性能,但是從工程的角度來講,除了芯片本身的性能和成本之外,你或許還會考慮到開發工具的成本和廣泛度;存儲器的種類、規模、性能和容 量;以及各種軟件獲得的難易,我相信你看完本專題會得到一個滿意的答案。

  對於在16MCU領域用慣專用在線仿真器(ICE)的工程師可能會擔心開發工具是否能夠很快的上手?開發複雜度和整體成本會不會增加?產品上 市時間會不會延長?沒錯,對於32位嵌入式處理器來說,隨著時鍾頻率越來越高,加上複雜的封裝形式,ICE已越來越難勝任開發工具的工作,所以在32位嵌 入式係統開發中多是采用JTAG仿真器而不是你熟悉的ICE。但是STM32采用串行單線調試和JTAG,通過JTAG調試器你可以直接從CPU獲取調試 信息,從而將使你的產品設計大大簡化,而且開發工具的整體價格要低於ICE,何樂而不為?
  有意思的是STM32係列芯片上印有一個蝴蝶圖像,據ST微控製器產品部Daniel COLONNA先生說,這是代表自由度,意在給工程師一個充分的創意空間。我則“曲解”為預示著一種蝴蝶效應,這種蝴蝶效應不僅會對方案提供商以及終端產 品供應商帶來舉足輕重的影響,而且會引起競爭對手策略的改變……翅膀已煽動,讓我們一起靜觀其變!

二、STM32市麵上流通的型號
  截至201071日,市麵流通的型號有:
  基本型:STM32F101R6STM32F101C8STM32F101R8STM32F101V8 STM32F101RBSTM32F101VB
  增強型:STM32F103C8STM32F103R8STM32F103V8STM32F103RBSTM32F103VBSTM32F103VESTM32F103ZE
  三、STM32係列的作用
  ARM公司的高性能”Cortex-M3”內核
  1.25DMips/MHz,而ARM7TDMI隻有0.95DMips/MHz
  一流的外設
  1μs的雙12ADC4兆位/秒的UART18兆位/秒的SPI18MHzI/O翻轉速度
  低功耗
  在72MHz時消耗36mA(所有外設處於工作狀態),待機時下降到2μA
  最大的集成度
  複位電路、低電壓檢測、調壓器、精確的RC振蕩器等
  簡單的結構和易用的工具
  四、STM32F10x重要參數
  2V-3.6V供電
  容忍5VI/O管腳
  優異的安全時鍾模式
  帶喚醒功能的低功耗模式
  內部RC振蕩器
  內嵌複位電路
  工作溫度範圍:-40℃至+85℃或105
  五、性能特點
  基本型STM32F10136MHz CPU,多達16K字節SRAM1x12ADC溫度傳感器
  增強型STM32F10372MHz CPU,多達20K字節SRAM2x12ADC 溫度傳感,PWM定時器,CANUSB

  六、STM32互聯型係列簡介:
  全新STM32互連型(Connectivity)係列微控製器增加一個全速USBOTG)接口,使終端產品在連接另一個USB設備時既可以 充當USB主機又可充當USB從機;還增加一個硬件支持IEEE1588精確時間協議(PTP)的以太網接口,用硬件實現這個協議可降低CPU開銷,提高 實時應用和聯網設備同步通信的響應速度。
  全新互連型係列還是STM32家族中首款集成兩個CAN2.0B控製器的產品,讓開發人員能夠研製可連接兩條工業標準CAN(控製器區域網)總 線的網關設備。此外,新係列微控製器還支持以太網、USB OTGCAN2.0B外設接口同時工作,因此,開發人員隻需一顆芯片就能設計整合所有這些外設接口的網關設備。
  STM32互連型係列產品強化了音頻性能,采用一個先進的鎖相環機製,實現音頻級別的I2S通信。結合USB主機或從機功能,STM32可以從 外部存儲器(U盤或MP3播放器)讀取、解碼和輸出音頻信號。設計人員還可以在新係列微控製器上開發人機界麵(HMI)功能,如播放和停止按鍵,以及顯示 器界麵。這個功能使其可用於各種家庭音響設備,如音響底座係統、鬧鍾/音樂播放器和家庭影院。
  新係列產品整合先進的麵向連接的外設,標準的STM32外設(包括一個PWM定時器),高性能的32ARM Cortex-M3 CPU,這些特性使開發人員可以在設備上(如家電、樓宇或工業自動化)整合多種功能,如馬達控製、用戶界麵控製和設備互連功能。其它目標應用包括需要聯 網、數據記錄或USB外設擴展功能的係統,如病患監視、銷售終端機、自動售貨機和保安係統。
  包括新的互連型係列在內的STM32係列微控製器具有多種配套軟件和開發工具,其中包括意法半導體免費提供的軟件庫以及第三方工具廠商的廣泛支持。意法半導體還將推出一個新的評估板,目前正在向大客戶提供STM32F105STM32F107互連型係列的樣片。
七、STM32新係列產品的功能:
  STM32互連型係列產品分為兩個型號:STM32F105STM32F107STM32F105具有USB OTG CAN2.0B接口。STM32F107USB OTG CAN2.0B接口基礎上增加了以太網10/100 MAC模塊 。片上集成的以太網MAC支持MIIRMII,因此,實現一個完整的以太網收發器隻需一個外部PHY芯片。隻使用一個25MHz晶振即可給整個微控製器 提供時鍾頻率,包括以太網和USB OTG外設接口。微控製器還能產生一個25MHz50MHz的時鍾輸出,驅動外部以太網PHY層芯片,從而為客戶節省了一個附加晶振。
  音頻功能方麵,新係列微控製器提供兩個I2S音頻接口,支持主機和從機兩種模式,既用作輸入又可用作輸出,分辨率為16位或32位。音頻采樣頻 率從8kHz96kHz。利用新係列微控製器強大的處理性能,開發人員可以用軟件實現音頻編解碼器,從而消除了對外部組件的需求。
  把U盤插入微控製器的USB OTG接口,可以現場升級軟件;也可以通過以太網下載代碼進行軟件升級。這個功能可簡化大型係統網絡(如遠程控製器或銷售終端設備)的管理和維護工作。
  八、充分發揮 STM32架構的優勢:
  除新增的功能強化型外設接口外,STM32互連係列還提供與其它STM32微控製器相同的標準接口,這種外設共用性提升了整個產品家族的應用靈 活性,使開發人員可以在多個設計中重複使用同一個軟件。新STM32的標準外設包括10個定時器、兩個121-Msample/s 模數轉換器 (交錯模式下2-Msample/s)、兩個12位數模轉換器、兩個I2C接口、五個USART接口和三個SPI端口。新產品外設共有12DMA通道, 還有一個CRC計算單元,像其它STM32微控製器一樣,支持96位唯一標識碼。
  新係列微控製器還沿續了STM32產品家族的低電壓和節能兩大優點。2.0V3.6V的工作電壓範圍兼容主流的電池技術,如鋰電池和鎳氫電 池,封裝還設有一個電池工作模式專用引腳Vbat。以72MHz頻率從閃存執行代碼,僅消耗 27mA電流。低功耗模式共有四種,可將電流消耗降至兩微安。從低功耗模式快速啟動也同樣節省電能;啟動電路使用STM32內部生成的8MHz信號,將微 控製器從停止模式喚醒用時小於6微秒。
  九、存儲器和封裝選項:
  在STM32F105STM32F107互連型係列微控製器之前,意法半導體已經推出STM32基本型係列、增強型係列、USB基本型係列和 增強型係列;新係列產品沿用增強型係列的72MHz處理頻率。內存包括64KB256KB閃存和 20KB64KB嵌入式SRAM。新係列采用LQFP64LQFP100LFBGA100三種封裝,不同的封裝保持引腳排列一致性,結合STM32 平台的設計理念,開發人員通過選擇產品可重新優化功能、存儲器、性能和引腳數量,以最小的硬件變化來滿足個性化的應用需求。

  STM32硬件關鍵設計精華集錦
  如何保證ADC精度之STM32ADC
  共有最多3ADC模塊,最多21ADC輸入通道
  特性
  12位分辨率
  自校準
  轉換結束,注入轉換結束和發生模擬看門狗事件時產生中斷
  帶內嵌數據一致的數據對齊
  非常豐富的操作模式
  雙重模式(帶2個或以上ADC的器件)
  ADC轉換時間:
  1μsADC時鍾為14MHz時達到最快
  14個時鍾周期,轉換周期可調:14202641546884252
  ADC供電要求:2.4V~3.6V
  ADC輸入範圍:VREF-VINVREF+
  規則通道轉換期間有DMA請求產生
  模擬看門狗

  ADC輸入通道映射

  STM32的雙ADC操作模式



  ADC的誤差種類
  (1) 理想ADC轉換曲線
  (2) 實際ADC轉換曲線
  (3) 實際ADC兩終點連線

  ET 總誤差:實際ADC轉換曲線與理想曲線間的最 大偏離
  EO 偏移誤差:實際轉換曲 線上第一次躍遷與理想 曲線中第一次躍遷之差
  EG 增益誤差:實際轉換曲 線上最後一次躍遷與理 想曲線中最後一次躍遷 之差
  ED 微分線性誤差:實際轉 換曲線上步距與理想步 距(1LSB)之差
  EL 積分線性誤差:實際轉 換曲線與終點曲線間最 大偏離

  消除影響ADC精度的因素1
  1ADC模塊自身的誤差
  積分線性誤差(ILE)和微分線性誤差(DLE)依賴於ADC模塊的設計,校準它們是困難的。進行多次轉換再做平均可以減小它們的影響。偏移和增益誤差可以簡單地使用ADC模塊的自校準功能補償。
  2、電源噪聲,尤其是開關電源(SMPS)的高頻噪聲
  線性穩壓器具有較好的輸出。強烈建議在整流輸出端連接濾波電容。如果使用開關型電源,建議使用一個線性穩壓器為模擬部分供電。建議在電源線和地 線之間連接具有良好高頻特性的電容,即在靠近電源一端應放置一個0.1μF和一個1~10μF的電容。每一對VDDVSS管腳都需要使用單獨的去藕電 容。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+引腳的產品),使用一個外部的前級放大器。
  4I/O引腳間的串擾(臨近數字信號的翻轉)
  模擬信號線的周圍布置地線產生屏蔽,能有效地減小串擾幹擾噪聲。
  消除影響ADC精度的因素4


  VDDVDDA的處理
  供電引腳
  STM32共有7種封裝規格,共有多組VDD/VSS引腳,以及一組VDDA/VSSA引腳。

  盡管所有VDD和所有VSS在內部相連,在芯片外部仍然需要連接上所有的VDDVSS。因為導線較細,內部連接負載能力較差,抗幹擾的能力也較差,如果漏接VDDVSS,容易造成內部線路損壞,同時抗幹擾能力下降。
  VDDVSS的去藕電容
  每對VDDVSS都必須在盡可能靠近芯片處分別放置一個10nF~100nF的高頻瓷介電容。在靠近VDD3VSS3的地方放置一個4.7μF~10μF的鉭電容或瓷介電容。



  VDDVDDA的關係
  VDDA為所有的模擬電路部分供電,包括:

  ADC模塊,複位電路,PVD(可編程電壓監測器),PLL,上電複位(POR)和掉電複位(PDR)模塊,控製VBAT切換的開關等。即使不 使用ADC功能,也需要連接VDDA,強烈建議VDDVDDA使用同一個電源供電。VDDVDDA之間的電壓差不能超過300mVVDDVDDA 應該同時上電或調電。
  供電方案

  如何達到最優功耗水準
  低功耗模式



  I/O引腳的處理
  1、如果需要減小I/O端口的電流消耗,可以根據具體情況配置I/O端口的狀態:
  輸入端口????配置為浮空輸入,帶外部上拉的輸出端口????配置為推挽輸出並輸出’1’,,帶外部下拉的輸出端口????配置為推挽輸出並輸出’0’。
  2、未用的內部外設:
  保持為關閉和默認的複位狀態:
  不要進行重映射,複位寄存器RCC_APB1RSTRRCC_APB2RSTR。關閉對應的時鍾,時鍾使能寄存器:RCC_AHBENRRCC_APB2ENRRCC_APB1ENR
  進入SLEEP模式的省電操作
  1、為了降低係統功耗,進入SLEEP模式時,執行如下操作流程:
  關閉無需等待中斷或事件的外設時鍾;設置進入機製(Sleep-NowSleep-on-Exit);設置係統進入SLEEP模式。
  2、退出睡眠模式的方式:
  WFI(等待中斷),可由任一外設中斷觸發,WFE(等待事件),可由任一外設事件觸發。
  進入STOP省電模式的操作
  為了降低係統功耗,進入STOP模式的操作流程:
  關閉設置為普通IO功能的GPIO口時鍾;
  關閉已開啟時鍾的外設的使能位(尤其是ADCDACUSB等帶模擬模塊的外設);
  關閉已開啟時鍾的外設的時鍾;
  關閉預取緩衝區,並將Flash等待周期置為0
  設置PWR_CRLPDS位選擇電壓調節器的模式:
  正常模式:電壓調節器處於正常供電狀態;
  低功耗模式:可降低電壓調節器自身的功耗,
  將MCUSTOP模式喚醒的時間有所增加;
  設置係統進入STOP模式。
  退出STOP省電模式的操作
  1、退出停止模式:
  以WFI進入時:任意外部中斷線的中斷;
WFE進入時:任意外部中斷線的事件;
  不包括PVDUSB喚醒事件。
  2、從STOP模式恢複後,時鍾的配置返回到複位時的狀態(係統時鍾為HSI),用戶程序必須重新配置整個時鍾係統,包括PLL

  如何獲得高精度的RTC
  STM32使用Pierce振蕩器,原理圖及重要參數如下:



  三個步驟選擇一個合適的LSE
  第一步:增益裕量(Gainmargin)計算
  選擇一個晶振(參考MCU的數據手冊確定晶振的頻率)
  計算晶振的增益裕量(Gainmargin)並檢查其是否大於5
  如果Gainmargin 5,說明這不是一個合適的晶振,應當再挑選一個低ESR值和低CL值的晶振,重新第一步。如果Gainmargin 5,進行第二步。
  第二步:外部負載電容的計算
  計算CL1CL2的值,並檢查標定為該計算值的電容是否能在市場上獲得。如果能找到容值為計算值的電容,則晶振可以在期望的頻率正常起振。然後轉到第三步。
  如果找不到容值為計算值的電容:
  該應用對頻率要求很高,你可使用一個可變電容並將其調整到計算值,然後轉到第三步。如果對頻率的要求不是特別苛刻,選擇市場上能獲得的電容中容值距計算值最近的電容。
  第三步:驅動級別及外部電阻的計算
  計算驅動級別DL並檢查其是否大於DLcrystal
  如果DL DLcrystal,沒必要使用外部電阻,祝賀你,你找到了合適的晶振。如果DL DLcrystal,你應該計算RExt 使其確保DL DLcrystal 並據此重新計算Gainmargin。如果Gainmargin 5,祝賀你,你找到了合適的晶振。如果Gainmargin 5,你別無選擇,再重新挑選另外一個晶振吧。然後重新回到第一步。
  ST推薦的LSE型號
  對於STM32™的LSE部分,推薦使用CL7pF的晶振(過大的CL會導致過大的gmcrit,從而無法保證足夠的增益裕量)。



  RTC是一個計數器,對輸入時鍾分頻、計數、比較

  RTC的校準
  設置BKP_RTCCR寄存器,每2201048576)個時鍾周期中,減去相應周期數,每個單位能實現0.9541000000/220 ppm的精度校準,BKP_RTCCR寄存器取值範圍0-127,時鍾可以調慢0 -121 ppm

  對於32768Hz晶振,可補償頻偏範圍為:32768Hz fLSE 32772Hz ????調慢,設置RTC預分頻寄存器RTC_PRLH / RTC_PRLL
  例如:由預設值32768調整為32766,再設置BKP_RTCCR寄存器,此時,對於32768Hz晶振,可補償頻偏範圍:



  複位電路
  外部複位信號低脈衝至少保持300ns,係統複位信號不影響備份區域的工作,NRST複位引腳是CMOS工藝的開漏電路。在產生內部複位信號時,NRST引腳會輸出一個低電平。

  SWJ調試電路
  SWJ電路設計及注意事項



  調試燒錄失敗的常見原因
  1、目標芯片沒有正確連接,不能正常工作:
  解決方法:確保目標板的最小係統正確連接,芯片能正常工作:VDDVDDAVSS VDDS已全部正確連接,複位電路能夠可靠複位,各複位源不互相影響。
  2、芯片內原先燒錄的代碼影響了新的調試操作:
  芯片內原先燒錄的代碼出錯,芯片上電運行,進入未定義狀態,不能進入調試模式。芯片內原先燒錄的代碼啟動了某些外設,或者將SWJ引腳配置為普通I/O口。
  解決方法:選擇芯片的BOOT0/BOOT1引腳從RAM啟動,或先擦除芯片內代碼。
  3、芯片已被讀/寫保護:
  調試工具不能讀寫芯片內置的Flash
  解決方法:先使用調試工具解除芯片的讀/寫保護。



  STM32硬件電路設計注意事項
  STM32的基本係統主要涉及下麵幾個部分:
  1、電源
  1)、無論是否使用模擬部分和AD部分,MCU外圍出去VCCGNDVDDAVSSAVref(如果封裝有該引腳)都必需要連接,不可懸空;
2)、對於每組對應的VDDGND都應至少放置一個104的陶瓷電容用於濾波,並接該電容應放置盡量靠近MCU
  2、複位、啟動選擇
  1)、Boot引腳與JTAG無關。其僅是用於MCU啟動後,判斷執行代碼的起始地址;
  2)、在電路設計上可能Boot引腳不會使用,但要求一定要外部連接電阻到地或電源,切不可懸空;
  3、調試接口
  4ADC
  1)、ADC是有工作電壓的,且與MCU的工作電壓不完全相同。MCU工作電壓可以到2.0V3.6V,但ADC模塊工作的電壓在2.4V3.6V。設計電路時需要注意。
  5、時鍾
  1)、STM32上電默認是使用內部高速RC時鍾(HSI)啟動運行,如果做外部時鍾(HSE)切換,外部時鍾是不會運行的。因此,判斷最小係統是否工作用示波器檢查OSC是否有時鍾信號,是錯誤的方法;
  2)、RTC時鍾要求使用的32.768振蕩器的寄生電容是6pF,這個電容區別於振蕩器外部接的負載電容;
  5GPIO
  1)、IO推動LED時,建議盡量考慮使用灌電流的方式。
  2)、在Stop等低功耗模式下,為了更省電,通常情況下建議GPIO配置為帶上拉的輸出模式,輸出電平由外部電路決定;
  6FSMC
  1)、對應100pin144pinFSMC的功能與I2C是存在衝突的,如果FSMC時鍾打開,I2C 1的硬件模式無法工作。這在STM32F10xxx的勘誤表中是有描述的。
  ST官方推薦的幾大主流開發板的原理圖,在畫電路的時候可以做為參考依據:
  1IAR
  1)、STM32F103RBT6
  2)、STM32F103ZET6
  2MDK
  1)、STM32F103RBT6
  2)、STM32F103ZET6
  3Raisonance
  1)、STM32F103RBT6
  2)、STM32F103VET6
  4ST官方的板
  1)、STM3210E-LK
  2)、STM3210B-EVAL
  3)、STM3210E-EVAL
  4)、STM3210C-EVAL