一文讀懂STM32的基本系統
STM32基本系統主要有下面幾個部分:
電源
無論是否使用模擬部分和AD部分,MCU外圍出去VCC和GND,VDDA、VSSA、Vref(如果封裝有該引腳)都必需要連線,不可懸空
對於每組對應的VDD和GND都應至少放置一個104的陶瓷電容用於濾波,並接該電容應放置儘量靠近MCU
用萬用表測試供電電壓是否正確,除錯時最好用數字電源供電,以便過壓或過流燒壞板子,電壓最好一步一步從進線端測試到晶片供電端
復位、啟動選擇
Boot引腳與JTAG無關。其僅是用於MCU啟動後,判斷執行程式碼的起始地址
在電路設計上可能Boot引腳不會使用,但要求一定要外部連線電阻到地或電源,切不可懸空; STM32三種啟動模式對應的儲存介質均是晶片內建的,它們是:
使用者快閃記憶體 = 晶片內建的Flash
SRAM = 晶片內建的RAM區,就是記憶體
系統儲存器 = 晶片內部一塊特定的區域,晶片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程式,這個區域的內容在晶片出廠後沒有人能夠修改或擦除,即它是一個ROM區
在每個STM32的晶片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在晶片復位時的電平狀態決定了晶片復位後從哪個區域開始執行程式,見下表:
BOOT1=x BOOT0=0 從使用者快閃記憶體啟動,這是正常的工作模式。
BOOT1=0 BOOT0=1 從系統儲存器啟動,這種模式啟動的程式功能由廠家設定。
BOOT1=1 BOOT0=1 從內建SRAM啟動,這種模式可以用於除錯。
用JTAG口或SWD模式燒寫 選擇從使用者快閃記憶體啟動。
用串列埠ISP模式燒寫程式時時選擇從系統儲存啟動
燒寫介面
如果要減小插座的數量,就用SWD模式的模擬,在這個模式下,如果用JLINK只要四根線就可以了,這四根線分別是:3.3V、GND、SWDIO、SWCLK
其中STM32的JTMS/SWDIO接JTAG口的TMS,STM32的JTCK/SWCLK接JTAG口的TCK。如果要用ULINK2,則再加多一條“NRST”,即5條。這個介面你可自行定義,在使用時用杜邦線跳接或做塊轉換介皮膚聯接模擬器與目標板即可。
在燒寫時出現了IDCODE如圖有序列號,證明燒寫介面是好的!也就是硬體除錯通了。如沒有也許焊接不過關,從新加固焊接晶片。
除錯燒錄失敗的常見原因
目標晶片沒有正確連線,不能正常工作 —— 解決方法:確保目標板的最小系統正確連線,晶片能正常工作:VDD、VDDA及VSS 、VDDS已全部正確連線,復位電路能夠可靠復位,各復位源不互相影響。
晶片內原先燒錄的程式碼影響了新的除錯操作,晶片內原先燒錄的程式碼出錯,晶片上電執行,進入未定義狀態,不能進入除錯模式。晶片內原先燒錄的程式碼啟動了某些外設,或者將SWJ引腳配置為普通I/O口 —— 解決方法:選擇晶片的BOOT0/BOOT1引腳從RAM啟動,或先擦除晶片內程式碼。
晶片已被讀/防寫,除錯工具不能讀寫晶片內建的Flash —— 解決方法:先使用除錯工具解除晶片的讀/防寫。
相關文章
- 一文讀懂支付系統
- 一文讀懂mavenMaven
- 一文讀懂ServletServlet
- 一文讀懂mysql許可權系統MySql
- 一文讀懂元宇宙的特徵元宇宙特徵
- 一文讀懂特徵工程特徵工程
- 一文讀懂 NPM 版本NPM
- 一文讀懂 Apache PulsarApache
- 一文讀懂Ka/Ks
- 一文讀懂 Data Mesh
- 一文讀懂微核心
- 一文讀懂eBPF/XDPeBPF
- 一文讀懂教育直播系統開發模式模式
- 一文讀懂比特幣的軟分叉比特幣
- 一文讀懂HyperWorks的耦合求解功能
- 一文讀懂Python中的對映Python
- 一文讀懂鴻蒙系統與安卓系統的區別鴻蒙安卓
- 一文讀懂Spring整合RedisSpringRedis
- 一文讀懂擁塞控制
- 一文讀懂:GBDT梯度提升梯度
- 一文讀懂前端快取前端快取
- 一文讀懂“負載均衡”負載
- 一文讀懂web組態Web
- 一文讀懂「雲託管」
- 一文讀懂野指標指標
- 一文讀懂Lua元表
- 一文讀懂 Kubernetes APIServer 原理APIServer
- 一文讀懂基於DL的無人駕駛視覺感知系統的應用場景視覺
- 一文讀懂DHCP的工作原理和作用
- 一文讀懂Java中的動態代理Java
- 一文讀懂Apache Flink技術Apache
- JVM(2)--一文讀懂垃圾回收JVM
- 一文讀懂系列-JVM垃圾收集JVM
- 【Flutter】一文讀懂混入類MixinFlutter
- 一文讀懂git核心工作原理Git
- 一文讀懂Kafka副本機制Kafka
- 一文讀懂鏈路追蹤
- 一文讀懂Go Http Server原理GoHTTPServer