完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.arduino整体布局
1.1 arduino的外观图 1.2 arduino的3D示意图 1.3 arduino的布局元器件示意图 2.Arduino的威廉希尔官方网站 规格 3.处理器 3.1 arduino的处理器种类和作用 处理器ATMEGA16U2 的作用: 负责将上位机通过USB传输过来的程序写入ATmega328P中,相当于USB转TTL串口的芯片; 但其性能可能不太稳定,有可能出现掉固件(固件:芯片能执行的代码); 有很多种专业级别的USB转TTL串口的芯片,比如国外的FT232,CP2102,PL2303,国内最好的CH340、CH341。 处理器ATmega328P 的作用:板子的核心主控(MCU),负责程du序的存储以及运行,arduino IDE 编程的代码最终会烧写入ATMEGA328P中的ROM中。 3.2 ATmega328P的详解 1.arduino其实是一块AVR的开发板,其体系结构为精简指令集计算机(RISC);如果想了解芯片更多细节可以查阅芯片器件手册(datasheets),这个可以在Atmel的网站山免费下载。 2.芯片封装 a. AVR芯片内部都是一片IC(集成电路),外面再用塑料壳包起来,用极细的线从IC的边缘连接到封装的脚上,ATmega328P采用的封装方式为DIP封装(双列直插); b. 单片机比较常用的封装方式为: 1)DIP封装(Dual In-line Package),也叫双列直插式封装威廉希尔官方网站 ,指采用双列直插形式封装的集成电路芯片; [1] 绝大多数中小规模集成电路均采用这种封装形式,其引脚数一般不超过100; [2] DIP封装的CPU芯片有两排引脚,需要插入到具有DIP结构的芯片插座上。当然,也可以直接插在有相同焊孔数和几何排列的电路板上进行焊接; [3] DIP封装的芯片在从芯片插座上插拔时应特别小心,以免损坏管脚; [4] DIP封装结构形式有:多层陶瓷双列直插式DIP,单层陶瓷双列直插式DIP,引线框架式DIP(含玻璃陶瓷封接式,塑料包封结构式,陶瓷低熔玻璃封装式)等; [5] DIP封装的8086处理器 DIP封装具有以下特点: 适合在PCB(印刷电路板)上穿孔焊接,操作方便。 芯片面积与封装面积之间的比值较大,故体积也较大; [6] 最早的4004、8008、8086、8088等CPU都采用了DIP封装,通过其上的两排引脚可插到主板上的插槽或焊接在主板上。 2)IC封装图片大全 3.管脚定义 a.atmega328电压与时钟关系 [tr]高时钟频率最小供电电压[/tr]MHz1.8V 0MHz2.7V 0MHz4.5V b.数字和模拟电源 1)atmega芯片内部有两个独立的电源系统:数字电源(标示为:VCC或者VCC)和模拟电源(标示为:AVCC或者AVCC),VCC和AVCC应该同时接到相同的电压上;即使用不到任何模拟电路功能,AVCC的电源管脚必须接上。 2)两个电源管脚是分开的,当需要低噪声或者高精度的模拟读数时,就可以给模拟部分加上额外的电源滤波,提高精度; 3)ATmega328的28脚封装有1个VCC脚、1个AVCC脚和2个GND脚;32脚封装有2个VCC脚、1个AVCC脚和3个GND脚;100脚封装有4个VCC脚、1个AVCC脚和5个GND脚; 4)AVR单片机系列是基于低功效的CMOS威廉希尔官方网站 ,其MOS管中没有集电体、发射极或基极,而是有漏极、源极和栅极,CMOS器件的正确电源和地的术语描述为VDD和V。 c. 模拟参考(AREF)电压 1)AREF电压引脚有几种不同的用法,它连在芯片内部模数转换电路(ADC)外围设备的参考输入端; 2)ATmega328只支持单端ADC转换,而ATmega2560可以做两个输入端之间的差分电压测量; 3)无论是使用AVCC还是内部参考电压,都可以在AREF引脚和地之间接一个外部去耦电容,以提高参考电压的稳定性; 4)另一个选择是使用一个外部参考电压源电路。 d. RESET 1)RESET引脚提供了重置或者说重启单片机的方法,名字上方的横线表示这是一个低电平有效的输入,意思是说当这个脚拉低时RESET功能起作用。 2)RESET引脚设计可以承受高电压,也可以用于通知芯片进入编程模式; 3)RESET引脚拉低到地并且保持为低时,就可以让芯片进入ISP(In System Programming,在线编程),也称呼为LVSP(Low Volage Serial Programming,低压串行编程); 4)RESET引脚拉高到大约12V(11.5V到12.5V),则芯片就会进入HVPP(High Volage Parallel Programming,高压并行编程),由于此模式情况下,RESET脚没有接其他所有脚都有的箝拉电路,因此更加容易收到静电的损坏; e. XTAL1和XTAL2 1)XTAL1和XTAL2脚是内部反相振荡器的输入和输出脚; 2)如果使用外部时钟源,XTAL1就是内部时钟电路的输入脚; 3)这两个脚一般是用于接一个石英晶体(Arduino Duemilanove)或者陶瓷谐振器(Arduino Uno),以形成单片机的时钟电路的时基信号,为系统提供一个高精度的时间基准。 f. 通用输入输出(I/O)端口 1)特殊的端口已经在上面介绍完成,剩下的端口都可以配置成输入或者输出端口。 4.AVR内核 a. ATmega328的简化框图 b. 以下为AVR内核包括AVR CPU的主要部件 c. 芯片重启后,PC被重置为0,程序存储器中的0地址上的指令首先被取到CPU中(这个地方由MCU控制寄存器设置的),这个地方叫做重启向量(一般来说,向量是指向一个特定地方(地址)的指针而非指令。) d. AVR体系中一个有趣的设计是当中断发生,程序的执行跳转到设定的中断处理例程时,全局中断允许位(I)被清除。 e. 时钟源 1)ATmega328和ATmega2560都有一个片内振荡器,其时钟频率由外部晶体或谐振器决定,其有以下两种运行方式: [1] 低功耗模式,此模式不能输出时钟信号到芯片外面 [2] 全幅模式,增加了功率消耗 2)两种芯片都可以从外部信号源获取时钟。 3)片内有一个系统时钟预分频器,系统时钟以2的幂次分频,分频比可以从1:1到1:256。 4)主系统时钟是由两个校准过的电阻/电容(RC)振荡器之一产生的,还可以使用一个外部低频时钟晶体(一般是32KHz)来驱动需要真实时钟的应用程序中的定时器/计时器。 f. 地址空间 1)AVR体系结构本身是基于哈弗体系结构的,哈弗结构中,程序和数据的存储空间是分离的。 2)程序存储器 [1] 作用:用于存储处理器要执行的实际机器语言指令; [2] 在AVR上,这个存储器是片内的可编程16位宽flash阵列; [3] 特点:可以存储一定数量的数据,但写入的时间比较长,可以擦写的次数有限;有时候被看做是ROM(只读存储器); [4] Atmel器件手册宣称程序存储器内的数据可以保存很多年。 3)数据存储器 [1] 作用:用于保存程序运行过程中保存一些变量和变化的数据;在AVR上提供的是SRAM(Static Random-Access Memory 静态随机存取内存); [2] 大小:ATmega328芯片有2KB的SRAM,而ATmega2560则会有8KB的SRAM; [3] 特点:只要芯片还有电,SRAM内存就保持里面的数据,当掉电后,内存里的状态就是不确定了,也就是说当重新上电后,就不确定SRAM是某个特定的值,所以Arduino的C语言编程会采取措施来确保未初始化的数据不会用在被认为有特定值的场合; 4)寄存器 [1] 作用:CPU中的大多数算术和逻辑指令都可以在一个时钟周期内直接读写寄存器组里的单个寄存器,这样大型的寄存器就可以让复杂的算法可以快速执行,而不用重复在SARM上复制数据。 [2] 大小:在AVR上,里面有32个寄存器,编号为R0到R31;其中有6个寄存器有特殊用途,它们可以组合成3个16位指向数据存储器的索引指针,这些索引寄存器称呼为X、Y和Z。 [3] 特点:用于快速计算; 5)输入/输出寄存器 [1] 作用:所有的片内外围设备都是通过I/O地址空间访问的,每个外围设备都要用到1个或者多个寄存器,这些寄存器的位设置决定了外围设备的行为。 [2] 特点:SRAM、寄存器组和外围I/O寄存器都是在数据地址空间里的,而不是在程序地址空间里; 6)EEPROM [1] 作用:适合用于存储用户可改的配置数据或其他需要容易修改又要长期非易失保存的数据; [2] 大小:ATmega328芯片有1KB的EEPROM,而ATmega2560则会有4KB的EEPROM [3] 特点:EERPOM(电可擦写只读存储器)可以承受多次的擦写,这样就比较适合存储用户可改的配置数据或其他需要修改又要长期非易失保存的数据;写入的时序由片内的EEPROM逻辑控制,每个字节需要大约3.3ms来写入。 7)配置熔丝 [1] 作用:配置熔丝控制芯片一些运行特性,这样可以更灵活地使用芯片; [2] 大小:ATmega328芯片和ATmega2560芯片都有3个熔丝字节:1个高字节、1个低字节和1个扩展字节。 [3] 特点:配置熔丝一般是由外部芯片编程器读写的,通过LPM指令,芯片可以读取和锁定熔丝中的位,也可以通过SPM指令写引导装载程序锁定位。 g. 指令集 1)ATmega328芯片有131条不同的指令,而ATmega2560则会有135条; 2)RISC(Reduced Instruction Set Computer 精简指令集计算机),代表的是每条指令本身的复杂度降低了,而不是指令集中的指令数量减少;简化的可执行指令易于在硅片上实现,进而使得芯片更小、更快也更加便宜; 3)机械语言指令:在AVR指令中有些是16位的,有些是32位的,主要分为四种; 5.片内外围设备 a. 单片机内部有构成一部分完整计算机的电路,包括内存块、时钟电路和接口外围设备;所以一部分低端的微处理器不能称呼为单片机; b. 通用输入/输出(I/O) 1)ATmega328芯片有3个I/O端口:端口B、C、D;ATmega2560芯片有11个I/O端口:端口A到端口H(没有端口I)、端口J、K、L; 2)配置为输出方式后,根据输出端口寄存器上的位被写为1或者0,对应引脚上的高电平或者低电平; 3)配置为输入方式后,每个引脚可以读到逻辑高或者逻辑低的电平; 4)高于0.7×VCC的电压为高电平,读为1;低于0.3×VCC的电压则认为是逻辑低电平,读为0;在这两个电平之间的电压读数为不可测的; 5)如果需要,输入引脚可以开启内置的上拉电阻,这样可以保证信号的确定的; 6)每个I/O端口都是由3个I/O寄存器中位的设置来控制。 c. 外部中断 1)AVR内核可以识别和响应两种不同的外部中断;ATmega328有INT0和INT1脚,ATmega2560有INT0-7脚; 2)外部中断是嵌入式应用程序极为有用的资源,正确地使用外部中断可以解放主应用程序,使其不再需要不断轮询设备或状态以决定是否采取行动; d. 定时器/计数器 1)定时器/计数器0 [1] 核心为1个8位的计数器; [2] 它可以用作定时器或计数器; 2)定时器/计数器1 [1] 核心为1个16位的计数器; [2] 它可以用作定时器或计数器,而且还有1个输入捕获单元,这个硬件可以非常精确地做输入信号的时间测量; 3)定时器/计数器2 [1] 核心为1个8位的计数器; [2] 它特殊在于能以自己的鼓点起舞,它的异步运行模式能以系统时钟或外部信号之外的信号源驱动; 4)ATmega2560则增加3个16位的定时器(编号3、4、5) e. USART 1)USART为通用同步、异步接收、发射器; 2)ATmega328芯片有1个USART,而ATmega2560则会有4个USART; f. 两线串行接口(TWI),即IC 1)IC为IC间总线,是菲利普开发的一种通信协议,用于减少芯片间的连线; 2)IC标准最多允许总线上最多127个设备。 g. 模拟输入 1)ATmega328芯片有6个输入,而ATmega2560则会有16个输入; 2)ATmega328模拟输入接口为A0A5,而ATmega2560模拟输入接口为A0A15; 3)模拟输入可以测量的电压为0~5V; 4)ADC一旦正确配置和触发,可以模拟电压转化为0~1023之间的一个数值; 5)0表示电压是地电压或接近地电压;而读到1023则表示电压是AREF或接近AREF;这个是10比特的分辨率; 3.3 存储空间(特殊重点描述) Arduino的存储空间即是其主控芯片所集成的存储空间。也可以通过使用外设芯片的方式来扩展Arduino的存储空间。Arduino UNO的存储空间分三种: 1.Flash,容量为32KB。其中0.5KB作为BOOT区用于储存引导程序,实现通过串口下载程序的功能;另外的31.5KB作为用户储存的空间。相对于现在动辄几百GB的硬盘,可能觉得32KB太小了,但是在单片机上,32KB已经可以存储很大的程序了。 2.SRAM,容量为2KB。SRAM相当于计算机的内存,当CPU进行运算时,需要在其中开辟一定的存储空间。当Arduino断电或复位后,其中的数据都会丢失。 3.EEPROM,容量为1KB。EEPROM的全称为电可擦写的可编程只读存储器,是一种用户可更改的只读存储器,其特点是在Arduino断电或复位后,其中的数据不会丢失。 4.串口 如图所示,Arduino UNO有14个数字输入/输出端口,6个模拟输入端口。其中一些带有特殊功能,这些端口如下: 1.UART通信,为0(RX)和1(TX)引脚,被用于接收和发送串口数据。这两个引脚通过连接到ATmega16U2来与计算机进行串口通信。 2.外部中断,为2和3引脚,可以输入外部中断信号。 3.PWM输出,为3、5、6、9、10和11引脚,可用于输出PWM波。 4.SPI通信,为10(SS)、11(MOSI)、12(MISO)和13(SCK)引脚,可用于SPI通信。 5.TWI通信,为A4(SDA)、A5(SCL)引脚和TWI接口,可用于TWI通信,兼容IIC通信。 6.AREF,模拟输入参考电压的输入端口。 7.Reset,复位端口。接低电平会使Arduino复位。当复位键被按下时,会使该端口接到低电平,从而使Arduino复位。 5.状态灯 Arduino UNO带有4个LED指示灯,作用分别是: 1.ON,电源指示灯。当Arduino通电时,ON灯会点亮。 2.TX,串口发送指示灯。当使用USB连接到计算机且Arduino向计算机传输数据时,TX灯会点亮。 3.RX,串口接收指示灯。当使用USB连接到计算机且Arduino接收计算机传来的数据时,RX灯会点亮。 4.L,可编程控制指示灯。该LED通过特殊电路连接到Arduino的13号引脚,当13号引脚为高电平或高阻态时,该LED会点亮;当为低电平时,不会点亮。因此可以通过程序或者外部输入信号来控制该LED的亮灭。 6.电源 Arduino UNO有三种供电方式: 1.通过USB接口供电,电压为5V; 2.通过DC电源输入接口供电,电压要求7~12V; 3.通过电源接口处5V或者VIN端口供电,5V端口处供电必须为5V,VIN端口处供电为7~12V。 |
|
|
|
只有小组成员才能发言,加入小组>>
2341 浏览 0 评论
864浏览 2评论
506浏览 1评论
1386浏览 0评论
272浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-29 04:50 , Processed in 1.049928 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号