最近,我一直在使用许多AVR芯片,并且在使用商业AVR编程器将这些代码刻录到这些芯片上时,遇到了一些问题。因此,我在思考为什么不构建自己的AVR程序员并摆脱所有这些麻烦。而且,为什么不根据我的需要对其进行自定义。
今天,我们将看一下该板的设计方式,并且我将带您了解每个组件在该设计中的工作方式。
如果您只有AVR芯片,则需要对其进行编程。最常见的方法是通过ICSP(在线串行编程器)。简单来说,这是一块具有6个引脚的电路板,通常具有0.1英寸的间距接头,可以通过SPI协议与您的AVR芯片通信。另一方面,它也可以通过USB协议与您的PC通信。因此,在使用avr-gcc编译您的C代码之后,编程器板将直接将其发送并发送到您的AVR芯片。您可以将其视为PC和AVR芯片之间的桥梁。
我为AVR程序员进行了研究,发现了很多很棒的资源。这个特别引起了我的注意。这是由Ali Shtarbanov构建的FabOptimus AVR编程器,它是在prof构建的FabISP编程器的基础上构建的。麻省理工学院媒体实验室的尼尔。FabOptimus文档非常好,如果您是新手,则很容易遵循。我决定对FabOptimus AVR编程器进行非常小的修改,因为它没有电源指示灯LED,我想添加一个!
PCB设计与电路深入分析
首先,我们需要了解该板的设计方式以及该电路中每个组件的作用。
该AVR编程器基于ATtiny44 AVR芯片,默认情况下该芯片为空白,没有代码或任何东西上传到它,就像您购买的任何微控制器芯片一样。由于我们正在构建一个AVR编程器,因此我们需要向ATtiny44芯片上载一个非常特定的固件,以确切说明它应该遵循和执行的角色。简而言之,它会将一些十六进制文件发送到其他AVR微控制器。该固件称为FabISP固件(稍后会详细介绍)。
因此,我们需要能够将FabISP固件上载到编程器AVR芯片,然后禁用对其进行重新编程的可能性。
为了能够将FabISP固件上载到编程器AVR芯片,我们需要将其复位引脚拉至LOW(0 V)。并在对其编程后禁用对其进行重新编程的可能性,我们需要将其复位引脚拉至始终为高电平(5伏)。因此,我们需要以默认情况下复位引脚为HIGH(5伏)的方式设计电路。但是,一旦连接了另一个编程器,它就可以将编程器AVR芯片复位引脚拉至LOW(0 V)。这就是为什么我们在复位引脚上使用一个10k欧姆上拉电阻的原因。
您会注意到,ATtiny44芯片复位引脚通过一个0欧姆的电阻连接到ISP引脚接头连接器上的RST引脚。将固件上传到ATtiny44芯片后,我们将移除该零欧姆电阻,以禁止再次对板进行重新编程的可能性。
由于我们需要使用编程器板对其他AVR板进行编程,因此我们的编程器板将需要能够向需要编程的其他AVR板提供复位信号。因此,我们还将ATtiny44芯片的I / O引脚连接到ISP引脚标头的RST引脚,以将复位信号提供给我们需要编程的其他AVR芯片。
为了减少电源产生的任何高频噪声或电压降,我们在VCC(5伏)和GND之间使用1uf去耦电容。
我们还使用20MHz谐振器作为ATTiny44芯片的时钟源,而不是内部时钟,以实现更高的精度。
我们使用两个3.3v齐纳二极管作为削波器,以将电压从5v调节至3.3v。根据V-USB和USB规范,USB数据线上的电压不应超过3.3v。另外,我们在USB的D-引脚上使用了一个1.5kΩ的上拉电阻,以使其在主机侧被识别为低速设备。
最后,我对原理图进行了简单的编辑。我在板上添加了电源指示灯LED。
最佳做法是断开ISP引脚接头上的VCC引脚,以确保AVR编程器不试图为要编程的电路板供电。我们要编程的电路板应提供自己的电源。如果我们没有断开ISP接头上的VCC引脚,则AVR编程器和被编程的电路板将从USB端口(从您的计算机)汲取电流。如果您的USB端口不能提供那么多电流或在任何短路情况下,都可能对您的计算机造成很大的问题。
责任编辑:pj
-
连接器
+关注
关注
98文章
14476浏览量
136424 -
AVR芯片
+关注
关注
0文章
10浏览量
10350 -
编程器
+关注
关注
9文章
395浏览量
42304
发布评论请先 登录
相关推荐
评论