mega2560_mega2560芯片 - CSDN
精华内容
参与话题
  • Arduino的详细介绍(基于Mega2560

    万次阅读 2018-06-21 08:17:20
    了解Arduino的最好平台当然是官网,我相信官网肯定不会遗漏自己产品最有特色的东西,因此以它为参考...一:概述Arduino Mega 2560是基于ATmega2560的微控制板,有54路数字输入/输出端口(其中15个可以作为PWM输出)...

    了解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
    EEPROM4 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()(点击看详细介绍)功能实现。

    PSI(串行外设接口):

    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下载程序时的方法一样,此方法高端啊)。具体参考:Seethis user-contributed tutorial for more information.

    原文连接:https://blog.csdn.net/yibu_refresh/article/details/40869187


    天猫无门槛优惠券 天天更新:

    http://uquanfree.com

    展开全文
  • Arduino Mega2560 也是采用 USB接口的核心电路板,它最大的特点 就是具有多达 54 路数字输入输出,特别适合需要大量 IO 接口的设计。 Mega2560的处理器核心是 ATmega2560,同时具有 54 路数字输入 / 输 出口(其中 ...
  • 这是Arduino Mega 2560 R3的官方电路图,以及Arduino Mega 2560 R3 PCB官方说明资料
  • 官网不知为啥不好下载了,就截图过来,有需要的同学可以参考参考。
  • Arduino Mega 2560 R3电路图,官方电路图下载,PDF格式方便好用。
  • MEGA2560PCB封装

    2020-07-30 23:31:58
    MEGA2560的PCB封装 已测试 AD版本的 AD16,17可正常打开
  • Mega2560串口通信实现

    千次阅读 2019-08-06 10:05:10
    网上很多资料包括ardunio的官网的例子都是使用softwareserial类定义串口并使用available接口等待数据的到来,但实际我在使用过程中发现是不好使的,我用杜邦线把18,19引脚连接到一起,这样就可以实现自发数据自接收...

    网上很多资料包括ardunio的官网的例子都是使用softwareserial类定义串口并使用available接口等待数据的到来,但实际我在使用过程中发现是不好使的,我用杜邦线把18,19引脚连接到一起,这样就可以实现自发数据自接收,根据官网代码如下:

    SoftwareSerial mySerial(19, 18); // RX, TX
    
    void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
    
      Serial.println("Goodnight moon!");
    
      // set the data rate for the SoftwareSerial port
      mySerial.begin(9600);
      mySerial.println("Hello, world?");
    }
    
    void loop() { // run over and over
      if (mySerial.available()) {
        Serial.write(mySerial.read());
      }
      if (Serial.available()) {
        mySerial.write(Serial.read());
      }
    }
    

    mySerial.available()的这个条件语句是永远都进不去的。换了其他引脚也不好使。
    但是换种写法就没有问题了,把mySerial换成Serial1就可以了。

    void setup()  
    {
        Serial.begin(9600);
        Serial1.begin(9600);
        Serial1.println("Serial1.available");
    }
     
    void loop() // run over and over
    {
      //delay(1000);
      if (Serial1.available()) {
        Serial.write(Serial1.read());  
      //Serial.println("111");
      }
     
      // 从串口0转发到串口1(Arduino to WRTnode):
      if (Serial.available()) {
        Serial1.write(Serial.read());
      //Serial.println("222");
      }
    }
    
    

    在setup中的println的数据在loop的Serial1.available()条件语句中是为true的,有个问题就是read接口是一个字符一个字符返回。

    展开全文
  • Arduino Mega2560简介

    千次阅读 2019-03-03 14:39:32
    Mega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。可通过3种方式供电,而且能自动选择供电方式。 具有54路数字输入输出。 概述 Arduino Mega2560是采用USB接口的核心电路板...

    Mega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。可通过3种方式供电,而且能自动选择供电方式。
    具有54路数字输入输出。

    概述

    Arduino Mega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。处理器核心是ATmega2560, 同时具有54路数字输入/输出口(其中15路可作为PWM输出),15路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源 插座,一个ICSP header和一个复位按钮。Arduino Mega2560也能兼容为Arduino UNO设计的扩展板。Arduino Mega2560已经发布到第三版,与前两版相比有以下新的特点:
    ***1.***在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。
    ***2.***改进了复位电路设计。
    ***3.***USB接口芯片由ATmega16U2替代了ATmega8U2。

    电源

    Arduino Mega2560可以通过3种方式供电,而且能自动选择供电方式

    外部直流电源通过电源插座供电。

    电池连接电源连接器的GND和VIN引脚。

    USB接口直接供电。

    电源引脚说明 :
    VIN — 当外部直流电源接入电源插座时,可以通过VIN向外部供电;也可以通过此引脚向Mega2560直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。
    5V — 通过稳压器或USB的5V电压,为UNO上的5V芯片供电。
    3.3V — 通过稳压器产生的3.3V电压,最大驱动电流50mA。
    GND — 地脚。

    输入输出

    一、 14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。

    除此之外,有些引脚有特定的功能:

    4路串口信号:串口0—0(RX)and 1(TX);串口1—19(RX)and 18(TX);串口2—17(RX)and 16(TX);串口3—15(RX)and 14(TX)。其中串口0与内部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。

    6路外部中断:2(中断0),3(中断 1),18(中断 5),19(中断 4),20(中断 3),and 21(中断 2)。触发中断引脚,可设成上升沿、下降沿或同时触发。

    14路脉冲宽度调制PWM(0–13):提供14路8位PWM输出。

    SPI通信接口:SPI(53(SS),51(MOSI),50(MISO),52(SCK))。

    LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。

    二、 16路模拟输入:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能:

    TWI接口(20(SDA)和21(SCL)):支持通信接口(兼容I2C总线)。

    三、 AREF:模拟输入信号的参考电压。

    四、 Reset:信号为低时复位单片机芯片。

    展开全文
  • Arduino Mega2560引脚说明以及功能剖析

    万次阅读 2018-11-30 11:30:26
    传送门: http://www.y029.com/arduino/41765.html
    展开全文
  • 关于Arduino Mega2560的最基本介绍

    万次阅读 2016-05-07 23:06:47
    Arduino Mega2560是采用USB接口的核心电路板。具有54路数字输入输出,适合需要大量IO接口的设计。处理器核心是ATmega2560,同时具有54路数字输入/输出口,16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口...
  • Arduino智能物流小车项目(MEGA2560)

    千次阅读 多人点赞 2019-12-16 16:52:57
    因为这是本人做的第一个项目,然后平时也不太喜欢拍照。再加上有强迫症,没事喜欢清理文件相册。导致这个项目的材料照片文件十分匮乏(其实几乎都没了)。这是用的一些仅存残余文件,来写本人的第一篇博客,算是留作...
  • 关于Arduino mega2560的驱动问题(已解决)
  • arduino mega 2560 针脚说明

    万次阅读 2016-02-24 10:03:06
    Mega2560的处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位
  • Arduino Mega 2560插上电脑之后会出现,会出现这样的问题。 显示其他设备 USB2.0-serial,更新驱动之后会出现的这样的问题。 我搞了很久一直都不行,网上也没有找到办法。 最后安装了一个CH340的驱动才解决问题...
  • SPI接口协议总文有点介绍,不清楚的请找相关资料再看看。
  • External Interrupts(外部中断): 2 (interrupt 0),  3 (interrupt 1), 18 (interrupt 5),  19 (interrupt 4),  20 (interrupt 3),  21 (interrupt 2)。
  • arduino uno mega2560板 bootloader 烧写方法

    千次阅读 2013-06-02 17:25:59
    arduino duemilanove/uno/mega 1280/mega 2560等都支持~~ 首先是推荐用最简单的官方IDE进行下载,这种不需要配置任何东西~~~ 先用mega1280做一个简单介绍。本次介绍使用的是0022 IDE,其他版本的大同小异~~~上...
  • nRF24L01通信 1. nRF24L01通信简介 (1)nRF24L01通信经历  先说说小菜鸟蛋疼调试模块的经历吧~有可能某些人觉得没有必要写这篇文章,因为Arduino作为开源硬件,本身容易上手例程也很多,直接跑就可以判断是软件...
  • Arduino MEGA2560软串口使用方法

    千次阅读 2019-01-13 23:55:41
    通常将Arduino上自带的串口称为硬串口,而使用SoftwareSerial类库模拟成的串口称为软串口。软串口是由程序模拟生成的,使用起来没有硬串口稳定,而且和硬串口一样,波特率越高越不稳定。...但是在Arduino MEGA...
  • arduino mega2560与HC-06蓝牙模块使用

    千次阅读 2015-02-12 12:58:03
    选择了Arduino Mega2560作为控制器; HC06蓝牙模块作为无线通讯模块,用来和Android蓝牙模块通讯(该模块不支持蓝牙4.0); 该文主要完成了Arduino对蓝牙模块的设置,通过Arduino对信号进行捕捉,并通过蓝牙模块发送...
1 2 3 4 5 ... 20
收藏数 1,030
精华内容 412
关键字:

mega2560