最近,我一直在使用許多AVR芯片,并且在使用商業(yè)AVR編程器將這些代碼刻錄到這些芯片上時,遇到了一些問題。因此,我在思考為什么不構(gòu)建自己的AVR程序員并擺脫所有這些麻煩。而且,為什么不根據(jù)我的需要對其進行自定義。
今天,我們將看一下該板的設(shè)計方式,并且我將帶您了解每個組件在該設(shè)計中的工作方式。
如果您只有AVR芯片,則需要對其進行編程。最常見的方法是通過ICSP(在線串行編程器)。簡單來說,這是一塊具有6個引腳的電路板,通常具有0.1英寸的間距接頭,可以通過SPI協(xié)議與您的AVR芯片通信。另一方面,它也可以通過USB協(xié)議與您的PC通信。因此,在使用avr-gcc編譯您的C代碼之后,編程器板將直接將其發(fā)送并發(fā)送到您的AVR芯片。您可以將其視為PC和AVR芯片之間的橋梁。
我為AVR程序員進行了研究,發(fā)現(xiàn)了很多很棒的資源。這個特別引起了我的注意。這是由Ali Shtarbanov構(gòu)建的FabOptimus AVR編程器,它是在prof構(gòu)建的FabISP編程器的基礎(chǔ)上構(gòu)建的。麻省理工學院媒體實驗室的尼爾。FabOptimus文檔非常好,如果您是新手,則很容易遵循。我決定對FabOptimus AVR編程器進行非常小的修改,因為它沒有電源指示燈LED,我想添加一個!
PCB設(shè)計與電路深入分析
首先,我們需要了解該板的設(shè)計方式以及該電路中每個組件的作用。
該AVR編程器基于ATtiny44 AVR芯片,默認情況下該芯片為空白,沒有代碼或任何東西上傳到它,就像您購買的任何微控制器芯片一樣。由于我們正在構(gòu)建一個AVR編程器,因此我們需要向ATtiny44芯片上載一個非常特定的固件,以確切說明它應(yīng)該遵循和執(zhí)行的角色。簡而言之,它會將一些十六進制文件發(fā)送到其他AVR微控制器。該固件稱為FabISP固件(稍后會詳細介紹)。
因此,我們需要能夠?qū)abISP固件上載到編程器AVR芯片,然后禁用對其進行重新編程的可能性。
為了能夠?qū)abISP固件上載到編程器AVR芯片,我們需要將其復位引腳拉至LOW(0 V)。并在對其編程后禁用對其進行重新編程的可能性,我們需要將其復位引腳拉至始終為高電平(5伏)。因此,我們需要以默認情況下復位引腳為HIGH(5伏)的方式設(shè)計電路。但是,一旦連接了另一個編程器,它就可以將編程器AVR芯片復位引腳拉至LOW(0 V)。這就是為什么我們在復位引腳上使用一個10k歐姆上拉電阻的原因。
您會注意到,ATtiny44芯片復位引腳通過一個0歐姆的電阻連接到ISP引腳接頭連接器上的RST引腳。將固件上傳到ATtiny44芯片后,我們將移除該零歐姆電阻,以禁止再次對板進行重新編程的可能性。
由于我們需要使用編程器板對其他AVR板進行編程,因此我們的編程器板將需要能夠向需要編程的其他AVR板提供復位信號。因此,我們還將ATtiny44芯片的I / O引腳連接到ISP引腳標頭的RST引腳,以將復位信號提供給我們需要編程的其他AVR芯片。
為了減少電源產(chǎn)生的任何高頻噪聲或電壓降,我們在VCC(5伏)和GND之間使用1uf去耦電容。
我們還使用20MHz諧振器作為ATTiny44芯片的時鐘源,而不是內(nèi)部時鐘,以實現(xiàn)更高的精度。
我們使用兩個3.3v齊納二極管作為削波器,以將電壓從5v調(diào)節(jié)至3.3v。根據(jù)V-USB和USB規(guī)范,USB數(shù)據(jù)線上的電壓不應(yīng)超過3.3v。另外,我們在USB的D-引腳上使用了一個1.5kΩ的上拉電阻,以使其在主機側(cè)被識別為低速設(shè)備。
最后,我對原理圖進行了簡單的編輯。我在板上添加了電源指示燈LED。
最佳做法是斷開ISP引腳接頭上的VCC引腳,以確保AVR編程器不試圖為要編程的電路板供電。我們要編程的電路板應(yīng)提供自己的電源。如果我們沒有斷開ISP接頭上的VCC引腳,則AVR編程器和被編程的電路板將從USB端口(從您的計算機)汲取電流。如果您的USB端口不能提供那么多電流或在任何短路情況下,都可能對您的計算機造成很大的問題。
責任編輯:pj
-
連接器
+關(guān)注
關(guān)注
98文章
14476瀏覽量
136427 -
AVR芯片
+關(guān)注
關(guān)注
0文章
10瀏覽量
10350 -
編程器
+關(guān)注
關(guān)注
9文章
395瀏覽量
42304
發(fā)布評論請先 登錄
相關(guān)推薦
評論