




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
特AVRRISC结构AVR高性能低功耗RISC结构118条指 大多数为单指令周32个8位通用工作寄存工作10MHz时具有10MIPS的性数据和非易失性程序内存2K字节的在线可编程FLASH擦除次数1000次128字节128字节可编程 100000次程序加密位Peripheral特点个可预分频Prescale的8位定时器/计数个可预分频具有比较捕捉和8-9-10位功能的16位定时器/计数器片内模拟比较器可编程的看门狗定时器由片内振荡器生成用于下载程序的SPI口全双工特别的MCU特点低功耗空闲和掉电模式内外部中断源规范Specification低功耗高速CMOS工艺全静态工作4MHz3V25条件下的功耗工作模式2.8mA空闲模式掉电模式<1I/O和封装15个可编程的I/O20PDIPSOIC封装工作电压2.7V-6.0VAT90S2313-44.0V-6.0VAT90S2313-10速描AT90S2313AVRRISCCMOS8位单片机通过在一个时钟周期内执行一条指令AT90S23131MIPS/MHz的性能从而使得设计人员可以AVR32ALU算逻单元直接相连允许在一个时钟周期内执行的单条指令同时两个独立的寄存器这种结构提高了代码效率使AVR得到了比普通CISC单片机高将近10倍的性能图 AT90S2313具有以下特点2KFLASH128EEPROM128SRAMI/0口32个通用工作寄存器具有比较模式的灵活的定时器/计数器内外中断源可编程的UART可编程的看门狗定时器程序用的SPI口以及两种可通过软件选择的省电模式工作于空闲模式时CPU将停止运行而寄存器定时器/计数器看门狗和中断系统继续工作掉电模式时振荡器停止工作所有功能都被而寄存器内容得到保留ATMELFLASHISP接口或通用编程器多次编程通过将增强的RISC8位CPU与FLASH集成在一个内2313AT90S2313具有一整套的编程和系统开发工具宏汇编调试/仿真器仿真器和管脚配置管脚定义 GND电源B口PB7…PB0B8I/O口每一个管脚都有内部上拉电阻可单独选择PB0PB1作为片内模拟比较器的正AIN0负AIN1输入端B口的输出缓冲器能够吸收20mA电流可直接驱动LED当作为输入时如果外部被拉低由于上拉电阻的存在管脚将输出电流在复位过程中B口为三态即使此时时钟还未起振D口D7I/O20mA输入时如果外部被拉低由于上拉电阻的存在管脚将输出电流在复位过程中D口为三态即使此时时钟还未起振/RESET复位输入超过50ns的低电平将引起系统复位低于50ns的脉冲不能保证可靠XTAL1振荡器放大器的输入端XTAL2振荡器放大器的输出端晶体振荡器XTAL1XTAL2分别是片内振荡器的输入输出端可使用晶体振荡器或是陶瓷振荡器当使用外部时钟时XTAL2应悬空图 振荡器连图 结构纵览4AT90S2313AVRRISC快速寄存器文件包含32个8位可单周期的通用寄存器这意味着在一个时钟周期内ALU可以完成一次如下操作寄存器文件中的两个操作数执行操作将结果存回6316运算能力其中Z指针还用于查表功能ALU支持两个寄存器之间寄存器和常数之间的算术和逻辑操作以及单寄存器的操作除了寄存器操作模式通常的内存模式也适用于寄存器文件这是因为AT90S2313为寄存器文件分配了32个最低的数据空间地址$00-$1F允许其象普通内存地址一样I/O内存空间包括64个地址作为CPU外设的控制寄存器T/C 以及其他I/O功能I/O内 也可以作为数据地址$20-$5F来AVR采用了HARVARD结构程序和数据总线分离程序内存通过两段式的管道Pipeline进行当CPU在执行一条指令的同时就去取下一条指令这种预取指的概念使得指相对跳转和相对调用指令可以直接1K地址空间所有的AVR指令都为16位长每个程序内存地址都包含一条16位或32位的指令当执行中断和子程序调用时返回地址于堆栈中堆栈分布于通用数据SRAM之中SRAMSPSPAVR结构的内存空间是图 内存映I/O有一个中断向量由中断向量组成的中断向量表位于程序区的最前面中断向量地址低通用工作寄存器文件图 ……… 作 所有的寄存器操作指令都可以单指令的形式直接所有的寄存器例外情况为5条涉及常数操作的指令SBCISUBICPIANDI和ORI这些指令只能通用寄存器文件的后半部分R16到R31632个地址虽然寄存器文件的实现与SRAM不同这种内存组织方式在寄存器方面具有极大XYZ寄存器寄存器R26~R31除了用作通用寄存器外还可以作为数据间接寻址用的地址指针图7 YZ寄存器R27R26R27R260707X 0707 0707ZAVRALU32个通用工作寄存器直接相连ALU3类算术逻辑和位操作可编AT90S23132KFLASH16FLASH AT90S2313的程序计数器PC为10位宽可以寻址到1024个字的FLASH程序AT90S2313128EEPROM它是作为一个独立的数据空间而存在的可以按字节读写EEPROM的至少为100000次擦除EEPROM的由地址寄存器数据图 寄存器文 ……I/O寄存 ………224个数据地址用于寻址寄存器文件I/OSRAM96个地址为寄存器文件+I/O其后的128个地址用于寻址SRAM5种直接带偏移量的间接间接预减的间接后加的间接寄存器R26R31为间接寻址的指针寄存器YZ63个地址带预减和后加的间接寻址模式要用到XYZ指针32个通用寄存器64I/O128SRAM程序和数据寻址模式AT90S2313支持强大而有效的寻址模 本节将要介绍各种寻址模单寄存器直接寻址图9双寄存器直接寻址图10I/O直接寻址图11数据直接寻址图12带偏移的数据间接寻址图13数据间接寻址图14带预减的数据间接寻址图15带后加的数据间接寻址图16使用LPM指令寻址常数图17间接程序寻址IJMP图相对程序寻址RJMP图内存和指令执行时AVRCPU由系统时钟驱动此时外部晶体直接产图20说明了由HARVARD结构决定了的并行取指和执行以及快速寄存器文件的概念这是一个基本的达到1MIPS/MHz优良的性价比功能/时钟比功能/功耗比的流水线概2021演示的是寄存器文件内部时序在一个时钟周期里ALU可以同时对两个寄存器操作数进行操作同时将结果存回到其中的一个寄存器中去I/O内表 地址16进制 T/CMCU控制寄T/C0T/C08位T/C1T/C1DAVR2313的所有I/O和都被放置在I/O空间IN和OUT指令用来不同的I/O地址32个通用寄存器之间传输数据地址为$00-$1FI/OSBICBI指令进行位寻址而SIBCSIBSINOUT指令时地址必须在$00-$3F之间如果要象SRAM一样I/O寄存器则相应地址要加上$20在本文档里所有I/O寄存器的SRAM地址写在括号中为了与后续产品兼容保留未用的未应写0而保留的I/O寄存器则不应一些状态标志位的清除是通过写1来实现的CBI和SBI指令已置位的标志位时会回写1因此会清除这些标志位CBI和SBI指令只对$00-$1F有效I/O寄存器和控制寄存器在后续章节介状态寄存器 StatusRegisterITHSVNZC ITHSVNZC$3F$5F 全局中断使能置位时使能全局中断单独的中断使能由个独立控制寄存器控制如果I清零则不论单独中断标志置位与否都不会产生中断I在复位时清零RETI指令执行后置位T位拷贝位拷贝指令BLD和BST利用T作为目的或源地址BST把寄存器的某一位拷贝到 BLD把T拷贝到寄存器的H半加标志位S符号位 二进制补码溢出标志位N负数标志位Z零标志位C进位标志位状态寄存器在进入中断和退出中断时并不自动进行和恢复这项工作由软件完堆栈指针 $3D$5D00000000堆栈指针指向位于SRAM的函数及中断堆栈堆栈空间必须在调用函数或中断使能之前定义指针必须指向高于$60的地址用PUSH指令推数据入栈时堆栈指针将减一而当调用函数或中断时指针将减二使用POP指令时堆栈指针将加一而用RETRETI返回时指针将加二复位和中断处理AT90S231310事件都有自己的使能位当使能位置位I也置位的情况下中断可以发生2在中断向量表中处于低地址的中断具有高的优先级所以RESET具有最高的优先级表 1硬件管脚上电复位和看门狗复位234T/C15T/C16T/C17T/C08UART9UARTUARTPT1T1T1T0PR16,<指令SPL,R16复位源上电复位当电源电压低于上电门限VPOT时MCU外部复位当/RESET50nsMCU看门狗复位看门狗定时器超时后MCU在复位期间所有的I/O寄存器被设置为初始值程序从地址$000开始执行$000地址中放置的指令必须为RJMP相对跳转指令跳转到复位处理例程若程序不需中断则中断向量就可放置通常的程序代码图23为复位电路的逻辑图表3定义了复位电路的时序图 复位逻表 复位电参数VCC=符参最小值典型值最大值单上电复位电压门限上升V上电复位电压门限下降V--V复位延迟周期FSTRT复位延迟周期FSTRT注1.除非电源电VPOT否则上电复位不会发WDT振荡周期数示于4看门狗振荡器的频率与工作电压有关具体参见后续章节的典型特性4溢出时间WDT周期上电复位上电复位POR保证器件在上电时正确复位如图23所示看门狗定时器驱动一个内MCUVCCVPOTFLASHFSTRTMCU如果内置于片内的启动时间足够的话/RESETVCC直接相连或是外接上拉电阻VCC的同时保持/RESET图 MCU起动/RESET与VCC相图 MCU启动/RESET由外电路控外部复位外部复位由外加于/RESET引脚的低电平产生大于50ns的复位脉冲将造成复位施加短脉冲不能保证可靠复位当外加信号达到复位门限电压VRST上升沿时tTOUT延时周期开始然后MCU启动图 看门狗复位当看门狗定时器溢出时将产生1XTAL周期的复位脉冲在脉冲的下降沿延时定时器开始对tTOUT记数图 中断处理AT90S2313有2个中断 控制寄存器GIMSK通用中断 寄存器和TIMSKT/C中断一个中断产生后全局中断使能位I将被清零后续中断 I置位从而开放中 执行RETI后I重新置对于那些由可以保持为静态的事件如输出比较寄存器1与T/C1值相匹配驱动的中断事件发生后中断标志将置位如果中断标志被清除而中断条件仍然存在则标志只有在新事当程序计数器指向实际中断向量开始执行相应的中断例程时硬件清除对应的中断标志一些中断标志位也可以通过软件写1 当一个符合条件的中断发生后如果相应的中断使能位为0则中断标志位挂起并一直保持到中断执行或者被软件清除如果全局中断标志被清零则所有的中断都不会被执行直到I置位然后被挂起的各个中注意外部电平中断没有中断标志位因此当电平变为非中断电平后中断条件即终止进入中断和退出中断时MCU不会自动保存或恢复状态寄存器故尔需由软件处理通用中断屏蔽寄存器
76543210------RRRRRR000000005…0INT1外部中断1请求使能当INT0和I都为1时外部引脚中断使能MCU通用控制寄存器MCUCR中的断检测控制位1/0ISC11和ISC10定义中断1是上升沿中断还是下降沿中断或者是低电平中断即使管脚被定义为输出中断仍可产生INT0外部中断0请求使能当INT0和I都为1时外部引脚中断使能MCU通用控制寄存器MCUCR中的断检测控制位1/0ISC01和ISC00定义中断0是上升沿中断还是下降沿中断或者是低电平中断即使管脚被定义为输出中断仍可产生通用中断标志寄存器
76543210------RRRRRR000000005…0INTF1外部中断标志当INT1管脚有事件触发中断请求时INTF1置位1如果SREG中的I及GIMSK中的INT1都为1则MCU将跳转到中断地址$002中断例程执行后此标志被清除另外标志也可以通过对其写1来清除INTF0外部中断标志当INT0管脚有事件触发中断请求时INTF0置位1如果SREG中的I及GIMSK的INT0都为1 则MCU将跳转到中断地址$001中断例程执行后此标志被清除另外标志也可以通过对其写1 T/C中断屏蔽寄存器
---- 初始 位 保TOIE1T/C1溢出中断使当TOIE1和I都为1 时T/C1溢出中断使能当T/C1溢出或TIFR中的TOV1位置位时中断例程$005得到执行OCIE1AT/C1输出比较匹配中断使能TOIE1和I都为1时输出比较匹配中断使能当T/C1的比较匹配发生或TIFR中的OCIE1A置位中断例程$004将执行TICIE1T/C1输入捕捉中断使能当TICIE1和I都为 时输入捕捉中断使能当T/C1的输入捕捉事件发生PD6TIFR中的ICF1置位中断例程$003将执TOIE0T/C0溢出中断使当TOIE0和I都为1 时T/C0溢出中断使能当T/C0溢出或TIFR中的TOV0位置位时中断例程$006得到执行T/C中断标志寄存器 543210 ---- RRRR初始 000000位 保TOV1T/C1溢出中断标志位当T/C1溢出时TOV1置位执行相应的中断例程后此位硬件清零此外TOV1也可以通过写1 来清零当SREG中的位ITOIE1和TOV1一同置位时中断例程得到执行在模式中当T/C1在$0000改变记数方向时TOV1置位OCF1A输出比较标志当T/C1与OCR1A的值匹配时OCF1A置位此位在中断例程里硬件清零或者通过对其写1 来清零当SREG中的位IOCIE1A和OCF1A一同置位时中断例程得到执行 输入捕捉标志位当输入捕捉事件发生时ICF1置位表明T/C1的值已经送到输入捕捉寄存器ICR1 在中断例程里硬件清零或者通过对其写1来清零当SREG中的位ITICIE1A和ICF1一同置位时中断例程得到执行TOV0T/C0溢出中断标志位当T/C0溢出时TOV0置位执行相应的中断例程后此位硬件清零此外TOV0也可以通过写1 来清零当SREG中的位ITOIE0和TOV0一同置位时中断例程得到执行外部中断INT0和INT1引脚触发应当注意如果中断使能则即使INT0/INT1输出中断照样会被触发此特点提供了一个产生软件中断的方法触发方式可以为上升沿MCUMCUCR决定当设置为低电平触发时只要电平为低中断就一直触发中断响应时间AVR中断响应时间最少为4个时钟周期在这4个时钟期间PC2个字节自动入栈SP22个时钟周期如MCU才会执行中断程4个时钟在此期间PC将被弹出栈SREGI被置位如果在中断期间发生了其他中断则AVR在退出中断程序后要执行一条主程序指令之后才能再响应被MCU控制寄存器 6543210 - R初始 0000000位 保SE休眠使能SLEEP指令时SEMCUMCU进入休眠建议与SLEEP指令相连使用SM休眠模式此位用于选择休眠模式SM为 时为闲置模式SM为 ISC11ISC10中断检测控制11和位INT1中断的边沿或电平如下表所示表 中断1检测控描00011011注改变ISC11/ISC10时首先要INT1清除GIMSK的INT1 否则可能不必要的中ISC01ISC00中断检测控制01和位INT0中断的边沿或电平如下表所示表 中断0检测控描00011011注改变ISC01/ISC00时首先要INT0清除GIMSK的INT0位 否则可能不必要的中断INTn引脚的电平在检测边沿之前采样如果边沿中断使能则大于一个MCU时钟的脉冲将触发中断如果选择了低电平触发则此电平必须保持到当前执行的指令结束休眠模式SE为1SLEEP指令使能的中断将唤醒MCU完成中断例程后MCUSLEEP以后的指令在休眠期间寄存器文件及I/O内存的内容不会丢失如果在休眠模式下复位则MCU从RESET向量$000处开始运行闲置模式SM为0时SLEEPMCU进入闲置模式在此模式下CPU停止运行而定时器/计数器看门狗和中断系统继续工作内外部中断都可以唤醒MCU如果不需要从模拟比较器中断唤醒MCU为了减少功耗可以切断比较器的电源方法是置位ACSR的ACD如果MCU从闲置模式唤醒CPU将立即执行指令掉电模式SM为1时SLEEPMCU进入掉电模式在此模式下外部晶振停振而外部中断及看门狗在使能的前提下继续工作只有外部复位看门狗复位和外部电平中断INT0INT1可以使MCU脱离掉电模式MCU时要注意保持低电平大于TTOUT的时间否则MCU继续保持定时器/计数器AT90S2313内部有两个通用定时器/8T/C16位T/CT/C10位的预分频定时器取得预分频的时钟T/C既可用作使用片内时钟的定时器也可用作T/C的预分频器图 T/C的预分频4种可选的预分频时钟为CK/8CK/64CK/256CK/1024CK为振荡器时钟还可以选择CK外部时钟以及停止工作829T/C0图 T/C0工作框T/C0CKCKT/C0控制寄存器TCCR0来停止它TIFR为状态标志寄存器TCCR0为控制寄存器而TIMSKT/C0T/C0CPU时间至少为一个CPU时钟周期MCU在内部CPU时钟的上升沿对外部信号进行采样在低预分频条件下T/C0具有高分辨率和高精度的特点而在高预分频条件下T/C0T/C0控制寄存器 6543210 ---- RRRR初始 00000007…3CS02CS01CS00时钟选择表 T/C0预分频选000001010011100101110外部引脚 下降111外部引脚 上升当T/C0由外部引脚T0驱动时即使PD4T0配置为输出管脚上的信号变化照样可以使计数器发生相应的变化这就为用户提供了一个软件控制的方法T/C07654321000000000T/C0是可以进行读/写的向上计数器只要有时钟输入T/C0就会在写入的值基础上向1630T/C1图 T/C1工作框T/C1CKCK或外部引脚输入另外还可以由T/C1TCCR1B来停止它TIFR为状态标志寄存器TIMSKT/C1T/C0CPU对信号的正确采样要保证外部信号的转换时间至少为一个CPU时钟周期MCU在内部CPU时钟的上升沿对外部信号进行采样在低预分频条件下T/C1具有高分辨率和高精度的特点而在高预分频条件下T/C1非常适用于低速功能如计时OCR1A作为数据源T/C1还可以实现输出比较的功能此功能包括比较匹配时清除计数器和输出比较管脚1的动作几种动作可任选一种T/C1还可以用作89或10位的 调制器在此模式下计数器和OCR1寄存器用作ICPT/C1ICR1捕捉事件的设置由TCCR1B控制此外模拟比较器也可以设置为触发输入捕捉ICP引脚逻辑见图图 ICP引脚原理44T/C1控制寄存A76543210----RRRR000000005…2比较输出模式1COM1A1COM1A0T/C1的比较匹配发生时输出引脚的动作这些动作都将影响管脚OC1-输出比较引脚1PB3这是I/O口的第二功能相应的方向控制位要设置为1以便将其配置为输出具体配置见表8表 比较1模式选描000110111110选表 描00T/C1的操作无01T/C18位10T/C19位11T/C110位T/C1控制寄存器 6543210 -- RR初始 0000000位 保ICNC1输入捕捉抑制器4个时钟时ICP44ICES1输入捕1边沿选择ICES1位为0时T/C1ICP若ICES1位为1则T/C1的值在ICP引脚电平的上升沿被传送到CTC1比较匹配时清除CTC1为1时比较A匹配事件发生后T/C1将复位为0若CTC1为0则T/C1将连续记数而不受比较匹配的影响由于比较匹配事件的检测发生在匹配发生之后的一个CPU1A比较匹配寄存器的值设置为C时定时器的记数方式为…|C-2|C-1|C|0|18时定时器的记数方式则为…|C-2,C-2,C-2,C-2,C-2,C-2,C-2,C-2|C-1,C-1,C-1,C-1,C-1,C-1,C-1,C-1|C,0,0,0,0,0,0,0在模式下这几位没有作CS12CS11CS10时钟选择表 T/C1预分频选描000001010011100101110外部引脚 下降111外部引脚 上升当T/C1由外部引脚T1驱动时即使PD5T1配置为输出管脚上的信号变化照样可以使计数器发生相应的变化这就为用户提供了一个软件控制的方法T/C1TCNT1H8765432100000000000000000此16位寄存器包含了T/C1的值当CPU这两个寄存器时为了保证高字节和低字节能够同时读写要用到一个8位的临时寄存器TEMP此寄存器在OCR1A和ICR1的时候也要用到如果主程序和中断程序在寄存器时都要用到TEMP那么在适当的时候CPUTCNT1HTEMP寄存器当CPUTCNT1L时此数据及TEMP中的数据一并写入TCNT1因此在写TCNT116位时首先要写TCNT1H当CPUTCNT1L时TCNT1L的数据将送入CPU同时TCNT1H将送入寄存器等到CPUTCNT1H时TEMP中的数据送入CPU因此在读16位TCNT1时首先要T/C1是向上记数器或上/下记数器在 模式下若T/C1被置数则T/C1将在预置T/C1输出比较寄存器 OCR1AH和8765432100000000000000000由于OCR1A为16位寄存器所以在时要用到TEMP寄存器以保证两个字节的同步更新其读写过程与读写TCNT1相同876543218765432100000000000000000ICES1ICPTCNT1ICR1同时ICF1置位由于ICR1为16位寄存器所以在时要用到TEMP寄存器以保证同时两个字节读写过程与读写TCNT1相同模式下的选择模式后T/C1和输出比较寄存器1-OCR1共同组成一个89或10位的无尖峰的自由运行的其输出引脚为PB3OC1T/C1作为上/下计数器从0记数到TOP然后反向记数回到0当计数器中的数值和OCR1A的数值低89或10位一致时PB3OC1引脚按照COM1A0和COM1A1的设置动作表 TOP值及频分辨率TOP的值频8$00FF2559$01FF51110$03FF1023表 模式下的比较1模式选择000110置位OC1正 11置位OC1反 模式下OCR1A的低10位首先在一个临时的位置等到T/C1达到TOP时才真正存 图 失步的OCR1锁如果在执行写和锁存操作的时候OCR1A读到的是临时位置的数OCR1的值为$0000TOPOC1表 OCR=$0000或TOP时的输10L10H11H11L在模式下当计数器达到$0000时将置位TOV1此时发生的中断与正常情况下的中看门狗定时器VCC=5V的条件下典型振荡频率为1MHz通过调整定时器的预分频因数8种可以改变看门狗复位时间间隔看门狗复位指令是WDT如果定时时间已经到而且没有执行WDTMCU2313从复位地址重新开始执行为了防止不关闭看门狗需要有一个特定的关闭程序33看门狗定时器控制寄存7器 7器 ---RRR00000000WDTOE看门狗关闭使能当WDE清零时此位必须为 才能关闭看门狗在置位的4个时钟后硬件对其清WDE看门狗使WDE为1 时看门狗使能只有在WDTOE为1 时WDE才能清零以下为关闭看在同一个指令内对WDTOE和WDE写逻辑 即使WDE已经为14个时钟之内WDEWDP2…0预分频表 000001010011100101110111注看门狗的振荡频率于电压有WDT应该在看门狗使能之前执行一次如果看门狗在复位之前使能EEPROM读/EEP的时间与电压有关大概在2.5~4ms之间自定时功能可以让用户监测何时开始写下一字节如果用户要操作EEPROM应当注意如下问题在电源滤波时间常数比较大的电路中上电/VCC上升/下降会比较慢此时MCU将工作于低于晶振所要求的电源EEP写指令为了保证EEP的数据完整性建议使用电压复位电路EEPROM写操作需要执行一个特定的写时序具体参看后续内容EEPROM读/写操作时CPU2个周期然后再执行后续指令EEPROM地址寄存 6543210 初始 XXXXXXX位 保EEPROM数据寄存器7654321000000000EEPROM写操作EEDRDDAR单元的数据对于读操作EEDR址 765432176543210-----RRRRR000000007…3EEMWEEEPROM主写使能EEMWEEEWE为1
当EEMWE为1时置位当将把数据写入EEPROM的指定地址若EEMWE为0 则EEWE不起作用EEMWE置位后4个周期硬件对其清零EEWEEEPROM写使当EEP数据和地址设置好之后需置位EEWE以便将数据写入EEPROM写时序如下23步不是必须的EEMWE4个周期内EEWE经过写时间VCC=2.7V时为4ms左右VCC=5V时为2.5ms左右之后EEWE硬件清零用户可以凭此位判断写时序是否已经完成EEWE置位后CPU要停止2个周期注意发生在步骤45EEP的中断打断了EEP操作RRAREEDR寄存器可能被修改引起EEP操作失败建议此时关闭全局中断标志IEEREEEPROM读使能EEPEEREEEDREEREEEPROM的数据已经读入EEDREEPROM数据的只需要一条指令且无需等待EERE置位后CPU要停止2个周期用户在EEP时应该检测EEWE如果一个写操作正在进行写EEAR和EEDR将中EEP的写入使得结果无法防止EEPROM数据毁由于电源电压过低CPUEEPROM有可能工作不正常造成EEPROM数据的毁坏这种情况在使用独立的EEPROM器件时也会遇到EEPROMEEPROM写操作所需要的最低电压二是CPU本身已经无法正常工作当电压过低时保持/RESET信号为低这可以通过外加复位电路BOD 来完成有些AVR产品本身就内含BOD电路看有关有效防止对EEPROM的误操作将那些不需修改的常数于FLASH之AT90S2313具有全双工通用异步收发 其主要特点波特率发生器可以产生大量的波特率bps893个独立的中断发送结束发送数据寄存器空接收结束数据发送UARTUDRUDR的数据UDR若前一个字符的停止位还没有移出移位寄存器则要等到停止位移出后UDR的数据图 如果1011位收发器移位寄存器为空UDR中的数据将传送到移位寄存器此时置位表明UART0位起始位自动清零而位9和10停止位置位如果选择了9位数据格式UART的CHR9置位则UCRTXB8将送到移位寄存器的位9UART首先在TXD引脚送出起始位然后是数据低位 如果UDR里有新数据则UART会在停止位发送完毕只有自动加载数据在加载数据的同时UDRE置位并一直保持到有新数据写入UDR如果UDR没有新数据而且停止位也已经输出一个bit的长度则发送结束标志TXC置位UCRTXENUART发送器当TXEN为0时PD1I/O为 时UART输出自动连接到 强迫其为输出而不管方向寄存器的设数据接收图 UART的前端以16倍于波特率的频率对RXD引脚进行采样如果在此管脚处于空闲状态的时候检测到低电平则认为这是起始位的下降沿起始位检列开始假定采样1为第一CPU8910RXD3次连续采样如果有两个或全部采样值为高则认为当前信号是一个虚起始位要丢弃MCU将开始等待新一次的1到0的转换如果检测到了一个有效的起始位MCU就会开始采样数据数据位的检测同样是在采样8910两个或3个相同的值被认为是当前位的值图36说明了采样过程图 当停止位进入时3个采样值当中必须要有两个以上为高否则USR中的帧错误标志位FE置位在读UDR之前用户应该检查FEUDRUSRRXC置位UDR实际上是两个物理上分离的寄存器一个用于发送一个用于接收UDR时的是接收UDRUDR时的是发送UDR9位则UCRRXB8在数据传送到UDR时加载到发送移位寄存器的位9如果在UDR之前UART又接收到一个数据则USR的OR置位这表明数据无法转移到UDR而丢失了OR一直保持到UDR被因此如果波特率比较高或者CPU负载比较重用户应该在读UDR时首先检测OR标志如果RXEN为0则不工作PD0可以用作普通I/O口而若RXEN置位则 当UCR的CHR9为1时收发的数据格式为9位要发送的第9位是UCR的TXB8要在写UDR之前设置而接收到的第9位是RXB8UART控制UART数据寄存器7654321000000000UDR实际上是两个物理上分离的寄存器一个用于发送一个用于接收UDR时访问的是接收UDR而在写UDR时的是发送UDR U---RRRRRRRR001000002…0RXCUART接收结束RXC置位表示接收到的数据已经从接收移位寄存器传送到UDR但是不管数据是否有误如果RXCIE为1则RXC置位时将引起接收结束中断RXC在读UDR时自动被清除如果采用中断方式则中断例程必须读一次UDR以清除RXC否则中断结束后又会中TXCUART发送结束TXCUDR中没有新的要发送的数据在半双工通信应用当中由于发送器在发送完数据之后要立即转换到接收模式所以这个标志如果TXCIE已置位则TXC置位将发送结束中断进入中断例程后TXC自动清零或者用户可以对其写1以达到清零的目的UDREUART数据寄存器空UDR传送到发送移位寄存器后UDRE置位表明发送器已经准备好接收新的要当UDRIE置位则只要UDRE为1UART发送结束中断就可以执行写UDR将复位UDRE如果利用中断方式发送数据则在UARTUDR以清除UDRE否则中断将连续发生复位后UDRE的初始值为1表明发送器就FE帧错误MCU检测到帧错误如检测到停止位为0时FE置位当检测到数据停止位为1 时FE复位OR过速UDR未读而新的数据又已进入移位寄存器ORUART控制寄存器76543210RW00000010RXCIE接收结束中断使能TXCIE发送结束中断使能UDRIEUART数据寄存器空中断使能RXEN接收使能使能UART接收接收将导致TXCOR和FE无法置位同时也不能复位已经置位的TXEN发送使能TXENCHR99MCU99位字符的读/RXB8/TXB89位RXB89位TXB8发送的第9位发送字符的第9位波特率产生器
BAUD f16UBRR式中16UBRRfCK=UBRR=UART波特率寄存器的内容0-255表 %%%%UBR 26378256713341223011201110000%%%%UBR 867894567333422231112%%%%UBR- 19178956783345UART波特率寄存 6543210 初始 0000000模拟比较器模拟比较器比较正输入端PB0AIN0和负输入端PB1AIN1的值如果PB0AIN0的电压高于PB1AIN1的值比较器的输出ACO将置位此输出可用来触发模拟比较器中断上升沿下降沿或电平变换也可以触发T/C1的输入捕捉功能其框图如图37所示图37模拟比较器框图模拟比较器控制和状态寄存器
76543210-RR00000000位 保ACD模拟比较器当ACD为1 时模拟比较器的电源将切断可以在任何时候对其置位以关闭模拟比较器这样可以减少器件的功耗改变ACD时要注意模拟比较器的中断否则有可能不ACO模拟比较器输 模拟比较器中断标志ACIACIS1ACIS0ACII都为1则CPU执行比较器中断例程进入中断例程后ACI被硬件清零此外ACI也可以通过对此位写1来达到清零的目的要注意的是如果ACSR的另一些位被SBI或CBI指令修改时ACI亦被清零ACIE模拟比较器中断使能ACIE为 时比较器中断使ACIC模拟比较器输入捕捉使能ACIC为 时T/C1的输入捕捉功能由比较器中断触发此时比较器的输出与的输入捕捉前端直接相连T/C1的输入捕捉噪声抑制和边沿选择仍然适用如果ACIC0则模拟比较器与T/C1没有关联为了使能比较器驱动的T/C1输入捕捉中断ACIS1ACIS0模拟比较器中断模式选择表 中断模式00 中0110ACO下降沿中断11ACO上升沿中断注改变ACIS1/ACIS0时要注 模拟比较器的中断否则有可 脚的方向值 /使能上拉时不会无意地改变其他管脚的方向值/使能上拉BB口有3个I/O地址数据寄存器PORTB$18$38数据方向寄存器DDRB$17$37和输入引脚PINB$16$36PORTB和DDRB可读可写PINB只可20mA的电流能够直接驱动LED当管脚被拉低 如果上拉电阻已经激 则引脚会输出电表 B口第二功管第二功能AIN0模拟比较器正输入端AIN1模拟比较器负输入端OC1T/C1比较匹配输出MOSI程序时的数据输入线MISO程 SCK串行时钟当使用B口的第二功能时DDRB和PORTB要设置成B口数据寄存器7654321000000000B口数据方向寄存器 6543210 初始 0000000B口输入引脚地址 6543210 RRRRRRR PINB不是一个寄存器这个地址用来B口的物理值PORTB时读到的是B口锁存的数据而PINB时读到的是施加于引脚上的逻辑数值B口用作通用数字I/O时B8PBn通用I/O引脚DDRB中的DDBn选择引脚的方向如果DDBn为1则PBn为输出脚如果DDBn为0则PBn为输入脚在复位期间B口为三态口表 B口的配00N三态高阻01Y10N11N 6…0B口的第二功能SCK 当配置为输入DDB1=0无上拉电阻PB1=0时为模拟比较器的负输入 当配置为输入DDB0=0无上拉电阻PB0=0时为模拟比较器的正输入B口示意图图 B口示意图PB0和PB1图 B口示意图PB3图 B口示意图PB2和PB4B口示意图B口示意图B口示意图B口示意图图 B口示意图DD口有3个I/O地址数据寄存器PORTD $12$32数据方向寄存器DDRD $31和输入引脚PIND $10$30PORTD和DDRD可读可写PIND只可读D7I/O管脚PD6~PD020mA的电流能LED当管脚被拉低时如果上拉电阻已经激活则引脚会输出电流表 D口第二功管第二功能RXDUART接收引脚INT0外部中断0输入INT1外部中断1输入T0T/C0的外部输入T1T/C1的外部输入ICPT/C1的输入捕捉引脚D口数据寄存器76543210-R00000000D口D口数据方向寄存器 6543210-R00000000D口输入脚地址 543210-RRRRRRRR0PIND不是一个寄存器这个地址用来D口的物理值PORTD时读到的是D口锁存的数据而PIND时读到的是施加于引脚上的逻辑数值D口用作通用数字 通用I/O引脚DDRD中的DDDn选择引脚的方向如果DDDn为1则PDn为输出脚如果DDDn为0则PDn为输入脚在复位期间D口为三态口表 D口的配00N三态高阻01Y10N11N 6…0D口的第二功能 接收数据引脚使能后引脚自动配置为输入而不管 若此时为1则上拉有D口示意图
图 D口示意图图 D口示意图D口示意图D口示意图PD2D口示意图D口示意图PD4图 D口示意图程序编程程序和数据锁定位AT90S2313具有两个锁定 如表21所示锁定位只能通过片擦除命令擦表 程序锁定位保护类型模111201300注意 在并行编程模式下熔断位编程也 要先编程熔断位然后编程锁定熔断位AT90S2313有两个熔断 SPIEN和SPIEN编程为0后串行程序使能缺省值为0FSTRT编程为0后MCU选择短起动时间缺省值为1量大时用户也可以订购缺省值为0 串 熔断位只能在并 厂所有的Atmel微处理器都有3字节的厂标用以识别器件此代码在串行或并行模式下都可 $912K字节的 $01当$01地址为$91时器件为23133$00$01和编程FLASHAT90S23132KFLASH128EEPROM在出厂时已经被擦除为1器件支持+12V高压并行编程和低压串行编程+12V只用来使能高压编程不在两种编程模式下FLASHEEPROM片内集成了自擦和自定时除功能在编程时要注意电源电压要满足要求22型串行编程并行编程2.7V–4.5V–并行编程FLASHEEPROM图 并行编信号命名当驱动/WE或/OE时执行加载表 管脚命编程时的信号名称管功O 器件忙 I输出使能低电平I写脉冲低电平I字节选 低字 高字节IIPB0-双向数据总线/OE为低时输出表 XTAL1给正脉冲后的操作00加载FLASH或EEPROM的地址BS决定 01加载数据BS决定 1011表 命令字节执行的命令100001000010000100010000000000000000进入编程模式拉低/RESET和 等待至少给/RESET11.5~12.5VBS在/RESET加上+12V100ns之内发生动作将导致器件无法进入编程模式擦除FLASHEEPROM以及锁定位在FLASHEEPROM完全擦除之FLASHEEPROM重新加载擦除命令设置XA1XA0为 BS为0设置DATA为1000 擦除命XTAL1一个正脉冲加载命令给/WE施加一个tWLWH_CE的负脉冲擦除命令在RDY/BSY引脚没有反馈FLASH编程设置XA1XA0为 BS为0设置DATA为0001 写FLASH命XTAL1一个正脉冲加载命令加 设置XA1XA0为 设置BS为 设置DATA=地址的字节$00-给XTAL1一个正脉冲加载地址的字设置XA1XA0为 设置BS为 设置DATA=地址的低位字节$00~$FFXTAL1一个正脉冲加载地址的低位字节设置XA1XA0为 设置DATA=数据的低位字节$00~$FF XTAL1一个正脉冲加载数据的低位字节设置BS为 给/WR一个负脉冲开始编程数据同时RDY/BSYRDY/BSY变高然后开始编程下一字节波形见图50设置XA1XA0为 设置DATA=数据的字节XTAL1一个正脉冲加载数据的低位字节设置BS为 选择数给/WR一个负脉冲开始编程数据同时RDY/BSY等待RDY/BSY变高然后开始编程下一字节波形见图51器件在编程时保存加载令和地址为了有效地进行编程请注意以下几当写读多个内存地址时命令只需加载一仅在编程新的页256字节时才需要加载地址字因为擦除之后所有的FLASH和EEPROM的内容都为1故数据为$FF时可以EEPROM的编程以及FLASHEEPROM5051 A加载命令0000B加载地址的字节 加载地址的低位字节$00~$FF设置/OE和BS为0此时可以从DATA总线读FLASH数据的低位字设置BS为1此时可以读FLASH数据的字设置/OE为1编程 A加载命令0001B加载地址的低位字节$00~$3F 加载数据的低位字节$00~$FF 读 A加载命令0000B加载地址的低位字节设置/OE和BS为0此时可以从DATA总 数据的低位字设置/OE为1编程熔断位 A加载命令0100 加载数据的低位字节Bitn 代表要编 代表要擦Bit5=SPIENBit0 Bit7-6,4-1 1这些位是保留给/WR施加一个tWLWH_PFB的负脉冲此命令在RDY/BSY引脚没有编程锁定位 A加载命令0010 加载数据的低位字节Bitn 代表要编Bit2=LockBit2Bit1=LockBit1Bit7-3,0 1这些位是保留 读熔断位和锁定 A加载命令0000设置/OE为0BS为1此时可以从DATA总线数Bit7=LockBit1Bit6=LockBit2Bit5=SPIENBit0=FSTRT设置/OE为1读厂标 A加载命令0000C加载数据的低位字节$00~$02设置/OE为0BS为0 设置/OE为1并行编程特性图 表 并行编程特性TA= VCC=5VVAData&ControlSetupbeforeXTAL1XTAL1Lowto/WRXTAL1Lowto/OE/WRPulseWidthLowforChip5B/WRPulseWidthLowforProgrammingFuse注1在擦除时使用tWLWH_CE而在编程锁定位是使用2tWLWHtWLRH长则看不见RDY/BSY脉串当/RESET拉到地时FLASH和EEPROM可以利用SPI总线进行串 SCKMOSI和 /RESET拉低后在进行编程/擦除之前首先要执行编程使能指图 EEPROM由于其本身有自动擦除功能和自定时功能因此更新时无需擦除擦除指令将使FLASH和EEPROM的内容全部变为$FFFLASH和EEPROM的地址是分离的FLASH的范围是 EEPROM的范围XTAL1引脚输入或是将晶振接到XTAL1XTAL2SCK脉冲的最小高低电低2XTAL1时钟高2XTAL1串行编程算法进行串行编程时数据在SCKAT90S2313SCK的下降沿输出至少等待 然后在MOSIPB5串行输入编程使能指3个字节的时候器件会响应第二个字节$53不论响应正确与否4字节指令必须发完如果响应不是$53SCK32次都没如果此时执行了擦除指令则须等待tWD_ERASE 然后在/RESET上施加正脉冲回到第FLASHEEPROMtWD_PROG的时间对于擦除过的器件数据$FF就用不着再写了任意一个内存地址都可以用读指令在MISOPB6读编程结束后可以把/RESET拉高进入正常工作模式下电过程如果需要的将XTAL1拉低如果没有用外部晶振或者用的是内部RC振荡器把/RESET拉高EEPROM数据检测EEPROM时如果内部的自擦除过程没有结束读正在写的地址会得到P1自擦除过程结束后器件则返回P2P1和P2的定义见表27当写过程结束后的数据则为写入P1P2就不可以用这种方法了此时应当在编程新数据之前至少等待tWD_PROG的时间如果在编程EEPROM之前已经进行过擦除则数据$FF就可以不用再编程了表 型FLASH数据检测写FLASH时如果内部写过程没有结束则正在写的地址时会得到返回值$7F否则结果为写入的数据但是对于数据 间如果在编程FLASH之前已经进行过擦除则数据$FF就可以不用再编程图 表 指指令格式操字节字节字节字节10100101xxxxxxxx1010100xxxxxxxxxFLASH00100000oooo从字地址a:b高或低字节o01000000iiii写H高或低字101000000bbboooo从地址 数据11000000iiii1010111xxxxxxxxx0011xxxxxxxxoooo从地址b读厂标 a=地址高b=地址H0低地址1o=输出数i=输入数x=任1=Lock2=Lock注意厂标不能在锁定模式3串行编程电特性55表30串行编程电特性TA=- 到 VCC=2.7V–符参最小值典型值最大值单1/振荡频率VCC2.7V–04振荡周期VCC2.7V–1/振荡频率VCC=4.0V08振荡周期VCC=4.0VSCK2SCKMOSISetuptoSCKMOSIHoldafterSCK21符22符直流特性TA=- 到 VCC=2.7V–符参条最小值典型值最大值单-0.3VCCV-0.1V0.6VCCVCCV0.7VCCVCCV0.85VCCVCCV3BDIOL=20mAVCC=V3DIOLVCC=4BDIOH=20mAIOHVCC=5VVCC=V流I/OVCC=pinA流I/OVCC=pin阻kI/Ok工作状态VCC3V闲置状态VCC3VWDTVCC=9AVCC=AVCC=流VCC=5VVIN=VCC-VCC=注1最大值代表保证可02最小值代表保证可1所有管脚的IOL之和过D0–D5和ZTAL2的IOL之和过100mAB0–B7和D6的IOL之和过100mA所有管脚的IOH之和过D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏电池生产线参观保密协议书
- 慢性肿瘤用药指导
- 综合货物运输基础
- 2024年高考语文备考:非连续性文本+提出对策措施
- 2024年高考语文冲刺小题增分练03含答案
- Zika学前教育体系构建路径
- 为谁工作总结汇报
- 猪胸膜肺炎放线杆菌研究概述
- 足浴行业服务培训
- 知“帕”不怕:科学防治帕金森病健康宣教
- 浙江省湖州市德清县2024-2025学年小升初必考题数学检测卷含解析
- 2025年春季高一年级入学考试英语试卷
- 剖宫产手术围手术期预防用抗菌药物管理实施细则
- 2024北京海淀区高一(下)期末英语试题和答案
- 2025年心电图机使用说明标准课件
- 考官Simon雅思大作文范文
- 国内外数智赋能课程教改的现状与趋势
- 《髋关节盂唇损伤》课件
- 部编版四年级道德与法治下册期末复习课件
- 湘潭大学《数学分析(I)》2023-2024学年第二学期期末试卷
- DBT29-81-2010 天津市园林绿化工程施工质量验收标准
评论
0/150
提交评论