Arduino Pro Mini是基於ATmega328的微控制板,支持5V/3.3V電壓。可是咱們比較容易買到的是5V供電的版本,有的時候須要用到3.3V版本(好比咱們的軟控DAC)。怎樣才能讓這款闆闆支持3.3V電壓呢。編程
思路測試
把5V的Arduino改形成3.3V版本,實際上就是提出了一個問題:5V的Arduino和3.3V版本有什麼不一樣?ui
實際上AtMega328P能夠支持很寬的電壓範圍。可是在不一樣工做電壓下,能夠跑到的最大主頻是不一樣的。spa
在5V下能夠跑到16MHz,而在3.3V下只能跑到8MHz。因此咱們首先須要解決時鐘問題。3d
5V的版本配備的外置晶振是16MHz的,爲了獲得8MHz的主時鐘,咱們能夠修改熔絲位,使用328內部的8MHz RC振盪器。blog
另外,328內部還有BOD檢測,當電壓低於設置值的時候會自動停機。使用3.3V電源應該把BOD閾值修改成2.7V。擴展
最後,還要刷入支持8MHz主頻的Arduino Bootloader。軟件
這樣改造出來的Arduino,支持3.3V電源電壓,RAW腳穩壓以後仍然獲得5V電壓,Arduino自己執行不受影響。配置
可是若是把RAW的穩壓輸出用於外設供電,就要仍然使用5V的外設。所以最好是外置一個3.3V的穩壓電源供Arduino和外設使用。file
準備工做
一、 若是你歷來沒有使用過Arduino,你首先須要下載IDE。如何安裝在此不贅述。
二、 準備兩塊闆闆,一塊是咱們要刷成3.3V的Arduino Pro Mini目標板。另外一塊是用來燒寫Bootloader的AVR ISP編程器,本文使用一塊Arduino Pro Mini來製做AVR ISP編程器。(沒有特殊緣由,只由於博主恰好有兩塊Arduino Pro Mini)。
三、 一塊USB轉R232轉接板,做爲Arduino ISP編程器。最好是可選擇3.3V和5V供電電壓的,方便最後測試。
注意AVR ISP和Arduino ISP的區別。前面說的AVR ISP是用來燒Bootloader的(Bootloader其實是一個AVR程序),而這裏的Arduino ISP是用來下載Arduino程序的。
製做流程
1、製做AVR ISP
首先咱們要使用Arduino Pro Mini來製做一個AVR ISP,再用這個AVR ISP來刷目標Arduino的Bootloader。
一、進行這樣的鏈接:Arduino Pro Mini --- 鏈接RS-232 --- USB轉RS-232板 --- 鏈接USB --- 電腦
如圖所示:
注意:
1) 串口的RXD和TXD是交換鏈接的,即Arduino的RXD鏈接ISP的TXD;Arduino的TXD鏈接ISP的RXD。
2) Arduino ISP上的電源選擇5V。
二、鏈接完畢後,確認串口COM號選擇無誤。
三、在IDE的File的Examples中選擇「ArduinoISP」。這是隨Arduino IDE提供的一個Demo程序,能夠把Arduino製做成一個AVR ISP編程器。
如圖所示:
OK。如今,Upload。
2、修改目標板的熔絲位並燒寫Bootloader
以前的步驟若是你已經完成,說明你已成功的作了一個AVR ISP,接下來修改目標板的熔絲位和燒Bootloader。
Arduino IDE能夠燒寫Bootloader,同時設置熔絲位,這樣就大大方便了咱們的操做。
一、在IDE的tools的programmer中選擇「Arduino as ISP」。
如圖所示:
二、用管理員權限打開「C:\Program Files\Arduino\hardware\arduino\avr\boards.txt」,注意安裝路徑不一樣,路徑可能有差異。Anyway,咱們要修改「boards.txt」,這個文件指定了各類Arduino板的軟件配置、熔絲位和Bootloader。
對照Datasheet,咱們發現擴展熔絲位已經把BOD設爲2.7V了,這樣只須要修改時鐘便可。
找到Arduino Pro or Pro Mini (3.3V, 8MHz),(不是Pro Mini的話就找對應的板子)對照下圖修改:
擴展一下:根據Datasheet,只須要修改low_fuses的低4位爲0010,即CKSEL3~CKSEL0這4位:
二、進行這樣的鏈接:Arduino Pro Mini --- 鏈接SPI --- AVR ISP --- 鏈接RS-233 --- USB轉RS-232板 --- 鏈接USB --- 電腦
如圖所示:
注意:
1)Arduino Pro Mini目標板和AVR ISP板之間的鏈接按照ArduinoISP Demo的說明:
即:
Arduino Pro Mini目標板 AVR ISP板
Rst 10
11 11
12 12
13 13
VCC VCC
GND GND
2) Arduino ISP的電源仍然選擇5V
三、鏈接完畢後,從Arduino IDE的tool中選擇boards -> 「modified Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328」。(modified是博主本身加的,沒什麼用,爲了好找罷了)
四、上述一切工做完畢,這時,目標板已是板上的豬肉,任你宰割了。Arduino ISP實際上只起它原本的做用——USB轉RS-232和供電。
真正刷寫Bootloader的是AVR ISP,被改變的是Arduino Pro Mini目標板。而後點擊IDE的tools -> 「Burn Bootloader」。
到這步爲止,目標板的熔絲位修改爲功,Bootloader也已經刷新,即目標板已經成功變爲支持3.3V的闆闆了。
按下目標板的RST按鈕,則開始執行8MHz的Bootloader了。
3、測試一把
一、進行這樣的鏈接:Arduino Pro Mini目標板 --- 鏈接RS-232 --- USB轉RS-232板 --- 鏈接USB --- 電腦
這裏要記得把Arduino ISP的供電電壓選爲3.3V。
二、打開IDE的file的examples,選擇blink。而後Upload。
若是目標板按照預期的進行間隔1s,持續1s的閃爍。那麼,恭喜你,你已成功製做了一枚支持3.3V的Arduino Pro Mini闆闆~~