ARM硬件结构应用(1~).ppt

上传人:max****ui 文档编号:3391087 上传时间:2019-12-13 格式:PPT 页数:59 大小:1.37MB
返回 下载 相关 举报
ARM硬件结构应用(1~).ppt_第1页
第1页 / 共59页
ARM硬件结构应用(1~).ppt_第2页
第2页 / 共59页
ARM硬件结构应用(1~).ppt_第3页
第3页 / 共59页
点击查看更多>>
资源描述
1.LPC和STM32简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入,LPC和STM32系列ARM硬件结构与应用,8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟,1LPC和STM32系列简介,LPC2000系列微控制器基于ARM7TDMI-SCPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。,简介,LPC2000系列ARM产品,LPC2100系列LPC2200系列LPC2300系列LPC2400系列LPC2800系列,器件信息,关于LPC2000其它器件的介绍请登录“LPC2000系列ARM”专栏,芯片内部结构,LPC2000系列微控制器包含4大部分:,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到512K的闪存,不同的是SRAM的最大容量和外设接口的组合。,STM32系列ARM产品,市面流通的型号有:基本型:STM32F101R6STM32F101C8STM32F101R8STM32F101V8STM32F101RBSTM32F101VB增强型:STM32F103C8STM32F103R8STM32F103V8STM32F103RBSTM32F103VBSTM32F103VESTM32F103ZE,LPC引脚描述,LPC2000系列芯片外形,LPC2210/2220/2212/2214,LPC2114/2124,STM32引脚描述,STM32系列芯片外形,STM32F103C8,STM32F103VC,2.STM32固件库,STM32的固件库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。,2.STM32固件库,每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源代码都符合“StrictANSI-C”标准。由于整个固态函数库按照“StrictANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。,2.STM32固件库,STM32的固件库对STM32的所有资源ADC、GPIO、SPI、IWDG、USART等都进行了封装,当需要使用其资源时,只需要先在固件库的基础上进行编程。这样就大大提高了产品的研发效率。,2.STM32固件库,2.STM32固件库,2.STM32固件库例子,3系统控制模块,1.系统控制模块功能汇总2.系统时钟概述3.时钟部件晶体振荡器4.复位5.时钟部件唤醒定时器,6.时钟部件PLL(锁相环)7.时钟部件VPB分频器8.存储器映射控制9.功率控制,3.1系统控制模块功能汇总,概述,一个ARM芯片中通常有很多功能部件,有一些部件是全局性的,它们状态的改变可能引起整个系统运行状态的改变,这些部件我们统一称之为系统控制模块。,在这些系统控制模块中,有些部件需要外部引脚的配合,如晶体振荡器、外部复位输入。,3.1系统控制模块功能汇总,在系统控制模块中,有些部件需要在进行寄存器配置后才能正常工作,如存储器映射控制、锁相环、功率控制、VPB分频器。,3.2时钟系统,概述,时钟是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等。所以时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等。,3.2时钟系统,时钟系统结构,ARM微控制器的时钟系统包括四个部分:晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。,外接晶体或外接时钟源,产生稳定的时钟信号,将Fosc提升到合适的频率,1,3,4,2,3.3时钟部件晶体振荡器,概述,LPC2000系列微控制器的晶体振荡器可以使用外部时钟源(从属模式),也可以使用外接晶体和片内振荡电路(振荡模式)产生时钟。,3.3时钟部件晶体振荡器,从属模式,使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:150(MHz),其幅度范围为:200mV1.8V。,3.3时钟部件晶体振荡器,振荡模式,使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:130(MHz)。,3.3时钟部件晶体振荡器,注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在1025(MHz)之间。,3.4复位,概述,复位指将计算机系统中的硬件逻辑归位到一个初始的状态,比如让寄存器恢复默认值、让处理器从第一条指令开始执行程序等。LPC2000系列芯片有两个复位源:1、外部复位把nRESET引脚拉为低电平,并保持一个最小时间,引发复位2、看门狗复位通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位,3.4复位,硬件复位流程,OSC,0V,0V,处理器状态,1.65V,3.0V,复位时间,唤醒定时器计数4096个时钟,Boot代码执行时间,执行用户代码,VDD3.3V,VDD1.8V,3.3V,1.8V,稳定时钟,0.5ms,T0,T1,T2,T3,(振荡模式,12MHz晶振),两个电源的上电顺序没有限制,复位信号要保持一段时间,晶振开始起振,(系统上电),振荡器稳定所需时间,芯片时钟输入信号,=10ms,=300ns,振荡器处于稳定工作状态,3.4复位,外部复位,3.4复位,复位与电源上电次序,V18:数字1.8V供电电源V18A:模拟1.8V供电电源,V3:数字3.3V供电电源V3A:模拟3.3V供电电源,CPU内核,片内外设,电源管理,1.8V为内核供电,因此1.8V电源必须正常上电。,3.4复位,复位及复位芯片配置,一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。阻容式复位电路:,电容两端电压不能突变,产生低电平脉冲复位,电源消失提供迅速放电回路,对电容充电,电容两端电压稳定为电源电压,这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用CAT809、SP708和CAT1025等专门的复位芯片。,3.5时钟部件唤醒定时器,概述,唤醒定时器能够确保振荡器和芯片内部硬件电路在处理器开始执行指令之前有足够的时间初始化。工作原理如图:,对输入时钟计数,计数满4096个周期后,控制开关闭合,为CPU提供时钟,3.5时钟部件唤醒定时器,概述,当给芯片加电或某个事件使芯片退出掉电模式后,振荡器就开始工作,但是需要一段时间来产生足够振幅的信号驱动时钟逻辑。振荡的波形大致如下:,注:唤醒定时器就通过监测晶振状态来判断是否能开始可靠的执行代码。,3.5时钟部件唤醒定时器,唤醒定时器与时钟的关系,唤醒定时器检测到有效时钟信号后,计数4096个时钟脉冲,并在这段时间里初始化系统硬件。如芯片满足运行条件(Flash初始化完成、外部复位信号已撤除等),接通系统时钟,处理器开始执行指令。总之,唤醒定时器是根据晶振的情况来执行最短时间的复位,它在处理器从掉电模式中唤醒或发生了任何复位时激活。,3.6时钟部件PLL(锁相环),概述,ARM芯片内部均具有PLL电路,振荡器产生的时钟Fosc通过PLL升频,可以获得更高的系统时钟(Fcclk)。,输入范围1025MHz,将FOSC提升到1060MHz,PLL内部结构框图,3.6时钟部件PLL(锁相环),PLL的锁定过程,CCO的输出频率受到“相位频率检测”部件的控制,输出所需频率的过程不是一蹴而就的,而是一个拉锯反复的过程。,CCO的输出频率在高低起伏一段时间后渐渐稳定在了预期的频率值,输出频率稳定后即“锁定”成功,3.6时钟部件PLL(锁相环),寄存器描述,与PLL相关的寄存器有四个,其中三个为控制寄存器,还有一个是状态寄存器。,寄存器描述,PLLCFG.MSEL4:0,PLLCON.PLLE,PLLCFG.PSEL1:0,PLLCON.PLLC,PLL控制寄存器(PLLCON):,PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;,PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。,PLL配置寄存器(PLLCFG):,MSEL4:0:PLL倍频器值,在PLL频率计算中其值为(M-1);,PSEL1:0:PLL分频器值,在PLL频率计算中其值为P。,PLL状态寄存器(PLLSTAT):,MSEL4:0、PSEL1:0、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;,PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。,PLL控制位组合:,寄存器描述,PLL馈送寄存器(PLLFEED):,PLLFEED7:0:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效。馈送序列分两步进行,如下所示:step1.将值0 xAA写入PLLFEEDstep2.将值0 x55写入PLLFEED,操作示例DISABLE_IRQ();/关闭中断,防止馈送序列操作被打断PLLFEED=0 xAA;/馈送序列第一步PLLFEED=0 x55;/馈送序列第二步ENABLE_IRQ();/馈送序列操作结束,打开中断注:这两个写操作的顺序必须正确,且必须是连续的VPB总线周期。,3.6时钟部件PLL(锁相环),PLL和掉电模式,掉电模式会自动关闭并断开PLL。从掉电模式唤醒不会自动恢复PLL的设定,PLL的恢复必须由软件来完成。通常,首先将PLL激活并等待锁定,然后再将PLL连接。注:不要试图在掉电唤醒之后简单地执行馈送序列来重新启动PLL,因为这会在PLL锁定建立之前同时使能并连接PLL。,3.6时钟部件PLL(锁相环),PLL频率计算,Fosc为晶体振荡器的输出频率,即PLL的输入频率,FOSC,FCCO,FCCO/(2p),FCCO/(2pM),连接PLL之后FCCLK=FCCO/(2p),Fcco为PLL电流控制振荡器的输出频率,Fcclk为PLL最终的输出频率(也是处理器的时钟频率),Fcco经过“2P分频”部件后得到Fcco/(2p)的频率,Fcco/(2p)信号经过“M分频”部件,得到Fcco/(2pM)的频率,PLL锁定后相位频率检测的两输入端信号的频率相等,3.6时钟部件PLL(锁相环),PLL频率计算,可以得出以下几个等式:Fosc=Fcco/(2pM)Fcco=Fosc(2pM)Fcclk=Fcco/(2p)Fcco=Fcclk(2p)最后得出PLL的输出频率(当PLL激活并连接时)为:Fcclk=MFosc或Fcclk=Fcco/(2P)CCO输出频率为:Fcco=Fcclk2P或Fcco=FoscM2P,3.6时钟部件PLL(锁相环),确定PLL设定的过程,2.选择合适的晶振频率,3.计算M值,4.计算P值,1.确定处理器时钟频率,PLL设置举例,系统要求Fosc10MHz,Fcclk60MHz。根据这些要求:确定Fcclk60MHz;选择Fosc10MHz;计算M=Fcclk/Fosc60MHz/10MHz6。M-15,所以写入PLLCFG4:000101;计算P=Fcco/(Fcclk*2),其中Fcco为156320MHz。当Fcco156MHz时,P=156MHz/(2*60MHz)1.3当Fcco320MHz时,P=2.67P取整数2,所以写入PLLCFG6:5=01。,PLL设置举例,PLL配置过程:,uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco)uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i)case2:plldat=(Fcclk/Fosc)-1)|(05);break;case4:plldat=(Fcclk/Fosc)-1)|(15);break;case8:plldat=(Fcclk/Fosc)-1)|(25);break;case16:plldat=(Fcclk/Fosc)-1)|(35);break;default:return(FALSE);break;PLLCON=1;PLLCFG=plldat;PLLFEED=0 xaa;PLLFEED=0 x55;while(PLLSTAT,计算PLL分频值,参数是否合法,使能PLL,设置PLL分频值,等待PLL锁定,连接PLL,PLL馈送序列,正确返回,错误返回,PLL馈送序列,N,Y,在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。、HSI是高速内部时钟,RC振荡器,频率为8MHz。、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz16MHz。、LSI是低速内部时钟,RC振荡器,频率为40kHz。、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为216倍,但是其输出频率最大不得超过72MHz。,STM32时钟,3.7时钟部件VPB分频器,概述,VPB总线是芯片的内部总线,上面挂接着绝大部分的外设,而这些外设的工作速度相对于ARM内核来说都要慢一些,VPB分频器决定了处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的关系。,VPB分频器,VPB分频器主要有两个用途:将处理器时钟(cclk)分频,以便外设在合适的速度下工作。降低系统功耗。,3.7STM32时钟部件VPB分频器,系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、HSI、HSE。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各个模块使用,AHB分频器可以选择1、2、4、8、16、64、128、256、512分频,其分频器输出的时钟送给5大模块使用:,(1)送给AHB总线、内核、内存和DMA使用的HCLK时钟(2)通过8分频后送给Cortex的系统定时器时钟;(3)直接送给Cortex的空闲运行时钟FCLK;(4)送给APB1分频器。APB1分频器可以选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可以选择1或者2倍频,时钟输出供定时器2、3、4使用。,(5)送给APB2分频器。APB2分频器可以选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另外一路送给定时器(Timer)1倍频使用。该倍频器可以选择1或2倍频,时钟输出供定时器1使用。另外APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。,连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PAPE)、第二功能IO口。,STM32时钟的初始化,(1)将RCC寄存器重新设置为默认值:RCC_DeInit;(2)打开外部高速时钟晶振HSE:RCC_HSEConfig(RCC_HSE_ON);(3)等待外部高速时钟晶振工作:RCC_WaitForHSEStartUp();(4)设置AHB时钟(HCLK):RCC_HCLKConfig;(5)设置高速AHB时钟(APB2):RCC_PCLK2Config;(6)设置低速AHB时钟(APB1):RCC_PCLK1Config;(7)设置PLL:RCC_PLLConfig;(8)打开PLL:RCC_PLLCmd(ENABLE);(9)等待PLL工作:RCC_GetFlagStatus(RCC_FLAG_PLLRDY);(10)设置系统时钟:RCC_SYSCLKConfig;(11)判断PLL是否是系统时钟:RCC_GetSYSCLKSource();(12)打开要使用的外设时钟:RCC_APB1PerphClockCmd().,STM32时钟的初始化举例,STM32时钟的初始化举例,STM32时钟的初始化举例,3.8功率控制,概述,注:ARM芯片还允许程序对某个外设进行关闭控制。外设的功率控制特性允许独立关闭应用中不需要的外设,这样进一步降低了功耗。,CPU核,定时器0,定时器1,时钟系统,.,A/D转换,FCCLK,FVPB,POWER,系统掉电,寄存器描述,功率控制寄存器(PCON):,置位IDL位,将会进入空闲模式。,置位PD位,将会进入掉电模式。,注:如果两位都置位,则进入掉电模式。,CPU空闲,PCON寄存器包含两个位。,外部功率控制寄存器(PCONP):,该寄存器允许将所选的外设功能关闭以实现节电的目的。,注:有少数外设功能不能被关闭(看门狗定时器、GPIO、引脚连接模块和系统控制模块)。,PCONP中的每个位都控制一个外设,清除对应位关闭功能。如清除PCTIM0位,关闭定时器0功能。,3.8功率控制,功率控制注意事项,外部复位后,PCONP的值已经设置成使能所有接口和外围功能,所以用户不再需要去打开某个外设。在需要控制功率的系统中,只要将应用中用到的外围功能的对应在PCONP寄存器的位置1,寄存器的其它“保留”位或当前不需使用的外围功能对应在寄存器中的位都必须清零。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!