`
fantaxy025025
  • 浏览: 1311245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

--原创:Arduino的基于Mega2560详细介绍

 
阅读更多

=

基本知识,编写代码,需要某些功能时,可以仔细看看,找到对应的功能。

=

 

很早之前入手了一块Arduino Mega2560,当时只是认为其操作简单且更加人性化,开源方便,想了解了解。最新搞项目想用Arduino试试控制8路舵机,但网上找的Servo库大多说只支持9,10接口,很是恼火(资料怎么写就怎么搬,到底是不是只支持9,10接口有几个知道?又有几个知道为什么?)。

另外本人长期逛各种论坛,发现国内民间创客极客水平还是普遍低下的,Arduino虽说开源但国内确实找不到多少参考资料,这无形之中成了小小的阻碍,于是本人花了点时间为广大Arduino爱好者整理翻译此份资料,一是想丰富网上资源,二是以一种更加简便的方式带部分人入门。了解原理才能谈创意,不求甚解只能做个小玩家。

 

了解Arduino的最好平台当然是官网,我相信官网肯定不会遗漏自己产品最有特色的东西,因此以它为参考绝对没错。另外,必要部分辅助以百科,以及各位广大亲爱博友的资料(就不一一列举了,在此谢过)。本文以Arduino Mega 2560为基础解释,其他板子都差不多。

 

一:概述

Arduino Mega 2560是基于ATmega2560的微控制板,有54路数字输入/输出端口(其中15个可以作为PWM输出),16路模拟输入端口,4路UART串口,16MHz的晶振,USB连接口,电池接口,ICSP头和复位按钮。简单地用USB连接电脑或者用交直流变压器就能使用。

Mega 2560 是Arduino Mega系列的升级版。Mega 2560与之前的板子(最大)不同在于:它没用FTDI USB-to-serial驱动芯片,而是用ATmega16U2编程作为USB-to-serial传输器(V1版本使用8U2)。

总结如下:

控制器 ATmega2560
工作电压 5V
输入电压(推荐) 7-12V
输入电压(限制) 6-20V
数字I/0口 54 (含15路PWM输出)
模拟输入口 16
每个I/0口直流电流 40 mA
3.3v口直流电流 50 mA
闪存(Flash Memory) 256 KB(其中8 KB用作bootloader)
静态存储器(SRAM) 8 KB
EEPROM 4 KB
时钟 16 MHz



二:电源

这部分就不说了,涉及3.3v和5v供电。



三:存储器
ATmega2560有256k的闪存可存储程序(其中8kb用作bootloader),有8kb的SRAM和4kb的EEPROM(可使用 EEPROM library(点击看详细介绍)进行读写)。

(1)RAM

随机存取存储器(英文:random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。

SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积。SRAM的速度快但昂贵,一般用小容量的SRAM作为更高速CPU和较低速DRAM 之间的缓存(cache)。

 

(2)EEPROM

带电可擦可编程只读存储器--一种 掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是 以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。

 

(3)闪存(Flash Memory),EEPROM的变种:

在断电情况下仍能保持所存储的数据信息分为 NOR型与 NAND型闪存(NAND型更为普遍常见,一般说的是NAND型):

内存和NOR型闪存的基本存储单元是bit,用户可以随机访问任何一个bit的信息。

而NAND型闪存的基本存储单元是页(Page)。每一页的有效容量是512字节的倍数。 NAND型闪存以块为单位进行擦除操作(一块一块地擦)。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。一般每个块包含32个512字节的页,容量16KB;而大容量闪存采用2KB页时,则每个块包含64个页,容量128KB。 

简言之,RAM数据断电不可保存,因而常用于CPU与外设之间做缓存用;EEPROM掉电数据不丢失,用于编程读写使用;有时由于需要改写的数据量比较大,因而在EEPROM基础上出现了Flash Memory(NAND型)。我们编写好程序之后就是在bootloader引导下下载到Flash Memory里面的(因为每次程序下载都有重新刷新一个区域块来保存下载的程序,因而使用Flash Memory)。我相信新手对各种存储器都会有一定了解了。

四:输入输出
54路接口都可作为输入输出,并使用 pinMode(), digitalWrite()和digitalRead()(点击看详细介绍)功能。5v电压操作,每个接口的电流最大40mA并且接口有内置20-50千欧的上拉电阻。另外,有的接口有特殊功能。
Serial(串口):
Serial 0:0 (RX) and 1 (TX); 
Serial 1: 19 (RX) and 18 (TX);
Serial 2: 17 (RX) and 16 (TX); 
Serial 3: 15 (RX) and 14 (TX).
一共四组串口。其中Serial0也被连接到 Tmega16U2 USB-to-TTL Serial芯片(上文有介绍,我们USB连接电脑用的就是这个串口)。RX接收数据,TX传输数据。
External Interrupts(外部中断):
2 (interrupt 0), 
3 (interrupt 1),
18 (interrupt 5), 
19 (interrupt 4), 
20 (interrupt 3), 
21 (interrupt 2)。
每个引脚都可配置成低电平触发,或者上升、下降沿触发。详见 attachInterrupt()(点击看详细介绍)功能。
PWM(脉冲调制):
2~13口;
44~ 46口。
提供8位PWM输出。由 analogWrite()(点击看详细介绍)功能实现。

SPI(串行外设接口):

50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)。使用SPI  library(点击看详细介绍)库实现。

SPI,是一种高速的, 全双工, 同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线: 串行时钟线(SCLK)、 主机输入/从机输出数据线MISO、 主机输出/从机输入数据线MOSI和 低电平有效的从机选择线CS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)MOSI– SPI总线主机输出/ 从机输入(SPI Bus Master Output/Slave Input);
(2)MISO– SPI总线主机输入/ 从机输出(SPI Bus Master Input/Slave Output);
(3)SCLK –时钟信号,由主设备产生;
(4)CS – 从设备使能信号,由主设备控制(Chip select),有的IC此pin脚叫SS。
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
例:现有1,2号设备支持SPI接口,则可以都挂到主控的SPI线上,之后如果要控制1号设备,则由主控发送CS=1号,选中1号设备,那么1号设备就可以通过MOSI,MISO两根线在SCLK时钟控制下和主机进行通信了。
LED:
13引脚。这是板上自带的LED灯,高电平亮,低电平灭。

TWI:

20 (SDA) 和21 (SCL)。使用Wire library(点击查看详细介绍)实现功能。

TWI(Two—wire Serial Interface)接口是对I^2C总线接口的继承和发展,完全兼容I^2C总线,具有硬件实现简单、软件设计方便、运行可靠和成本低廉的优点。TWI由 一根时钟线和一根传输数据线组成,以 字节为单位进行传输。TWI_SCL\TWI_SDA是TWI总线的信号线。 SDA是双向数据线,SCL是时钟线SCL。在TWI总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据。数据传送完毕,由主机发出停止信号,SDA在SCL 高电平期间由低电平跳变为高电平。

模拟输入:

Mega2560有16个模拟输入,每个提供10位的分辨率(即2^10=1024个不同的值)。默认情况下他们测量0到5v值。可以通过改变AREF引脚和analogReference() 功能改变他们变化范围的上界。

AREF:是AD转换的 参考电压输入端(模拟口输入的电压是与此处的参考电压比较的)。使用 analogReference()(点击查看详细介绍)完成功能。
例:
参考电压是5V,AD精度是10位的,
在模拟输入端输入2.5V,AD转换结果就是512(1024×(5/2.5))
Reset:低电平有效,不用多说了吧。

五:通信
Arduino Mega2560提供4路UARTs通信,即Serial通信。数据通过ATmega8U2/ATmega16U2时候指示灯会闪烁(除了0和1口)。
使用 SoftwareSerial library(点击看详细介绍) 可以使用Mega2560的任意数字接口通信。Mega2560同样支持TWI和SPI通信。

六:编程

Mega2560使用Arduino IDE环境编程(这个相信再新的新手也知道)。事先在闪存(Flash Memory)里烧入bootloader引导程序(上文介绍有8kb),这样我们就可以每次下载程序了。它使用的是原始的STK500通信协议。(bootloader一般使用C语言或者汇编编写,考虑部分人的兴趣,这里也提供些资料:bootloader)。

你也可以绕过bootloader利用Arduino ISP通过ICSP (In-Circuit Serial Programming)header来编程(这是采用额外编程器的方式,这种方式当然不赞成,很麻烦)。

The ATmega16U2(上面说的串口编程芯片,Mega2560的特色)固件源码可以从 Arduino repository获得。ATmega16U2/8U2使用DFU bootloader下载,可以用以下方式激活:
1.V1版本的板子:连接板子后面的跳线(靠近意大利的地图),之后重置ATmega8U2(1版本为这个芯片)。
2.V2及之后的版本:有个将8U2/16U2 HWB线连到地的电阻,它使板子很容易进入DFU模式,你之后可以使用 Atmel's FLIP software (Windows) 或者  DFU programmer (Mac OS X and Linux) 下载新的固件。或者你可以使用额外的编程器通过ISP下载(跟上面跳过bootloader下载程序时的方法一样,此方法高端啊)。具体参考:See this user-contributed tutorial for more information.

七:自动(软件)复位:

不说了。

 

八:USB过流保护:

不说了,好的硬件设计应该这么做。

 

九:物理特性和兼容:也不说了,都是继承和发展。

 

参考:https://blog.csdn.net/yibu_refresh/article/details/40869187

=

=

=

 

分享到:
评论

相关推荐

    Arduino_MEGA_2560-Rev3_设计图_arduino_arduinomega2560_

    标题中的"Arduino_MEGA_2560-Rev3_设计图"指的是Arduino MEGA 2560的电路板设计文件,这是Arduino家族中的一款强大微控制器开发板。这款开发板基于Atmel的ATmega2560芯片,拥有大量的输入/输出引脚和强大的功能,常...

    基于Arduino MEGA2560的智能物流小车

    【作品名称】:基于Arduino MEGA2560的智能物流小车 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于Arduino ...

    iot-device-first-prototype:基于Arduino MEGA 2560和ESP8266 WiFi模块的IoT设备原型

    基于Arduino MEGA 2560和ESP8266 WiFi模块的IoT设备原型 硬件: Arduino的MEGA 2560 ESP8266设备通过串口3连接到Mega 2560 DHT11传感器连接到第二个数字引脚 软件: Arduino草图,有关内部使用过的库的信息 我...

    arduino mega2560引脚图

    为了深入探讨这一主题,我们将详细介绍Arduino Mega 2560板子的特点、引脚功能以及如何利用这些引脚进行项目开发。 ### Arduino Mega 2560简介 Arduino Mega 2560是一款基于ATmega2560的微控制器板,它拥有大量的...

    arduino-mega2560

    标题中的"arduino-mega2560"指的是这个项目或资源是关于Arduino Mega 2560的,可能包含设计文件、电路图和相关资料。 描述中提到的"SCH和PCB软件为Eagle",意味着设计者使用了Eagle(现在是Cadence公司的产品)这一...

    Arduino_MEGA2560_ref.sch

    arduino 2560原理图,官方下载。。。。。。。。。。。。

    arduino mega 2560 原理图

    本解析基于提供的部分原理图内容,将详细探讨Arduino Mega 2560的核心组件及其工作原理。 #### 一、核心组件与供电系统 **1. 微处理器**: ATMEGA2560-16AU作为Arduino Mega 2560的主控芯片,拥有256KB的闪存存储...

    ArduinoMega2560使用手册.pdf

    Arduino Mega2560 是一款基于 ATmega2560 微控制器的核心电路板,具有 54 路数字输入输出、16 路模拟输入、4 路 UART 接口、一个 16MHz 晶体振荡器、一个 USB 口、一个电源插座、一个 ICSP 头和一个复位按钮。...

    ArduinoMega2560使用手册...pdf

    Arduino Mega2560 是一种基于 ATmega2560 微控制器的核心电路板,具有 54 路数字输入输出口、16 路模拟输入口、4 路 UART 接口、一个 16MHz 晶体振荡器、一个 USB 口、一个电源插座、一个 ICSP 头和一个复位按钮。...

    AdamNet-Drive-Emulator:Arduino Mega ColecoVision Adam磁盘驱动器仿真器

    您可以按照以下说明在没有PCB的情况下自行连接,也可以使用Chris Tersteeg提供的布局构建PCB: : 材料清单: Arduino Mega 2560 R3-原始的Arduino或高品质的复制品。 1602键盘防护-Arduino版本SD卡屏蔽-带有电平转换...

    Arduino-MEGA-2560评估板ALTIUM设计原理图PCB+AD集成封装库.zip

    Arduino_MEGA_2560-Rev3 ALTIUM设计原理图PCB+AD集成封装库,采用2层板设计,板子大小为100x52mm,双面布局布线, Altium Designer 设计的工程文件,包括原理图+PCB文件,可以用Altium(AD)软件打开或修改,可作为你...

    arduinomega2560_driver.zip

    Arduino Mega 2560是一款基于ATmega2560微控制器的扩展版Arduino开发板,它拥有更多的数字输入/输出引脚、模拟输入引脚以及额外的串行通信接口,因此在需要处理大量数据或连接多个外部设备的项目中较为常用。...

    arduino-mega2560_R3硬件原理图+PCB文件.zip

    此压缩包包含的"arduino-mega2560_R3硬件原理图+PCB文件"是学习和理解该开发板内部构造的重要资料。 首先,我们来深入了解一下Arduino Mega 2560 R3的核心部件——ATmega2560微控制器。这是一款具有256KB闪存、8KB ...

    串口总线舵机SDK使用手册(Arduino Mega2560) 1

    【串口总线舵机SDK】是用于控制舵机的一种软件工具,特别适用于Arduino Mega2560开发板。该SDK允许用户通过串行通信接口(UART)与舵机进行高效交互,实现精确的角度控制、速度调整、模式切换等功能。 在【安装串口...

    Arduino MEGA 2560r3

    下面将对 Arduino MEGA 2560 R3 的硬件描述进行详细解释。 1. 微控制器 Arduino MEGA 2560 R3 使用 ATMEGA16U2 芯片,取代了 2011 版本的 ATMEGA8U2 芯片,ISP FLASH 容量增加了一倍,提供了更强大的功能扩展和...

    Arduino Mega2560电路原理图和PCB文件.zip

    Arduino Mega2560是一款基于ATmega2560微控制器的开源电子原型平台,广泛应用于各种DIY项目和物联网应用。它具有大量的输入/输出(I/O)引脚、模拟输入通道以及串行通信接口,使其成为复杂项目理想的开发板。 在...

    arduino_mega2560封装

    Arduino Mega 2560 是一款基于 Atmel ATmega2560 微控制器的开源硬件平台,广泛用于各种DIY项目和物联网(IoT)应用。它具有大量的输入/输出(I/O)引脚,包括数字和模拟引脚,以及额外的串行通信端口,使其成为复杂电子...

    arduino mega2560(AD)电路原理图和PCB图

    Arduino Mega 2560(AD)是一款基于Atmel公司的AVR微控制器的开源硬件平台,广泛用于电子制作、物联网项目、机器人制作等创新领域。它提供了大量的数字和模拟输入/输出引脚,以及充足的存储空间和处理能力,使得用户...

    AVR-STM32-Arduino-Mega2560 (3).pdsprj

    AVR-STM32-Arduino-Mega2560 (3).pdsprj

    Arduino-Simulator-Mega2560.zip_Arduino proteus_arduino proteus_

    Arduino Mega2560是一款基于ATmega2560微控制器的开源电子原型平台,被广泛应用于各种创意项目和DIY制作中。这款控制器拥有丰富的数字输入/输出引脚、模拟输入口以及强大的处理能力,使得它在物联网、机器人、自动化...

Global site tag (gtag.js) - Google Analytics