ARM-Cortex-M4学习与实践-纪成解析_第1页
ARM-Cortex-M4学习与实践-纪成解析_第2页
ARM-Cortex-M4学习与实践-纪成解析_第3页
ARM-Cortex-M4学习与实践-纪成解析_第4页
ARM-Cortex-M4学习与实践-纪成解析_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARMCortex-M4学习与实践山东高校智能车工作室 纪成2013年3月山东高校Kinetis培训——基于飞思卡尔Kinetis系列山东高校Kinetis培训飞思卡尔Kinetis功能特性1K60开发生态系统介绍2IAR+Jlink开发K60方法K60代码框架分析K60外设资源在智能车中的应用K60学习资源整理63451、ARM发展史

一、飞思卡尔Kinetis功能特性山东高校Kinetis培训2、ARMv7处理器分类

3、ARMCortex-M4特性

4、飞思卡尔Kinetis家族介绍

5、K60内部资源介绍

ARM发展史山东高校Kinetis培训ARM架构发展历程ARMv7处理器分类山东高校Kinetis培训ARMv7依据应用分类:应用处理器(Cortex-A系列)AplicationProcessor实时限制器(Cortex-R系列)Real-timeProcessor微限制器(Cortex-M系列)MicroController即最快频率、最高性能、合理功耗实时响应、合理性能、较低功耗一般性能、最低成本、极低功耗ARMCortex-M4特性ARMCortex-M4处理器是在M3的基础上强化了运算实力,接受一个扩展的单时钟周期乘法累加(MAC)单元,优化的单指令多数据(SIMD)指令,饱和运算指令和一个可选的单精度浮点单元(FPU),源于Cortex-M4系列一些创新性的技术,包括:RISC处理器内核,高性能32位CPU、具有确定性的运算、低延迟3阶段管道,可达1.25DMIPS/MHz;Thumb-2指令集,16/32位指令的最佳混合,供应最佳代码密度;低功耗模式,支持多种状态低功耗模式;嵌套矢量中断限制器(NVIC),低延迟、低抖动中断响应、支持以纯C编写中断服务例程,能精彩的完成中断处理;广泛的工具和RTOS支持,广泛的第三方工具支持、Cortex微限制器软件接口标准(CMSIS)最大限度缩短开发周期和难度;CoreSight调试和跟踪,JTAG和2针串行线调试(SWD)连接、支持多处理器、支持实时跟踪。山东高校Kinetis培训飞思卡尔Kinetis家族山东高校Kinetis培训飞思卡尔Kinetis家族山东高校Kinetis培训飞思卡尔KinetisK系列山东高校Kinetis培训增加段式液晶的驱动增加USB功能增加模拟测量引擎,以太网和硬件加密增加USB功能增加图形液晶驱动增加以太网,硬件加密,温度检测和DRAM限制器Kinetis命名规则山东高校Kinetis培训字段说明取值Q质量状态M=正式发布芯片;P=工程测试芯片K##Kinetis系列号K20A内核属性D=Cortex-M4w/DSP;F=Cortex-M4w/DSP和FPUMFlash存储类型N=仅包含程序Flash;X=包含程序Flash和FlexMemoryFFF程序Flash大小32=32KB;64=64KB;128=128KB;256=256KB;512=512KB;1M0=1MBR硅材料版本空=主要使用的版本;Z=初始版本;A=主要使用版本的更新T温度范围V=–40到105摄氏度;C=–40到85摄氏度K60内部资源介绍山东高校Kinetis培训K60内部资源介绍山东高校Kinetis培训K60(K60N512VLL100)封装LQFP100(14mm*14mm)可用IO70FLASH512kbyteRAM128kbyte非易失存储无CPU类型ARMCortex-M4CPU最大速度100M完整并行IOPTC0-15,PTD0-7K60内部资源介绍山东高校Kinetis培训K60(K60N512VLL100)UART4个(UART0~UART3)SPI3个(SPI0~SPI2)I2C2个(I2C0~I2C1)InputCapture输入捕捉FlexTimer模块,有硬件16bit计数器,至少8通道PWMFlexTimer模块,16bit计数器FTM0——8通道FTM1——2通道FTM2——2通道SD卡控制器1个(SDHC0)外部中断所有IO都可触发中断(PTA~PTE)DMA控制器56个源,16通道K60内部资源介绍山东高校Kinetis培训K60(K60N512VLL100)ADC通道数4组差分输入,24个单端ADC精度差分模式可编程16位,13位,11位和9位精度单端模式可编程为16位,12位,10位和8位精度ADC最大速度361ksps/16bit,818ksps/<=13bitADC特殊功能可编程增益的放大器(PGA)硬件平均功能(HardwareAverageFunction)DAC12bit/1通道模拟比较器3通道开发环境CW10.1、IAR、MDK山东高校Kinetis培训二、K60开发生态系统软件应用调试工具开发环境其他支持Kinetis开发环境支持Kinetis开发的IDE(集成开发环境)目前主要包括CodeWarrior10.1及以上版本,IAR6.1及以上版本和KeilMDK(即KeilforARM)等。山东高校Kinetis培训Kinetis开发环境山东高校Kinetis培训CodeWarrior10.2Kinetis开发环境山东高校Kinetis培训IAR6.3Kinetis开发环境山东高校Kinetis培训开发环境对比山东高校Kinetis培训CodewarriorIARKeilMDK优点1、基于Eclipse开发平台,编辑界面交互功能强大;2、采用GCC编译器和GDB调试器;3、对飞思卡尔的MCU支持较好。4、可以向导化生成启动代码,上手简单。1、界面简洁,操作方面;2、老牌编译器厂商,自家的IAR编译器的编译效率较高;3、第三方插件支持丰富;4、支持在线实时仿真。1、界面简洁而且友好,上手简单;2、被ARM收购,编译器对ARM内核支持相对较好;3、可以向导化生成启动代码,方面开发。缺点成于Eclipse,也败于Eclipse,需要运行在java虚拟机之上,软件体积庞大,对PC机硬件要求高。不支持生成启动代码,需要自己建立开发模板,上手较难。编译速度较慢,效率一般。Kinetis调试工具目前Kinetis的调试工具主要有飞思卡尔自己的OSBDM及USBDM、P&EMultilink、J-Link和ulink等等,其中JLink(目前发展到V8版本)以其支持范围广、价格便宜、速度快等优势得到广泛应用。山东高校Kinetis培训J-LinkP&EMultilinkOSBDM山东高校智能车工作室依据开源资料,自行设计了OSBDM调试器和USBDM调试器,其中OSBDM由飞思卡尔官方开源,目前由P&E公司维护,USBDM由网友pgo开源和维护。

