笔者并非专业电子信息的,只是想用硬件来实现一些功能,但是我认为在用一个东西的时候,有必要了解这个模块的组成,即使这里面的许多专有名词并不是很熟悉。
目录
Arduino专用微控制器
其实,arduino开发板只是一个AVR芯片的载体,所以arduino的电气特性多半指处理器的电气特性。芯片引脚直接连接arduino开发板边缘的针型端子或焊盘。芯片与开发板的连接点之间不存在缓冲或电平位移。
目前arduino采用的AVR设备的主要区别在于板载闪存的数量、最大时钟频率、芯片上I/O引脚的数目,以及可用的内部外围电路。
- 以下是arduino产品使用的AVR微控制器:
接下来将会介绍ATmega168/328
从根本上说,ATmega168与ATmega328是一样的芯片,只是带有不同大小的板载内存。
- 下图展示了ATmega168与ATmega328微控制器内部的框图:
1)内存
ATmega328中的每种内存都是ATmega168的两倍,除此之外,两者完全相同。
- 以下是ATmega168/328板载内存:
2)特性
ATmega168/328拥有如下特性:
- 支持片上启动程序的系统内编程(in-system programming by on-chip boot program)
- 2个8位定时器/计数器,带有独立预分频器和比较模式
- 1个16位定时器/计数器,带有独立预分频器、比较模式和捕获模式
- 实时计数器,配有独立振荡器
- 6个PWM通道
- 6个或8个通道的10位ADC(取决于封装类型)
- USART
- 主从SPI串行接口
- 双线串行接口(兼容Philips I2C)
- 可编程看门狗定时器
- 模拟比较器
- 23个可编程I/O线路
3)封装
ATmega168与ATmega328有4种不同的封装类型可用,分别为:
- 28-pin DIP
- 28-pin MLF表面贴装
- 32-pin TQFP表面贴装
- 32-pin MLF表面贴装
其中,28-pin DIP是arduino开发板最常用的封装方式,但Uno AMD除外,它使用32-pin表面贴装方式。
这里主要介绍ATmega168的PDIP版本。
4)端口
ATmega168/328设计有3种类型的端口,分别为B、C、D。其中,端口B与D是8位端口,端口C有6个可用的引脚,它们可用作ADC输入。
每个端口提供双向独立的数字I/O,并带有可编程的内部上拉电阻。上拉电阻的on/off状态借由控制寄存器中特定的端口引脚位进行选择。
端口输出缓冲拥有对称的驱动特性,并带有汇和源的能力(sink and source capability)。
5)引脚电路
下面这张图显示了28-pin DIP封装的引脚电路:
6)模拟比较器输入
下面这张图显示使用PDIP封装的ATmega168或ATmega328的AIN0与AIN1引脚的位置。
注意,AIN0与OC0A定时器/计数器输出(PD6)共享一个引脚。所以,如果PD6被用作PWM输出,它就不能被用作AIN0输入,除非每次需要修改其功能时进行重新配置。
7)模拟输入
除了用于TWI串行通信的SCL与SDA引脚之外,模拟输入引脚也可以用作独立的数字I/O,或者用作模拟输入,不与AVR其他周边电路发生冲突。下面这张图显示ATmega168的PDIP封装的引脚,它们被用作模拟输入。
8)串行接口
下面显示了ATmega168(PDIP封装)的I/O引脚,串口电路会使用它们。由于没有串行电路共享端口引脚,所以3种类型都可以使用,不会发生端口冲突。
9)定时器/时钟I/O
ATmega168/328的内部定时器/计数器逻辑相当复杂,这反映在芯片的引脚分配上,下面这张图展示了ATmega168/328微控制器定时器/计数器引脚:
注意OCxn引脚(OC0A、OC0B、OC1A、OC1B、OC2A、OC2B)可以用作PWM输出,并且在arduino开发板上都被打上了标签。还要注意T1与OSC0B共用相同的引脚(PD5),但也可以使用其他具有PWM能力的输出,且不会与其他定时器/计数器电路发生冲突。
10)外部中断
端口D的PD2与PD3引脚特意被用作外部中断输入。
11)arduino引脚分配
ATmega168/328引脚的arduino标签:
其中,主要强调的是最常用的功能,比如独立的数字I/O、模拟输入、以及AVR控制器的PWM输出能力。
12)基本电气特征
下图展示了ATmega168/328微控制器的一些基本电气特征,重点强调的是电力消耗:
参考:
- Arduino:A Technical Reference John M. Hughes
- Atmel官网:https://www.microchip.com/ 因为Atmel被micropchip收购了
- 官方pdf文档位置:http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf