新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR芯片的ISP全攻略

        AVR芯片的ISP全攻略

        作者: 時間:2012-04-27 來源:網絡 收藏

        并行編程,最早的編程方法,功能最強大,但需要連接較多的引腳,通常需要12V~24V的高壓,以示區別,下面稱為 高壓并行編程。
        (In System Programmability) 在系統編程,簡稱為 串行下載
        IAP(In Application Programing) 在應用編程,BootLoader也是類似的意思

        本文引用地址:http://www.104case.com/article/171548.htm

        1 雖然利用了SPI接口(例外:M64/M128為UASRT0接口,Tiny13等沒有SPI接口)的引腳,但只在復位時起作用,而且下載完成后合格的下載器會自動斷開端口的連接,對正常工作時沒有影響的( 在產品應用中,下載器一定是不會一直粘在上面的)。
        2 雖然高壓并行下載能修復任何熔絲位,但對于貼片封裝來說是很不現實的,所以接口是最常用的下載方式了
        3 雖然IAP是一種新的升級方法,但IAP程序本身也是要先用高壓并行下載或ISP來燒進里面才行
        4 Tiny13等少管腳因為管腳實在太少了,有ISP,但沒有[高壓并行編程]而特制了[高壓串行編程]

        所以,產品上一般都留有ISP接口插座,或更省位置的----留6個焊盤就行了


        ISP的工作前提
        1 沒有物理損壞
        2 芯片的SPIEN熔絲位=0 使能ISP功能
        3 芯片的RSTDISBL熔絲位=1 RESET引腳有效 (假如芯片有這個熔絲位)
        4 線路正常---------接錯線? 短路?
        5 下載器正常-------特別要考慮 連線的接觸不良問題
        6 電源


        運行時鐘 ISP時鐘(必須低于運行時鐘的1/4)
        4096Hz 1024Hz //很變態的用法,外接32.768KHz晶體+CKDIV8 ,不過ISP還是提供了603Hz這個速度了
        //另一簡易解決辦法是 下載時在32.768KHz晶體并聯一個1MHz晶體,雙龍的下載線就配有一個8MHz的石英晶體
        32768Hz 8192Hz
        128KHz 32KHz //內部RC128KHz
        1.0MHz 250KHz //默認值(包括8MHz+CKDIV8),所以ISP的ISP速度多為230KHz
        8.0MHz 2000KHz
        16.0MHz 4000KHz
        運行時鐘不等于震蕩器的頻率,因為部分AVR芯片有系統時鐘預分頻器,可以對震蕩器進行1~256分頻
        CKDIV8熔絲位決定CLKPS位的初始值。
        若CKDIV8未編程,CLKPS位復位為“0000”;若CKDIV8 已編程,CLKPS 位復位為“0011”,給出啟動時分頻因子為8

        AVRISP可提供的ISP時鐘 921.6KHz,230.4KHz, 57.6KHz,28.8KHz,4.0KHz, 603Hz
        STK500可提供的ISP時鐘 1.845MHz,460.8KHz,115.2KHz,57.6KHz,4.0KHz,1206Hz

        時鐘設定 ISP方案
        內部RC 選擇合適的ISP速度
        外部RC 接上合適的電阻和電容,選擇合適的ISP速度。------補救: 外部時鐘源接到XTAL1
        外部RC 根本就沒有什么意義,頻率精度/穩定度不高,成本也沒有降低,所以新的AVR芯片已經沒有這個選項了。
        各位網友要注意的是錯誤設定后補救方法
        外部晶體 接上合適的晶體,選擇合適的ISP速度。 ------補救: 外部時鐘源接到XTAL1
        外部時鐘 接上合適的時鐘源,選擇合適的ISP速度。 ------補救: 外部時鐘源接到XTAL1
        外部時鐘源可以是 外部(4MHz)有源晶體輸出,其他MCU的XTAL2腳,各種方波振蕩電路(NE555)輸出等


        大部分AVR芯片的ISP端口是 SCK,MOSI,MISO,RESET
        而M64/M128的ISP端口是 SCK, PDI, PDO,RESET
        而且M64/M128出廠默認兼容M103----熔絲位M103C=0,很多新特性不能使用,程序也可能不能正常運行
        ----因為C編譯器通常默認自動把SP指向SRAM的末端,M103=0x0FFFH, M64/M128=0x10FFH,必然出錯!


        AVR的所有熔絲位均是:
        1 未編程,多為不起作用的意思。
        0 編程,多為 起作用的意思。
        基于可編程工藝的都是這樣:
        PROM/EEPROM/FLASH都是出廠時和擦除后變為全1(0xFF)的,要編程才能變成0。
        反過來就是了,跟CE/OE/INT都是[低電平有效]一樣,都是很常見。


        在ISP模式下永遠不能訪問(修改)SPIEN位,這是AVR芯片的硬件保護
        有獨立RESET腳的M16/M32/M64/M128等,在ISP模式下根本就就不會令ISP無效,無論如何修改熔絲位,都能恢復正常。
        M8/M48/M88/M168/Tiny系列有RSTDISBL熔絲位可以令導致RESET失效而令ISP無法工作外,其他情況都能恢復正常。

        一般來說,只要滿足ISP的工作前提,再把XTAL1接到一個4MHz有源晶體的輸出,基本是萬試萬靈的。

        不要忘記,并行高壓編程的時鐘信號也是從XTAL1導入方波信號的。
        如果有源晶振的方法不行(除了ISPEN=0,RSTDISBL=0情況外),恐怕高壓編程也未必能奏效。


        JTAG的影響(M16,M32,M128等):
        JTAG能訪問 SPIEN 和 JTAGEN,要是不小心同時改成SPIEN=1,JTAGEN=1,將會導致MCU鎖死,需要高壓并行編程才能恢復。


        DebugWIRE的影響:(M48,M88,M168,T2313等,數據手冊里面的資料不是很詳細)
        由于DebugWIRE使用RESET腳來通訊,所以跟ISP有所沖突
        可以通過ISP或并行高壓編程來使能DebugWIRE功能[即DWEN=0],使能DebugWIRE功能后,ISP功能失效。
        可以通過DebugWIRE來關閉DebugWIRE功能[即DWEN=1],關閉DebugWIRE功能后,如果RSTDISBL=1,SPIEN=0,ISP功能有效。
        比較特殊的是 DebugWIRE調試中,斷點的使用會降低Flash 數據記憶時間 DebugWIRE調試用的器件不能發給最終客戶。
        JTAG MKII同時具備JTAG/DeubgWIRE/ISP三種功能,可以輕松實現DebugWIRE/ISP的切換。
        (軟件需要升級到1.09版以后 即對應AVRstudio 4.12以后版本)
        最新版本 JTAG MK2使用說明中文pdf(20051125)
        設計使用debugWIRE 的系統時,必須進行下面的檢查:
        • dW/(RESET) 的上拉電阻不得小于10kΩ。debugWIRE 并不需要上拉電阻
        • 將 RESET 引腳與 VCC 直接連接將無法工作
        • 使用debugWIRE 時必須斷開與RESET 引腳連接的電容
        • 必須斷開所有的外部復位源

        分頻器相關文章:分頻器原理
        晶振相關文章:晶振原理
        上拉電阻相關文章:上拉電阻原理


        關鍵詞: 全攻略 ISP 芯片 AVR

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 九江市| 梅河口市| 独山县| 民勤县| 高唐县| 仙居县| 子长县| 全南县| 琼结县| 禄丰县| 乐都县| 聂拉木县| 察哈| 会宁县| 黔西| 北川| 武威市| 汝南县| 唐河县| 苏州市| 平乡县| 石屏县| 高青县| 阿瓦提县| 石阡县| 灵丘县| 临高县| 偏关县| 息烽县| 安国市| 天门市| 子长县| 永康市| 确山县| 林周县| 荔波县| 灵台县| 灵武市| 镇坪县| 巴塘县| 晋宁县|