经过二次设计和完善,目前山大设计的OSBDM分别支持CW、IAR和KeilMDK三种开发环境,而且支持飞思卡尔几乎全系列MCU,包括:

FreescaleHCS12/HCS12(X)/HCS08(已测试MC9S12DG128、MC9S08JM60)

FreescaleColdfireV1,V2,V3,V4(已测试MCF52259)

FreescaleDSC全系列(已测试MC56F8366)

FreescalePowerPC架构的Qorivva系列(已测试MPC5604B)

FreescaleCortex-M4核的Kinetis系列(已测试K10、K60)Kinetis调试工具山东高校Kinetis培训Kinetis开发板山东高校Kinetis培训山东高校Kinetis培训三、IAR+Jlink开发K60方法IAR+Jlink开发K60方法山东高校Kinetis培训山东高校Kinetis培训四、K60代码框架分析K60上电启动依次山东高校Kinetis培训(1)上电起初,单片机的电压调整器会把整个系统置于POR(上电复位)状态的上电阶段,始终到工作电压达到了可以让单片机正常工作的电压阈值之后才释放这个上电阶段,进入复位阶段;(2)在复位保持期间,由单片机内部的模式限制复位逻辑统筹支配整个复位阶段的执行依次;(3)首先MCG模块使能,并默认为FEI时钟模式;(4)相应模块的时钟使能,包括Coreclock,Systemclock,Flashclock,busclock等这些不须要门控(clock

gate,M4的特色)限制的时钟;(5)Flash限制器从复位状态释放(留意这时外部RESET脚照旧保持低电平),并且执行一系列的初始化操作(因为要为接下来的代码执行做准备了);K60上电启动依次山东高校Kinetis培训(6)单片机/RESET引脚释放,但是系统复位状态接着保持,始终到上面的Flash限制器初始化完毕(假如Flash限制器提前初始化好,则/RESET引脚释放后立刻从POR状态醒悟);(7)Kinetis从复位状态唤醒之后,起先设置堆栈(stack),程序计数器(PC)和连接寄存器(LR),即从中断向量表地址0读取内容给堆栈指针,地址4读取内容给PC指针,LR寄存器设置为0xFFFF_FFFF。(8)上面三个寄存器设置好了之后,单片机就起先从PC指针指向的地址起先执行代码了,即进入启动代码阶段,最终才转到main起先执行。K60启动代码分析山东高校Kinetis培训RestHandler清零通用寄存器组跳转到Kinetis_Start_C关闭看门狗假如从ROM启动,则复制中断向量表到RAM中修改中断向量表地址为RAM中的地址复制初始化数据段.data到RAM把以ram_function声明的函数拷贝到RAM中清零RAM中初始化为0的.BSS段初始化锁相环PLL跳转到main函数内存映射.map文件分析山东高校Kinetis培训山东高校Kinetis培训五、K60外设资源在智能车中的应用K60外设资源在智能车中的应用K60高精度高速的AD,可以有效的采集传感器模拟参数;K60的每个IO都可以设置为中断触发源,为智能车硬件设计供应更大的灵敏性;K60的FTM模块可以供应PWM通道,限制智能车的舵机和电机;K60的PIT模块实现周期性中断,供应时间基准,或者与LPTMR模块的脉冲累加功能实现速度测量;K60运用ARMCortex-M4的核,具有1.25DMIPS/MHz的运算实力,另外还有单时钟周期乘法累加(MAC)单元,优化的单指令多数据(SIMD)指令、饱和运算指令等,使更加困难的处理算法的实现成为可能。山东高校Kinetis培训K60外设资源山东高校Kinetis培训GPIO模块山东高校Kinetis培训GPIO模块须要考虑如下几个寄存器: PORTx_PCRn——端口限制寄存器,管理管脚复用 GPIOx_PDDR——端口数据方向寄存器 GPIOx_PDOR——端口数据输出寄存器 GPIOx_PDIR——端口数据输入寄存器 GPIOx_PTOR——端口输出翻转寄存器GPIO模块山东高校Kinetis培训PORTx_PCRMUX-管脚复用限制PE-拉电阻使能0——禁能上拉或者下拉电阻1——禁能上拉或者下拉电阻PS-拉电阻属性设置0——使能下拉电阻1——使能上拉电阻GPIO模块山东高校Kinetis培训GPIOx_PDDRGPIO模块山东高校Kinetis培训GPIOx_PDORGPIO模块山东高校Kinetis培训GPIOx_PDIRGPIO模块山东高校Kinetis培训GPIOx_PTORGPIO模块山东高校Kinetis培训例程:PORTE_PCR(10)|=PORT_PCR_MUX(1);//使能PTE10为GPIO

