Arduino是開源的,這很好。想當(dāng)年在學(xué)校時(shí),每當(dāng)考試時(shí),同學(xué)們?cè)诳紙?chǎng)上都不開源給我,所以學(xué)了BASIC、匯編、FOXBASIC、VB都跟沒有學(xué)似的,看到滿屏的字母只能笑。 這幾天忽然對(duì)atmega328P的了興趣,有位壇友也發(fā)了不少Arduino實(shí)驗(yàn)的貼子,但新買來的atmega328P大部分是沒有引導(dǎo)程序BOOT LOADER的,必須進(jìn)行燒寫。 下面說說如何燒寫。 一、初識(shí)atmega328P集成IC 新買來的328P不做特別說明的一般都是沒有引導(dǎo)程序BootLoader的,這就要先對(duì)328P進(jìn)行Boot Loader的燒寫。下面就如何燒寫進(jìn)行說明。 (一)328P兩種封裝的腳位對(duì)應(yīng)情況 atmega328P-AU封裝腳位 ![]() atmega328P—PU封裝腳位 ![]() ARDUINO 與兩種封裝腳位對(duì)應(yīng)關(guān)系 ![]() 要注意Arduino PIN和集成塊的PIN是不同的。 (二)制作一個(gè)最小系統(tǒng) 以AU為例參考圖 ![]() atmega328P-PU的最小系統(tǒng)情況 ![]() atmega328P-AU封裝的使用轉(zhuǎn)接板接出引腳 ![]() ![]() ![]() ![]() 這時(shí)開始的棚搭 ![]() 后來用面包板了 328AU的最小系統(tǒng)情況參考: ![]() 二、使用USB編程器 關(guān)鍵是設(shè)置熔絲位(FUSE)和找對(duì)相應(yīng)的HEX文件。 這里使用的是51單片機(jī)的下載器 ![]() 安裝好驅(qū)動(dòng) ![]() 與ARDUINO的接線關(guān)系 ![]() ![]() 熔絲位和HEX文件的設(shè)置在IDE的安裝目錄中的boards.txt文件中可以找到。 ![]() 1.找到相應(yīng)的熔絲位
![]() 在IDE安裝目錄中..\arduino-nightly\hardware\arduino\avr找到boards.txt文件 這個(gè)文件用寫字板打開,在“##”后可以找要燒寫的“開發(fā)板”型號(hào),下面就可以看到低位熔絲、高位熔絲、擴(kuò)展位、加密位及bootloader.file(HEX文件)。 這是Nano Old Bootloader 的情況: nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader) nano.menu.cpu.atmega328old.upload.maximum_size=30720 nano.menu.cpu.atmega328old.upload.maximum_data_size=2048 nano.menu.cpu.atmega328old.upload.speed=57600 nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex nano.menu.cpu.atmega328old.build.mcu=atmega328p 2.連接好ISP線,插好USB下載器,打開progisp,
![]() 每項(xiàng)操作,下面的白色窗口都有反饋的,最后的操作在最上現(xiàn)一行顯示。 選好片 ![]() 3.Fuse設(shè)置好要點(diǎn)“寫入”,然后點(diǎn)“讀出”,確保與寫入的一樣才算寫入了 ![]() 4.調(diào)入Flash文件。根據(jù) nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex 對(duì)應(yīng)的bootloader文件在IDE的安裝目錄中可以找到:
![]() ..\arduino-nightly\hardware\arduino\avr\bootloaders\atmega ![]() 5.檢查無誤后,點(diǎn)“自動(dòng)”,窗口最下面的“狀態(tài)”有提示的 ![]() ![]() 當(dāng)下載好后,如果在D13上接有LED,LED會(huì)閃的。(只有Nano ATmega328P (old bootloader)會(huì)閃,UNO和Nano ATmega328P是不會(huì)閃的) 三、使用arduino as ISP方式 如果手上沒有下載器,可以使用正常的Arduino UNO開發(fā)板作為燒寫器給單片機(jī)芯片燒寫B(tài)ootLoader。 在這里采用一塊Arduino UNO板作為燒寫器,講一下對(duì)328P進(jìn)行Arduino BootLoader 的燒寫。 (一)將Arduino UNO板(上位機(jī))變成個(gè)ISP設(shè)備。 1.將作為燒寫器的ArduinoUNO板通過USB線連接到電腦,打開ArduinoIDE 。 2.選擇并設(shè)置好開發(fā)板型號(hào)、處理器及COM口。(注意要選擇的型號(hào)為作為上位機(jī)的Arduino 型號(hào))
![]() 3.在工具欄選擇 —〉文件->示例—〉11.Arduino ISP —〉ArduinoISP,打開ArduinoISP程序,編譯(驗(yàn)證)、下載到UNO開發(fā)板中。 4.在工具欄選擇—〉工具—〉編程器—〉Arduino as ISP。 ![]() 到此,上位機(jī)就成了一個(gè)ISP下載器了。 (二)連接線路 連接好上位機(jī)與下位機(jī)的線,下位機(jī)的電源和地要與上位機(jī)連接。 在ArduinoISP 程序的73、85、86、87行給出了UNO板作為ISP的接線: D10—〉RESET D11—〉MOSI D12—〉MISO D13—〉SCK 對(duì)應(yīng)接線情況: ![]() 如果上位機(jī)是Nano則在reset與地接一個(gè)10UF的電容(我試過4.7-100uF都可以)。網(wǎng)上說UNO接這個(gè)電容,其實(shí)UNO不用接的。 (三)進(jìn)行燒寫 在工具欄選擇—〉工具—〉燒錄引導(dǎo)程序。 ![]() 6.等待完成 ![]() 如果是Nano ATmega328P (oldbootloader)D13上接有LED,LED會(huì)閃的。 四、驗(yàn)證 (一)使用CH340等,通過TX、RX下載程序進(jìn)行驗(yàn)證 1.電路連接: ![]() 目標(biāo)板上的RESET通過1K電阻上拉到VCC(5V)。RESET串10UF電容,接到CH340的DTR或RTS,可以自動(dòng)下載。我接的是220UF的,穩(wěn)定下載 如果沒有串電容,等IDE提示“上傳”時(shí),RESET對(duì)地短路一下也可。就是按一下復(fù)位鍵。隔壁的圖 ![]() 2.選擇并設(shè)置好開發(fā)板型號(hào)、處理器及COM口。(注意要選擇的型號(hào)為剛燒寫的Arduino 型號(hào))為了區(qū)別示例的Blink,下載了一個(gè)“SOS” (二)使用Arduino作為ISP上傳 保持上面Arduino作為ISP設(shè)備的姿勢(shì)(接線不要?jiǎng)樱?/font> 打開驗(yàn)證程序 ![]() 在工具欄選擇—〉項(xiàng)目—〉使用編程器上傳。
![]() 也可以按著shift鍵,用鼠標(biāo)點(diǎn)上傳圖標(biāo)(右箭頭)
![]() 下載成功后觀察。 當(dāng)然可能用下圖這個(gè)驗(yàn)證 ![]() 下面這個(gè)是雙燈。一個(gè)是SOS,一個(gè)是呼吸燈,同時(shí)閃 ![]() 費(fèi)心作了兩個(gè)板子進(jìn)行實(shí)驗(yàn) ![]() 下面這個(gè)上位機(jī)是NANO,所以在RESET與GND之間接了一個(gè)電容, ![]() 樓下對(duì)熔絲配置的說明,網(wǎng)上收集的 next |
|