熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 嵌入式開發 >> 正文

AVR芯片的ISP全攻略

2022-06-13   來源: 嵌入式開發 
並行編程最早的編程方法功能最強大但需要連接較多的引腳通常需要V~V的高壓以示區別下面稱為 高壓並行編程
   
    ISP(In System Programmability)  在系統編程簡稱為 串行下載
   
    IAP(In Application Programing)  在應用編程BootLoader也是類似的意思
   
    ISP雖然利用了SPI接口(例外M/M為UASRT接口Tiny等沒有SPI接口)的引腳但只在復位時起作用而且下載完成後合格的下載器會自動斷開端口的連接對正常工作時沒有影響的( 在產品應用中下載器一定是不會一直粘在上面的)
   
    雖然高壓並行下載能修復任何熔絲位但對於貼片封裝來說是很不現實的所以ISP接口是最常用的下載方式了
   
    雖然IAP是一種新的升級方法但IAP程序本身也是要先用高壓並行下載或ISP來燒進芯片裡面才行
   
    Tiny等少管腳AVR芯片因為管腳實在太少了有ISP但沒有[高壓並行編程]而特制了[高壓串行編程]
   
    所以產品上一般都留有ISP接口插座或更省位置的個焊盤就行了
   
    ISP的工作前提
   
    芯片沒有物理損壞
   
    芯片的SPIEN熔絲位=    使能ISP功能
   
    芯片的RSTDISBL熔絲位= RESET引腳有效 (假如芯片有這個熔絲位)
   
    線路正常接錯線? 短路?
   
    下載器正常特別要考慮 連線的接觸不良問題
   
    電源
   
    運行時鐘      ISP時鐘(必須低於運行時鐘的/
   
    Hz        <Hz       //很變態的用法外接KHz晶體+CKDIV 不過AVRISP還是提供了Hz這個速度了
   
    //另一簡易解決辦法是 下載時在KHz晶體並聯一個MHz晶體雙龍的下載線就配有一個MHz的石英晶體
   
    Hz        <Hz
   
    KHz       < KHz       //內部RCKHz
   
    MHz       <KHz       //默認值(包括MHz+CKDIV所以AVRISP的ISP速度多為KHz
   
    MHz      <KHz
   
    MHz      <KHz
   
    運行時鐘不等於震蕩器的頻率因為部分AVR芯片有系統時鐘預分頻器可以對震蕩器進行~分頻
   
    CKDIV熔絲位決定CLKPS位的初始值
   
    若CKDIV未編程CLKPS位復位為;若CKDIV 已編程CLKPS 位復位為給出啟動時分頻因子為
   
    AVRISP可提供的ISP時鐘 KHzKHz KHzKHzKHz Hz
   
    STK可提供的ISP時鐘 MHzKHzKHzKHzKHzHz
   
    時鐘設定      ISP方案
   
    內部RC        選擇合適的ISP速度
   
    外部RC        接上合適的電阻和電容選擇合適的ISP速度補救 外部時鐘源接到XTAL
   
    外部RC 根本就沒有什麼意義頻率精度/穩定度不高成本也沒有降低所以新的AVR芯片已經沒有這個選項了
   
    各位網友要注意的是錯誤設定後補救方法
   
    外部晶體      接上合適的晶體選擇合適的ISP速度      補救 外部時鐘源接到XTAL
   
    外部時鐘      接上合適的時鐘源選擇合適的ISP速度    補救 外部時鐘源接到XTAL
   
    外部時鐘源可以是 外部(MHz)有源晶體輸出其他MCU的XTAL各種方波振蕩電路(NE)輸出等
   
    大部分AVR芯片的ISP端口是  SCKMOSIMISORESET
   
    而M/M的ISP端口是     SCK PDI PDORESET
   
    而且M/M出廠默認兼容M熔絲位MC=很多新特性不能使用程序也可能不能正常運行
   
    因為C編譯器通常默認自動把SP指向SRAM的末端M=xFFFH M/M=xFFH必然出錯!
   
    AVR的所有熔絲位均是
   
    未編程多為不起作用的意思
   
       編程多為  起作用的意思
   
    基於可編程工藝的都是這樣
   
    PROM/EEPROM/FLASH都是出廠時和擦除後變為全xFF)的要編程才能變成
   
    反過來就是了跟CE/OE/INT都是[低電平有效]一樣都是很常見
   
    在ISP模式下永遠不能訪問(修改)SPIEN位這是AVR芯片的硬件保護
   
    有獨立RESET腳的M/M/M/M在ISP模式下根本就就不會令ISP無效無論如何修改熔絲位都能恢復正常
   
    M/M/M/M/Tiny系列有RSTDISBL熔絲位可以令導致RESET失效而令ISP無法工作外其他情況都能恢復正常
   
    一般來說只要滿足ISP的工作前提再把XTAL接到一個MHz有源晶體的輸出基本是萬試萬靈的
   
    不要忘記並行高壓編程的時鐘信號也是從XTAL導入方波信號的
   
    如果有源晶振的方法不行(除了ISPEN=RSTDISBL=情況外)恐怕高壓編程也未必能奏效
   
    JTAG的影響(MMM等)
   
    JTAG能訪問 SPIEN 和 JTAGEN要是不小心同時改成SPIEN=JTAGEN=將會導致MCU鎖死需要高壓並行編程才能恢復
   
    DebugWIRE的影響(MMMT數據手冊裡面的資料不是很詳細)
   
    由於DebugWIRE使用RESET腳來通訊所以跟ISP有所沖突
   
    可以通過ISP或並行高壓編程來使能DebugWIRE功能[即DWEN=]使能DebugWIRE功能後ISP功能失效
   
    可以通過DebugWIRE來關閉DebugWIRE功能[即DWEN=]關閉DebugWIRE功能後如果RSTDISBL=SPIEN=ISP功能有效
   
    比較特殊的是 DebugWIRE調試中斷點的使用會降低Flash 數據記憶時間 DebugWIRE調試用的器件不能發給最終客戶
   
    JTAG MKII同時具備JTAG/DeubgWIRE/ISP三種功能可以輕松實現DebugWIRE/ISP的切換
   
    (軟件需要升級到版以後 即對應AVRstudio 以後版本)
   
    最新版本 JTAG MK使用說明中文pdf(
   
    設計使用debugWIRE 的系統時必須進行下面的檢查
   
    ? dW/(RESET) 的上拉電阻不得小於debugWIRE 並不需要上拉電阻
   
    ? 將 RESET 引腳與 VCC 直接連接將無法工作
   
    ? 使用debugWIRE 時必須斷開與RESET 引腳連接的電容
   
    ? 必須斷開所有的外部復位源
From:http://tw.wingwit.com/Article/program/qrs/201312/30120.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.