GPIOE_PDDR|=1<<10;//设置PTE10为输出

GPIOE_PDOR&=~(1<<10);//设置PTE10输出为0A/D模块山东高校Kinetis培训K60的AD模块特点:(1)最高16位AD转换精度,逐次靠近型的,所以速度没问题,而且能做到如此精度已实属不易了,再往高估计就该换Σ-Δ的了;(2)最多4对差分模拟输入通道和24个单端模拟输入通道,对一般工业应用足够了;(3)输出精度可选,差分模式可编程16位,13位,11位和9位模式,单端模式可编程为16位,12位,10位和8位;(4)输入时钟可选四种时钟,即bus_clock,bus_clock/2,ALTCK,ADACK;(5)内设内部温度传感器,用于监控芯片温度;(6)硬件平均功能,对AD转换结果在队列里平均之后输出;(7)带自校准模式;(8)最高64倍PGA(programablegainAmplifier)。A/D模块山东高校Kinetis培训A/D模块须要考虑如下几个寄存器: ADCx_SC1n——ADC状态及限制寄存器1 ADCx_CFG1——ADC配置寄存器1 ADCx_CFG2——ADC配置寄存器2 ADCx_Rn——ADC结果寄存器 ADCx_SC2——ADC状态及限制寄存器2A/D模块山东高校Kinetis培训voidADC_Init1(void){SIM_SCGC3|=(SIM_SCGC3_ADC1_MASK);//打开ADC1门控时钟

