<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32單片機串口一鍵下載電路與操作方法詳解

          STM32單片機串口一鍵下載電路與操作方法詳解

          作者: 時間:2018-08-01 來源:網(wǎng)絡 收藏

          在此介紹STM32串口一鍵下載電路與操作方法詳解。

          本文引用地址:http://www.ex-cimer.com/article/201808/384877.htm

          STM32三種啟動模式對應的存儲介質均是芯片內(nèi)置的,它們是:

          1)用戶閃存 = 芯片內(nèi)置的Flash。

          2)SRAM = 芯片內(nèi)置的RAM區(qū),就是內(nèi)存啦。

          3)系統(tǒng)存儲器 = 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時在這個區(qū)域預置了一段Bootloader,就是通常說的ISP程序。這個區(qū)域的內(nèi)容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區(qū)。

          要了解STM32的幾種啟動模式.

          BOOT0接GND,BOOT1接GND.那就是正常的啟動模式,從flash加載代碼.

          而BOOT0接V3.3,BOOT1接GND.則是ISP模式,也就是串口更新代碼.

          其次,你要了解STM32 ISP下載代碼的過程.

          首先BOOT0接V3.3,然后復位STM32.STM32就會加載ISP代碼(固化存儲在內(nèi)部),從而進入ISP模式.此時便可以通過串口下載程序了.

          最后再來看看一鍵下載是怎么實現(xiàn)的呢?

          從原理圖可知:DB9串口的RTS控制BOOT0,DTR控制RST.

          我們要達到下載的目的,就必須先讓RTS拉高BOOT0(設置BOOT0為1),然后再讓DTR控制RST為低(STM32為低電平復位).然后再釋放RTS為高(停止復位),然后再開始串口下載代碼(此時BOOT0可以為高,也可以為低).

          所以我們看到mcuisp連接過程是:

          DTR電平置高(3-12V),復位(DTR接了RST)

          RTS置低(-3--12V),選擇進入BootLoader(RTS接了BOOT0)

          ...延時100毫秒

          RTS電平變高(+3-+12V)釋放復位(釋放復位,但是此時BOOT0為高,所以進入ISP模式)

          開始連接...4, 接收到:1F (連接成功)

          在串口COM0連接成功@230400bps,耗時437毫秒

          DTR維持高

          【需要注意的是 DTR_N是DTR的反相電平 RTS_N是RTS的反相電平】

          注:此電路不需要USB轉串口芯片,只要一個普通的DB9串口就可以完成程序下載工作。對于那些只有串口的控制板無疑是一個完美的選擇。

          • STM32中文官網(wǎng)
          • STM32單片機官方開發(fā)工具
          • STM32單片機參考設計


          關鍵詞: 單片機

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();