|
| HJJourAVR 發(fā)表于ouravr AVR芯片的ISP全攻略
并行編程,最早的編程方法,功能最強大,但需要連接較多的引腳,通常需要12V~24V的高壓,以示區(qū)別,下面稱為 高壓并行編程。 ISP(In System Programmability) 在系統(tǒng)編程,簡稱為 串行下載 IAP(In Application Programing) 在應(yīng)用編程,BootLoader也是類似的意思
1 ISP雖然利用了SPI接口(例外:M64/M128為UASRT0接口,Tiny13等沒有SPI接口)的引腳,但只在復(fù)位時起作用,而且下載完成后合格的下載器會自動斷開端口的連接,對正常工作時沒有影響的( 在產(chǎn)品應(yīng)用中,下載器一定是不會一直粘在上面的)。 2 雖然高壓并行下載能修復(fù)任何熔絲位,但對于貼片封裝來說是很不現(xiàn)實的,所以ISP接口是最常用的下載方式了 3 雖然IAP是一種新的升級方法,但IAP程序本身也是要先用高壓并行下載或ISP來燒進芯片里面才行 4 Tiny13等少管腳AVR芯片因為管腳實在太少了,有ISP,但沒有[高壓并行編程]而特制了[高壓串行編程]
所以,產(chǎn)品上一般都留有ISP接口插座,或更省位置的----留6個焊盤就行了
ISP的工作前提 1 芯片沒有物理損壞 2 芯片的SPIEN熔絲位=0 使能ISP功能 3 芯片的RSTDISBL熔絲位=1 RESET引腳有效 (假如芯片有這個熔絲位) 4 線路正常---------接錯線? 短路? 5 下載器正常-------特別要考慮 連線的接觸不良問題 6 電源
運行時鐘 ISP時鐘(必須低于運行時鐘的1/4) 4096Hz <1024Hz //很變態(tài)的用法,外接32.768KHz晶體 CKDIV8 ,不過AVRISP還是提供了603Hz這個速度了 //另一簡易解決辦法是 下載時在32.768KHz晶體并聯(lián)一個1MHz晶體,雙龍的下載線就配有一個8MHz的石英晶體 32768Hz <8192Hz 128KHz < 32KHz //內(nèi)部RC128KHz 1.0MHz <250KHz //默認(rèn)值(包括8MHz CKDIV8),所以AVRISP的ISP速度多為230KHz 8.0MHz <2000KHz 16.0MHz <4000KHz 運行時鐘不等于震蕩器的頻率,因為部分AVR芯片有系統(tǒng)時鐘預(yù)分頻器,可以對震蕩器進行1~256分頻 CKDIV8熔絲位決定CLKPS位的初始值。 若CKDIV8未編程,CLKPS位復(fù)位為“0000”;若CKDIV8 已編程,CLKPS 位復(fù)位為“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
時鐘設(shè)定 ISP方案 內(nèi)部RC 選擇合適的ISP速度 外部RC 接上合適的電阻和電容,選擇合適的ISP速度。------補救: 外部時鐘源接到XTAL1 外部RC 根本就沒有什么意義,頻率精度/穩(wěn)定度不高,成本也沒有降低,所以新的AVR芯片已經(jīng)沒有這個選項了。 各位網(wǎng)友要注意的是錯誤設(shè)定后補救方法 外部晶體 接上合適的晶體,選擇合適的ISP速度。 ------補救: 外部時鐘源接到XTAL1 外部時鐘 接上合適的時鐘源,選擇合適的ISP速度。 ------補救: 外部時鐘源接到XTAL1 外部時鐘源可以是 外部(4MHz)有源晶體輸出,其他MCU的XTAL2腳,各種方波振蕩電路(NE555)輸出等
大部分AVR芯片的ISP端口是 SCK,MOSI,MISO,RESET 而M64/M128的ISP端口是 SCK, PDI, PDO,RESET 而且M64/M128出廠默認(rèn)兼容M103----熔絲位M103C=0,很多新特性不能使用,程序也可能不能正常運行 ----因為C編譯器通常默認(rèn)自動把SP指向SRAM的末端,M103=0x0FFFH, M64/M128=0x10FFH,必然出錯!
AVR的所有熔絲位均是: 1 未編程,多為不起作用的意思。 0 編程,多為 起作用的意思。 基于可編程工藝的都是這樣: PROM/EEPROM/FLASH都是出廠時和擦除后變?yōu)槿?(0xFF)的,要編程才能變成0。
|