ADC1_CFG1=ADC_CFG1_ADIV(3)//输入时钟8支配|ADC_CFG1_MODE(0)//8位精度|ADC_CFG1_ADICLK(0);//时钟源为Busclk

ADC1_SC2=0;

ADC1_SC1A=ADC_SC1_ADCH(20);//选择AD1_20通道

ADC1_SC1A&=~ADC_SC1_AIEN_MASK;//禁止转换完成中断}ADC初始化函数:A/D模块山东高校Kinetis培训voidRead_ATD1(uint8*pbuf,uint16len){do{ADC1_SC1A|=ADC_SC1_ADCH(20);//写入ADCx_SC1A触发转化while(!(ADC1_SC1A&ADC_SC1_COCO_MASK));*pbuf++=(uint8)ADC1_RA;}while(--len);}ADC读函数:PWM模块山东高校Kinetis培训FTM模块的特点:1、时钟源可选择,FTM的时钟源可以来自系统时钟或外部时钟。可对时钟分频,分频比为1,2,4,8,16,32,64,128,这属于定时器的特性;2、最多3个FTM定时器FTM0、FTM1、FTM2,即可以有3个自由计数器,也即可以存在独立的3路PWM模块;3、全部的通道都可以设置为中心对齐的PWM输出模式,且某个FTM定时器中的每对通道都可以级联以产生PWM信号;4、PWM通道可成对工作在相同输出或互补输出,也可各通道独立输出,当通道成对互补输出时可运用死区插入功能,这对一些全桥限制电路有很大意义,省去了外围死区电路;5、可软件限制PWM的输出,即屏蔽或者开启单独某个通道。PWM模块山东高校Kinetis培训PWM模块须要考虑如下几个寄存器:PORTx_PCR——端口限制寄存器FTMx_MODE——特征模式选择寄存器FTMx_SC——状态及限制寄存器FTMx_OUTINT——通道输出初始状态寄存器FTMx_CNT——计数寄存器FTMx_OUTMASK——输出屏蔽寄存器FTMx_MOD——模数寄存器(周期寄存器)FTMx_CnSC——通道状态及限制寄存器FTMx_CnV——通道值寄存器(占空比寄存器)FTMx_CNTIN——计数器初始值寄存器PIT模块山东高校Kinetis培训PIT模块山东高校Kinetis培训PIT模块须要考虑如下几个寄存器: PIT_MCR——PIT模块限制寄存器 PIT_LDVALn——定时器加载寄存器 PIT_TCTRn——定时器限制寄存器 PIT_TFLGn——定时器标记寄存器PIT模块山东高校Kinetis培训PIT_MCRPIT模块山东高校Kinetis培训PIT_LDVALnPIT模块山东高校Kinetis培训PIT_TCTRLPIT模块山东高校Kinetis培训voidPIT_Init(void){SIM_SCGC6|=SIM_SCGC6_PIT_MASK;//打开PIT时钟PIT_TCTRL0&=~PIT_TCTRL_TEN_MASK;//停止定时PIT_MCR=0x00;//使能PIT功能PIT_LDVAL0=PIT_LDVAL_TSV(1000*Kinetis_CORE_CLK/Kinetis_DIV_BusClk);//设置定时时间,us单位,1ms定时PIT_TCTRL0|=PIT_TCTRL_TIE_MASK;//使能定时中断Kinetis_Enable_Irq(INT_PIT0-16);//开启PIT0IRQ中断

PIT_TCTRL0|=PIT_TCTRL_TEN_MASK;//起先定时}PIT初始化函数:PIT模块山东高校Kinetis培训voidPIT0_ISR(void){PIT_TCTRL0&=~PIT_TCTRL_TEN_MASK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论