ArduinoMega2560引脚说明以及功能剖析

ArduinoMega2560引脚说明以及功能剖析
  很早之前⼊⼿了⼀块Arduino Mega2560,当时只是认为其操作简单且更加⼈性化,开源⽅便,想了解了解。最新搞项⽬想⽤Arduino试试控制8路舵机,但⽹上的Servo库⼤多说只⽀持9,10接⼝,很是恼⽕(资料怎么写就怎么搬,到底是不是只⽀持9,10接⼝有⼏个知道?⼜有⼏个知道为什么?)。
  了解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频谱屋
可以将Arduino Mega2560的扩展版插上来增强Arduino Mega2560的功能
  ⼆:电源
  这部分就不说了,涉及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和编程器的束缚。
uasa  (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下载程序时的⽅法⼀样,此⽅法⾼端啊)。具体参考:Seethis user-contributed tutorial for more information.耳包

本文发布于:2024-09-23 02:31:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/271242.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   设备   存储器   信号   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议