STM32單片機在Keil5下仿真的問題攻克
\\\插播一條:文章末尾有驚喜喲~///
作為一個單片機開發人員,每天跟我們打交道的工具沒非兩種,一種是PC機上的開發環境,假如Keil MDK、IAR Embedded Workbench等等;而另外一種呢,沒非就是集程序下載、調試功能於一體的編程器、這個叫法比較混亂、也能夠叫編程器、下載器、仿真器(但我認為不叫燒錄器,燒錄器一般值批量燒錄階段所用的那種能夠快捷完成晶片批量燒錄的玩意)。後文統稱編程器。
常見的編程器有以下幾種:
1、自然是老牌Jlink了;
其實拆開市面上常見的jlink,能夠看到各種各樣的板子:
這都是從某寶上買的,標註著正版、永不掉固件的jlink,這樣的東西在我手裡壞了2個,一初始我還有毅力去找個XP系統刷一下固件,但是刷了沒幾天就又壞了,而且身邊的XP是越來越少了,想著再買一個也才幾十塊,完全沒必要浪費這個時長去刷了。當然很多人喜愛動手挑戰一下,但是當你的項目忙的不可開交,而這個時候你的編程器固件掉了,你還要跑去找個XP給他刷固件,想想都不爽。
有朋友告訴我,自己經常要去其他城市出差,調試自己的板子,SEGGER的原版太貴,只好從某寶買幾十塊的用,而且買一個又擔憂壞了耽擱事,所以每次出差至少都帶兩個,然而這個碩大的體積是在讓人不爽,出差的時候要在極其寶貴的行李空間裡放兩個jlink,也是夠了。
也有人埋怨,jlink的接口太不方便了,雖然大多數時候調試的時候,只用了四五根杜邦線截出來,然而他的接口卻保留了20腳,其中有一整排除了一個腳全是GND了。做個板子,入股只留幾個排針,那樣不好插線調試,假如想留一個和jlink一樣的接口,又覺得會顯得板子笨重,而且在一些對尺寸有嚴格要求的產品里,壓根沒有空間放下這個20腳的接口。
這時候有人提出了攻克方案,也就是下文的第二種編程器:
2、ST-LINK
可是仔細看看這個並沒有攻克JLINK的一些缺少點,接口還是笨,體積還是不小。那麼萬能的某寶上還有一種攻克方案;
各種各樣的顏色,而且價格比較便宜,十五塊左右就能搞到,嘗鮮買個試試,發現挺好用。和優盤一樣大小的身板,出差帶著也方便。但是某一天它忽然不工作了,插上之後電腦沒有人任何反應,我經過一系列的診斷,最後懷著沉重的心情給它下了死亡通知書。
然後再去買下載器,我又不想買太貴的,又想買個小體積的,想來想去,最終一次買了三四個這種小的STLINK,我知道他會壞,但是一次買好幾個就不怕他壞了,而且好幾個的價格也就是一個某版的jlink價格。
接下來沒意發現了淘寶上有一款叫做elink的玩意:
3、elink32-pro
這個東西看起來很棒,由於它集成了串口調試,而且貌似速度很快,正好我和合泰半導體這個公司有業務往來,就請合泰的相關負責人寄我一個樣品試用,試用效果很棒,唯二的缺少點就是體積太大(和jlink差不多)、價格太貴。
那麼有沒有可能和合泰達成一個協議,共有作出一款合乎以下需求的編程器(下載器、仿真器、調試器)呢?
a、能支持簡直所有32位ARM-CortexM內核單片機
b、小巧便攜
c、不掉固件
d、去掉多餘接口,只保留swd
e、增加虛擬串口功能
f、可對外供電、電流過大自動切斷
g、低老本,大多數人買得起
h、沒需驅動,即插即用
於是我和合泰的相關人員進行溝通(這個溝通大略是16年10月初始的)。
經過屢次溝通,最終確定:以elink32-pro為原型,去掉一些沒用的東西、增加相關功能、由合泰半導體提供固件,我提供硬體及出產。
溝通中爭議最多的一個問題是RST引腳是否保留。由於我們使用stlink,jlink等時經常會發生以下問題:
這個問題能夠通過一下方式攻克:
但是還有很多問題是通過開發環境配置修改所不能攻克的,這時候就須要保留RST,然後把RST接在開發板上,就能完成下載,這個功能主要是波及以下幾種使用場景:
1、swd引腳復用(例如STM32F103的PA13和PA14在程序中被設置為其他功能),這時候須要編程器能對開發板進行硬體復位。
2、晶片工作狀態為低功耗或者睡眠模式,這時候須要編程器能對開發板進行硬體復位。
所以最終探討結果是依照合泰半導體廠商提供的方案來,畢竟他們是半導體廠商,考慮問題很嚴謹、完善。
方案定稿之後,簽訂了軟體使用合同與保密合同,接下來是合泰提供帶固件的晶片,我來做整體設計並完成PCB設計、焊接調試等詳細的工作。經過一個月的時長、出了幾個樣品,經過測試發現使用不順手,等各種問題。假如第一次構思的是直接在板子上加一個usb公頭,然後就能夠插在電腦上了,但是後續使用發現,這樣不是很方便,由於這樣的話就會導致宗旨板距離電腦獨有杜邦線長度的距離,假如杜邦線太短,挪動不太方便,甚至此時有些電腦的USB口在後面,這樣不方便用戶下載程序後觀察現象。而杜邦線太長則會不穩定,很多情況下,程序沒法下載是與杜邦線連接不穩定有關係的(在使用優盤狀的STLINK時,經常由於杜邦線太長或者接觸不良導致下載失敗,後來換成航空線直接焊接上去就能夠下載,說明這種stlink的io口驅動才能欠佳)。
考慮以上的缺少點,我決定使用此時最常見的micro-USB線來連接e-Link32和PC機。於是經過改版,e-Link32變成了下面這樣(手工焊接調試版):
其中白色的SH1.0端子和右側的5P彎針都是SWD接口。為啥要增加一個SH1.0端子呢,由於在有些電路里,保留2.54的插針都是對空間的浪費,而且插針是要占用PCB的雙面,對其他布線造成了影響。所以增加了SH1.0端子接口,以後大家做板也能夠使用這樣的埠、減小板子面積,方便調試。
這個版本e-Link32我贈送給五個人進行測試,大略是從16年12月份初始測試的、到17年8月份沒有人任何問題,所以我才批量了1000個。選用的是最可靠的PCB提供商和貼片廠商,做出的板子如下:
一個產品必需有完善的文檔。在量產的階段我也進行了相關文檔的編寫
詳細文檔能夠在淘寶寶貝詳情下載。大略詳細內容如下:
另外清晰的闡述了elink32如何連接開發板和電腦:
以及如何用elink32給帶20腳jtag接口的開發板下載程序:
此時能夠說完成了當時提出的這個需求,實現了具有以下功能的調試器:
經測試,可用於但不局限於以下晶片的調試:
STM32F0,STM32F1,STM32F2,STM32F3,STM32F4,STM32F7
STM32L0,STM32L4
LPC800XX,LPC1100XXX,LPC1200XXX,LPC1300XXX,LPC1500XXX,LPC1700XXX,LPC1800XXX,LPC4000XXX,LPC4300XXX,LPC5400XXX,
K60
HT32F16XX,HT32F52XXX
NV32F100XXX
EFM32XXX
W7500
NXP iMX RT1052系列
列表有待完善。
有人提出了:帶串口的東西其實早有了,那麼你能夠去看看,網絡上也有很多教程教大家做這樣的下載器的,我能夠花一兩天時長依據教程完成這麼一個下載器,但我肯定沒有勇氣把他批量了放在市場上給大家用。一款工具性的東西須要經過長期的穩定性測試、還須要對加工工藝進行測試、這些流程都增加了產品的老本,但是卻是保證用戶買到有保證的產品的一個必需的投入。
委託西安某軍工企業進行了溫沖測試與高低溫測試。
兼容市面上絕大多數ARM Cortex-M系列單片機。
500ma3.3v對外供電電流,加自恢復二極體保駕護航。
半導體原廠提供固件與技術支持。
如何使用串口來給STM32下載程序
轉自:如何使用串口來給STM32下載程序 - whik -博客園 (cnblogs.com)如侵權,聯絡刪!!!前言第一次進修STM32的時候,不知道有調試器這個東西,所以一直是通過串口來給STM32下載程序,?
靜水流深
如何了解STM32單片機引腳的復用功能?
北島李工發表於單片機與嵌...
STM32單片機的啟動過程
STM32單片機的啟動過程分享這篇文章,談一下 STM32啟動流程。假如讀者朋友已經有過彙編相關根底,能夠夠好了解本文內容。彙編語言是比C語言更接近機器底層的程式語言,能讓我們更好的了解和?
一個發表於億配芯城商...
彩蛋:最近有同學跟我要單片機的資料,我特意花幾個月時間,總結了我10年產品研發經驗,資料包幾乎覆蓋了C語言、單片機、模電數電、原理圖和PCB設計、單片機高級編程等等,非常適合初學者入門和進階。除此以外,再含淚分享我壓箱底的22個熱門開源項目,包含源碼+原理圖+PCB+說明文檔,不是市面上打包賣的那種課程,我認為教程多未必是好事,10年前我自學快,除了自身執行力以外,還有就是教程少。不要害羞做伸手黨,等你一個小紅點。後期我也會組建一些純技術交流的小圈子,讓大家能認識更多的大佬,有個好的圈子,你對行業的認知一定是最前沿的。