第2讲 AVR的硬件资源

动手实践是学习单片机的最佳方法。一块单片机系统板、一款编程器、配以适合软件绝对会让你的开发事半功倍。
作为AVR的初学者,入门AVR开发是低成本的,一方面你可以从市场上购买一块成品开发板,这样可以节约一些时间,让你更加专注于单片机功能的学习和代码的编写。另一方面你也可以自己动手DIY一块AVR的系统板,这不仅会让你更加有成就感,而且还可以提高你动手实践、解决问题的能力,而这样的能力正是你日后成为一名硬件工程师所不可或缺的。本书将从DIY一块AVR系统板入手,用它来完成本书全部内容的学习和代码测试工作。 

1 搭建AVR系统板


自己动手搭建AVR系统板其实是一个既简单又有趣的过程,所需的材料也很易得。一片DIP40封装的ATmega32A单片机、一小块多孔电路板(俗称洞洞板),再配上一些电阻、电容、二极管、三极管、数码管等元器件即可成功搭建系统板。搭建AVR系统板的材料如图3-1所示,材料清单详见附录B。

材料准备好后,就可以动手搭建AVR的系统板了,系统板的电路原理图详见附录A。在搭建最小系统板时,你还需要电烙铁、万用表和镊子等工具以及焊锡丝、助焊剂等辅助材料,这些都可以在电子市场买到。搭建过程中一定要注意在板上预留ISP和JTAG接口,以便于连接基于ISP或JTAG接口的编程器或仿真器。作者自行搭建的AVR系统板如图3-2所示。
为了使板面更加简洁,我们已经将系统板的连线及部分元器件安放在了板的背面,系统板搭建好后,你需要再次认真对板的连线做一次检查,确认接线无误后就可以将单片机按照正确的引脚顺序安装到IC座上了。安装好单片机的AVR系统板及其各部分的功能如图3-3所示。你千万不要小看这样的一块系统板,它绝对可以帮助你完成本书全部内容的学习和代码测试工作。

为了确保代码的正确性,本书中所列的源代码均在AVR系统板和AVR开发平台AVR_bronco实验板上验证通过。AVR_bronco实验板是经优化的AVR单片机开发平台,可以适用于DIP40封装的megaAVR系列单片机做代码测试及开发工作,其核心同样是DIP40封装的ATmega32A单片机,实验板的外观详见附录D。 

2 AVR单片机的编程

程序源代码在PC上经编译器编译后,生成可以被单片机执行的机器码。将机器码写入单片机的过程称为对单片机的编程或烧写,AVR单片机常用的编程方式有以下三种:

1.高压/并行编程

AVR系列单片机的高压/并行编程是较早出现的编程方法,因其编程时需要连接较多的引脚所以称其为“并行编程”;在编程过程中,需要在RESET引脚上施加12V电压,所以称之为“高压编程”。此种编程方式由于涉及的引脚较多,对于贴片封装的单片机十分不便,因此目前很少采用。

2.串行编程(ISP编程)

ISP是In System Programming的缩写,意为在线系统编程。AVR单片机允许通过串行SPI总线对片内的FLASH、E2PROM、熔丝位等进行编程。串行编程是通过单片机的SPI接口实现的,使用SCK、MOSI、MISO和RESET引脚完成对芯片代码的写入。在设计硬件电路时,可以先将上述四个引脚做适当预留,当产品量产时,可以先将单片机焊接于PCB板上,之后通过预留的接口向单片机片内下载程序,即所谓的在系统编程,这样可以大大方便产品的生产和后期系统固件的升级和维护。

基于ISP编程方式的编程器有很多种,最常见的莫过于AVRISP编程器了,它的市场价格不过十几元,但却能完成大部分AVR系列单片机的编程下载任务,是目前市场上最具性价比的一类编程器。但由于此编程器推出时间较早,也存在一些缺点,如在编程时需要第三方软件的支持、对Windows 7操作系统的兼容性不好、不能在Atmel Studio 6集成开发环境中使用等。AVRISP编程器如图3-4所示。

另一种ISP编程器是由ATMEL推出的STK500,采用了ATMEL官方的固件,使其可烧写全系列的AVR单片机,并且可以自动升级以支持未来更多的单片机型号。STK500烧写速度快,支持最新的Atmel Studio 6集成开发环境,但由于其不支持USB接口,所以会给使用笔记本的用户带来一些不便。

AVRISP mkⅡ编程器是ATMEL公司开发的基于ISP编程方式的第二代产品,支持全系列AVR以及部分其他内核(如S51)单片机的编程。该编程器使用USB接口连接PC进行程序的下载,因此特别适用于当前的电脑用户。AVRISP mkⅡ编程器体积小巧,结构紧密,可以自动升级固件,与Atmel Studio 6集成开发环境无缝连接,是一种非常适合初学者使用的编程器。本书将使用此款编程器,配合Atmel Studio 6集成开发环境进行代码的编写和下载。AVRISP mkⅡ编程器如图3-5所示。


3.JTAG编程

通过AVR单片机的JTAG接口,不仅可以实现片上调试、边界扫描和测试PCB等功能,还可以完成对FLASH、E2PROM、熔丝位和锁定位的编程任务。使用JTAG接口对AVR系统单片机编程时需要使用四个引脚,即TCK、TMS、TDI和TDO。此编程方式不需要额外的12V电压,相对于SPI编程,JTAG编程方式占用了更多的I/O端口,而且一旦JTAG接口被使能,这些端口只能专用于JTAG的调试和下载,对单片机的资源会造成一定程度的浪费。基于JTAG接口的编程/仿真器有JTAG ICE和JTAG ICE mk II等多种,本教程不作进一步介绍。 

3 编程/仿真接口设计

我们已经知道,AVR单片机的编程和仿真是通过专用的接口实现的,其中ISP接口用于连接基于ISP下载方式的编程器,其接口引脚有其固定的定义,具体如图3-6所示。

ISP接口有两种不同的引脚组织形式,图中左侧的是10针的ISP接口,右侧的是6针的ISP接口,AVRISP mkⅡ编程器使用的是6针的ISP接口。在设计目标板时,如果MOSI、MISO或SCK引脚在完成ISP下载功能后还需要作为普通I/O口使用,那么就需要对这些I/O做适当的电气隔离。一个比较简单的办法就是将I/O口与驱动电路之间串联一个1kΩ左右的电阻,目标芯片与编程器引脚间则是直接连接。

另外,为了使目标芯片进入编程模式,ISP编程器在编程时需要拉低目标芯片的RESET引脚。因此,RESET引脚上外接的上拉电阻阻值应该不小于4.7kΩ,否则会导致目标芯片不能正确进入编程状态。

用于仿真调试功能的JTAG接口虽然在外观上与10针的ISP接口相同,但其引脚有自己特别的定义方式,具体如图3-7所示。

这里需要说明的是,JTAG接口的第7脚Vsupply是仿真器向目标板的供电引脚,而第4脚VTref则是目标板向仿真器反馈电压的引脚。在DIY系统板时,系统板的供电电压需要从VTref引脚反馈到仿真器,否则仿真器会因检测不到目标板的电压而提示错误信息。

 


评论:
相关文章
基于树莓派搭建小型云计算集群

拥有一个私人的云计算平台是一件很酷的事情。


Arduino 随机数

要生成随机数,可以使用Arduino随机数函数random()。


小米造“人”比特斯拉还快:首款全尺寸人形仿生机器人CyberOne发布

雷军在个人年度演讲快结束时,顺手扔出了这个王炸——全尺寸仿生人形机器人CyberOne。


Jetbot基础教程-软件环境安装

Jetbot 需要与很多周边设备互动,并且使用很多深度学习框架以及 Jupyter 交互界面进行操作,因此需要安装与调试的内容很多。


Jetbot基础教程-组装过程的注意细节

假如您的 Jetbot 小车是从外面采购第三方套件的话,可以跳过本文的内容。如果您是按照 jetbot.org 原厂的自行组装方式,那么本文所提供的一些细节点,会让您节省很多摸索的时间。


斯坦福教育理念:9种成长型思维方式

在传统的中国式教育中,有一种弊端就是灌输式教育。这样的教育观念体现在中国历史发展长河中的各行各业。师傅带徒弟的传统中,总是传承大于发扬。


数学到底在如何改变世界?

什么是数学思维?数学思维是一种通过抽象、逻辑推理和模式识别,将复杂问题分解并系统化,从而高效解决问题和做出理性决策的思考方式。在人工智能时代,抽象思维、分析能力和决策力已成为无可替代的竞争力。


Arduino 上使用红外遥控器

日常生活中我们会接触到各式各样的遥控器,电视机、空调、机顶盒等都有专用的遥控器,很多智能手机也在软硬件上对红外遥控做了支持,可以集中遥控绝大部分家用电器。本篇介绍红外遥控相关原理及应用,通过红外遥控器控制 Uno 板载 LED 灯。


MicroPython-ESP32开发环境配置(Win10+Thonny IDE)

本文介绍了如何在Win10下给ESP32烧录MicroPython的固件,以及用Thonny IDE 开发MicroPython的流程。


两大青少年编程等级考试标准全解读,看这一篇就够了!

随着国家持续推进AI与科学教育的发展,以及大量资本的入场,少儿编程教育市场呈火热趋势,目前市场上已有超过200家少儿编程公司,并且这一趋势很可能依旧延续。虽然对于孩子是否必须学编程,行业内仍存在着不同的声音,但不可否认,少儿编程正在由“非刚需”向“刚需”逐渐转变。

AVR单片机基础教程

作者:高显生   共18讲

AVR系列单片机是8位单片机中第一个真正的RISC结构单片机,它采用了大型快速存取寄存器组、快速的单周期指令系统以及单级流水线等诸多先进技术,使得AVR单片机具备了高达1MIPS/MHz的运行处理能力。