飞思卡尔K60入门
- 格式:ppt
- 大小:4.67 MB
- 文档页数:56
/*----------------------------------------------------------------------------------------------------------------------------- 桂林电子科技大学物联网工程Editor:JaceLin Date:2014.2.5-------------------------------------------------------------------------------------------------------------------------------- 一、DMA特性1)k60有16个DMA通道二、寄存器1)控制寄存器:DMA_CR31-18 reserved17 CX 取消转移,0正常操作,1取消剩下数据转移16 ECX 错误取消转移,0正常操作,1取消转移15-8 reserved14 EMLM 使能副循环映射0 禁止,TCDn.word2 为32位1 使能,TCDn.word被重新定义6 CLM 持续连接模式,0当副循环结束后,再次激活DMA要通过裁决,1不用裁决5 HALT 停止DMA操作,0正常模式,1停止DMA操作4 HOE 错误时停止,0正常操作,1当有错误时HALT=1,也就是DMA停止3 reserved2 ERCA 使能循环通道裁决,1 EDBG 使能调试,写0,调试也用DMA,写1,调试时DMA不可用0 reserved2)错误状态寄存器DMA_ES31 VLD 所有错误状态位逻辑或,0没有错误,1表示至少有1个错误没有清除30-17 保留16 ECX 转移被取消0没有被取消的转移,1最后一次记录是被取消的转移15 保留14 CPE 通道优先错误,0没有通道优先错误,1有13-12 保留11-8 ERRXHN 错误通道位/被取消的位(最多16位)7 SAE 源地址错误,0没有源地址配置错误,1有错误6 SOE 源偏移错误,0没有源偏移配置错误,1有偏移配置错误5 DAE 目标地址错误,0没有错,1有错误4 DOE 目标偏移错误,0没有错误,1有3 NCE NBYTES/CITER配置错误,0没有,1有2 SGE Scatter/Gather配置错误,0没有,1有1 SBE 源总线错误,0没有错误,1有0 DBE 目标总线错误,0没有,1有3)使能请求寄存器DMA_ERQ (16个通道的请求信号寄存器)以下都是0禁止,1使能:31-16 保留15-0 ERQ15-ERQ04)使能错误中断寄存器DMA_EEI (16个通道的错误中断寄存器)以下都是0禁止,1使能:31-16 保留15-0 EEI15-EEI05)清除使能中断寄存器DMA_CEEI(清除EEI的使能中断)7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 CAEE 清除所有使能错误中断,写0清除特定EEI,写1清除所有EEI5-4 保留3-0 清除使能错误中断(一共16位,写相应位表示选定,通过CAEE清除)6)设置使能错误中断寄存器DMA_SEEI7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 SAEE 设置所有使能错误中断,写0设置特定EEI,写1设置所有EEI5-4 保留3-0 设置使能错误中断(一共16位,写相应位表示选定,通过SAEE设置)7)清除使能请求寄存器DMA_CERQ(清除ERQ的请求中断)7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 CAER 清除所有使能请求,写0清除特定ERQ,写1清除所有ERQ5-4 保留3-0 清除使能请求中断(一共16位,写相应位表示选定,通过CAER清除)8)设置使能请求寄存器DMA_SERQ7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 SAER 设置所有使能请求,写0设置特定ERQ,写1设置所有ERQ5-4 保留3-0 设置使能请求(一共16位,写相应位表示选定,通过SAER设置)9)清除完成状态位寄存器DMA_CDNE7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 CADN 清除所有完成位,0清除特定位,1清除所有位5-4 保留3-0 CDNE 清除(特定完成位,共16位)10)设置状态位寄存器DMA_SSRT7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 SAST 配置所有完成位,0设置特定位,1设置所有位5-4 保留3-0 SSRT 设置(特定完成位,共16位)11)清除错误寄存器DMA_CERR7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 CAEI 清除所有完成位,0清除特定位,1清除所有位5-4 保留3-0 CERR 清除(特定位,共16位)12)清除中断请求寄存器DMA_CINT7 NOP 0正常操作,1没有操作,这个寄存器所有脱下可以忽略6 CAIR 清除所有中断请求位,0清除特定位,1清除所有位5-4 保留3-0 CINT 清除(特定位,共16位)13)中断请求寄存器DMA_INT (16个通道)以下都是0禁止,1使能:31-16 保留15-0 INT15-INT014)错误寄存器DMA_CRR (16个通道)以下都是0禁止,1使能:31-16 保留15-0 ERR1-ERR015)硬件请求状态寄存器DMA_HRS(16个通道)以下都是0禁止,1使能:31-16 保留15-0 HRS15-HRS016)通道n优先级寄存器DMA_DCHPIn7 ECP 使能通道优先权写0不支持高优先级,写1支持高优先级6 DPA 禁止优先级功能写0支持低优先级,写1不支持任何优先级5 5-4 保留3-0 CHPRI 通道n优先级设定,共16个优先级-----------------------------------------------------------------------------17)TCD源地址(DMA_TCD_SADDR)31-0 SADDR 源地址18)TCD信号源地址偏移(DMA_TCD_SOFF),表示下一个数据的存储地址15-0 SOFF 源地址信号偏移19)TCD传输属性(DMA_TCD_ATTR)15-11 SMOD 源地址模数10-8 SSIZE 源数据转换大小000 8位001 16位010 32位011 保留100 16字节其它保留7-3 DMOM 目标地址模数详见SMOD定义2-0 DSIZE 目标数据转换大小详见SSIZE定义20)TCD副循环计数器(DMA_TCD_NBYTES_MLNO)31-0 NBYTES 副循环转换计数,也就是副循环每次传输的字节数,21)TCD有符号副环路偏移(DMA_NBYTES_MLOFFNO)31 SMLOE 副循环源地址使能0没有应用SADDR,1应用于SADDR32 DMLOE 副循环目标地址偏移使能0没有应用DADDR,1应用于DADDR29-0 NBYTES 副循环偏移计算---- 22)TCD有符号副循环偏移(DMA_NBYTES_MLOFFYES)31 SMLOE 源副循环偏移使能0没有应用SADDR,1应用于SADDR32 DMLOE 目标副循环偏移使能0没有应用SADDR,1应用于SADDR29-10 MLOFF 当SMOE和DMOE为1,这里是偏移量,或者说是下次数据地址9-0 NBYTES 副循环字节转换计算23)TCD末尾(结束)源地址调整(DMA_TCD_SLAST)31-0 SLAST 末尾(结束)源地址调整24)TCD目标地址(DMA_TCD_DADDR)31-0 DADDR 目标地址25)TCD有符号目标地址偏移(DMA_TCD_DOFF),每次传输完存储目标地址增量15-0 DOFF 目标地址偏移* 26)TCD当前副循环连接(主循环计数)DAM_TCD_CITER_ELINKYES* 15 ENLINK 当副循环结束时,是否使能通道连接,0禁用,1使能* 14-13 保留* 12-9 LINKCH LINKCH连接通道号* 8-0 CITER 当前主循环迭代计数器,用于对主循环总次数计算(也就是副循环循环次数)** 27)TCD当前副循环连接(主循环计数)DMA_TCD_CITER_ELINKNO15 ELINK 使能通道对通道最小循环0不用,1使能14-0 CITER 循环数28)TCD末尾(结束)目标地址调整(DMA_TCD_DLASTSGA)31-0 SLASTSGA29)TCD控制与状态(DMA_TCD_CSR)15-14 BWC 带宽控制00 没有DMA 引擎停止01 保留10 DMA每读写一次停止4个周期11 DMA每读写一次停止8个周期13-12 保留11-8 MAJORLINKCH 连接通道号(16位)7 DONE 通道完成,该位标志DMA主循环完成,6 ACTIVE 通道执行,该位标志通道已经执行5 MAORELINK 使能通道对通道连接在一个主循环完成后0禁止通道连接,1使能通道连接4 ESG 使能散/聚模式0禁用,1使能3 DREQ 禁止请求,0通道ERQ位不作用,1通道ERQ位清除当主循环完成后2 INTHALF 使能一个中断当主计数完成一半时0禁止,1使能1 INTMAJOR 使能一个中断当主循环计数完成时0禁止,1使能0 START 通道开始,0没有开始,1开始* 30)TCD起始副循环连接(DMA_TCD_BITER_ELINKYES)** 15 ELINK 使能通道对通道连接当副循环完成时0禁止,1使能* 14-13 保留* 12-9 LIMKCH 连接通道号* 8-0 BITER 开始主循环计数,该值必须和CITER相同** 31)TCD起始副循环连接(DMA_TCD_BITER_ELINKNO)15 ELINK 使能通道对通道连接当副循环完成时0禁止,1使能14-0 BITER开始主循环计数------------------------------------------------------------------------------1)通道配置寄存器(DMAMUX_CHCFGn)7 ENBL DMA通道使能6 TRIG DMA通道触发使能0触发禁止,1触发使能5-0 source DMA通道源(64个DMA源,可映射16个中任何一个DMA通道)------------------------------------------------------------------------------DMA 请求复用配置---DMA request multiplexer configuration这个选项总结了这个DMA模块是怎么配置的,-------------------------------------------------------------------------*/。
自己写的简单攻略,有不全的,大家提出来,我再补充修正详尽下~~刚开始智能车制作的同学看到一大堆的东西,可能都有点迷茫,貌似什么都不会,又貌似什么都会点,有点发憷,不知道从何开始,下面我把制作过程需要准备的硬件、软件和你需要学习的知识给大家系统一下,就是一个简单的入门攻略~~~入门攻略~~解决的问题:需要准备的硬件、软件和所用知识,以及简单的制作过程~入门攻略~~预期的目的:~~~~1.~入门攻略~~硬件准备篇下面列出的就是你需要的一些基本的硬件了,以飞思卡尔车模为例(1)车模(带舵机)(晕了,以下这几个都附有图片,可惜传不上来,我给大家一个链接地址吧/myspace/blog/show_144764.html )(2)清华做的S12最小系统板,芯片是16位的MC9S12DG128这个板子用起来还行,大家可以自己设计,也可以选择自己学校的板子,还可以用站长demon设计的(3)摄像头或者是光电传感器组(下图为摄像头)根据你的需要选择合适的型号的摄像头或光电传感器(具体怎么选,将在高级篇中介绍一下)(4)BDM(注意实际用时还需要一个USB数据线,用于连接到电脑上)这个是下载程序到单片机和在线调试用的,这个有时候使用不当经常出问题,常见问题都有一些解决方法,也将在高级攻略篇给出一些问题的解决方法。
(5)电源一块以上这些都是最基本的硬件东东,必须具备,为了把车模组装好,甚至弄的特别合理,使车的性能达到最好,有些需要调整,有些需要撤换,大家根据自己情况选择就可以,具体硬件优化攻略将在智能车制作高级攻略中介绍~~2. ~入门攻略~~软件准备篇(1)CodeWarrior 5.0最新版本应该在5.0以上了,它是完整的用于编程应用中硬件bring-up的集成开发环境。
CodeWarrior包括构建平台和应用所必需的所有主要工具- IDE、编译器、调试器、编辑器、链接器、汇编程序等。
这个软件能满足飞思卡尔智能车的编程、调试、仿真等(2)窜口调试软件在我们学习和调试串口与计算机通讯时发挥很大的作用(3)PDF2Word 可轻松将PDF转换为Word格式,转换稳定,出错机率小,是我们编辑文稿的必备软件(可选软件:DXP2004,其库元件已经包含飞思卡尔16位HCS控制器,是设计HCS12系列单片机PCB系统板的理想工具)3. ~入门攻略~~知识准备篇(1) 学习C语言编程及应用(建议大家用C语言编程序,如果你是汇编高手那就另当别论了)(2)单片机由浅入深攻略(单片机学习详细攻略网址:/thread-288-1-1.html)根据这个攻略去把飞思卡尔单片机去学习和练习应用下,一定要自己动手去编程和设计,把实验板都尽量弄熟练了(3)了解舵机,电机和传感器的性能及如何用单片机去控制它们(这个可以结合单片机去学习,最好能参考一些前辈做过的程序学习,多多问问老师和同学,自己再多多动手和思考)(4)学习用编程调试软件CodeWarrior,论坛里有不少教程,你们可以去下载看看,不是很难学的,不懂的多思多问多练(5)接口电路设计这里涉及的知识较广,模电、数电等等~~4. ~入门攻略~~简单制作过程以上三个准备工作都准备好了,你就可以开始整车的制作了第一步:硬件组装把你的电路板在车模上固定好,把电机、舵机、测速传感器,摄像头都连接到电路板对应的接口处,再接上电源第二步:程序编制及调试在CodeWarrio中新建一个工程,然后根据你的硬件条件在里面编制自己的程序,最好先在CodeWarrio里仿真一下看程序有没有错误,然后再用BDM下载到单片机上运行,看车能按你的设计跑吗,如此反复调试直到达到你的目标~~~智能车制作高级攻略将陆续推出,敬请留意~~。
K60是飞思卡尔公司的cortex m4系列CPU,目前技术较为新,市面上的开发板使用的芯片大部分是144pin的PK60X256VLQ100的样品,其主频正常使用为100MHz,其超频可以到达150作用。
下面我以KEIL MDK4.23和J-Link V8作为开发环境和下载器,下面是简单的使用手册(以图文形式向大家介绍)。
一、首先下载和安装KEIL MDK4.2.3地址:/download/product/选择MDK-ARM后,填写信息就可以直接下载。
二、安装省略啦,window下软件安装就是傻瓜式的了,只要会单机和双击就可以了,呵呵。
三、创建项目1.首先打开安装好的keil mdk,他的IDE采用的是keil4:如下图2.选择项目菜单Project,点击New uVision Project。
3.选择存储路径,写好项目名称test,点击保存。
4.选择CPU型号,我们这里使用的是飞思卡尔公司的MK60系列CPU,所以我们选择如下图所示。
5.点击ok,点击是。
出现如下图所示,其中startup_MK60DZ10.s为K60系列CPU的启动文件的汇编源代码。
6.设置J-LINK下载器,点击Flash中的Configure Flash Tool…如图所示。
(1)、Utilties选项卡中的Use Taget Driver for Flash Programming选择Cortex-M/R J-LINK/J-Trace。
(2)、Debug选项卡中的Use选择Cortex-M/R J-LINK/J-Trace。
(3)、C/C++选项卡中的Include Paths点击后面按钮。
添加K60头文件路径C:\Keil\ARM\INC\Freescale\Kinetis。
红色为安装目录。
7.下面我们新建个文件,点击File中的New,然后保存为main.c。
然后右键Source Group1添加TYS_system_k60.c和main.c文件到项目中。
第2章简介2.1 概要本章提供了Kinetis组合和K60系列产品的概述。
同时,本章提供了本文件所包涵设备的高水准的描述。
2.2 Kinetis组合Kinetis是低功耗可扩展和在工业上使用混合信号ARM®Cortex™-M4系列MCU的最好的组合。
第一部分介绍超过200引脚、外围设备和软件兼容性的5个MCU系列。
每个系列提供了优良的性能,与普通外设内存,内存映射,并提供内部和系列之间轻松迁移包和功能可扩展性。
Kinetis MCUs使用了飞思卡尔的新的90nm带有独特FlexMemory的薄膜存储器(TFS)闪存技术。
Kinetis系列MCU结合了最新的低功耗革新技术和高性能,高精密混合信号功能与连通,人机界面,安全及外设广泛。
Kinetis MCUs使用了飞思卡尔和ARM第三方合作伙伴的市场领先的捆绑模式。
表示低功耗混合信号USB 段LCD以太网加密和篡改检测DDR所有Kinetis系列都包涵强大的逻辑、通信和时序阵列和带有伴随着闪存大小和I/O数量的集成度等级的控制外围部件。
所有的kinetis系列包涵一下共同特征:· 内核:· ARM Cortex-M4内核提供1.25 DMIPS / MHz的DSP指令(浮点单元在kinetis系列可用)。
· 高达32位的DMA,同时尽可能减小CPU干预。
· 提供50MHz、72MHz和100MHz几种CPU频率(120MHz和150MHz在kinetis可用)。
· 超低功耗:· 10种低功耗操作模式通过优化外设执行和唤醒时间来延长电池寿命。
· 为了增加低功耗的灵活性,增加了低漏唤醒单元、低功耗定时器和低功耗RTC。
· 业界领先的快速换醒时间。
· 内存:· 从32 KB闪存/ 8 KB的RAM可扩展为1 MB闪存/128 KB的RAM。
同时使空白的独立闪存执行代码和固件更新。
K60模块分配K60的简介,我们本次使用了以下模块。
1. FTM模块:K60中集成3个FTM模块,而今年我们选用两个B车进行追踪循迹。
B车模使用单电机、单舵机,另外需要一个编码器。
所以对3个FTM模块进行如下配置:FTM0用以产生300Hz PWM信号控制舵机,FMT1用以产生18.5KHz PWM信号控制电机,FTM2用以采集编码器数据。
2. 定时器模块:K60中有多个定时器模块,我们使用了其中2个。
其一用以产生5ms 中断,处理相关控制程序。
另一个用以超声波模块的计时。
3. SPI模块:我们使用了K60的一个SPI模块,用以和无线射频模块NRF24L01P通信。
4.外部中断:我们使用了三个外部中断。
第一个是PORTA的下降沿中断,用以响应干簧管检测到磁铁。
第二个是PORTD的跳变沿中断,用以响应超声波模块的输出信号。
最后一个是PORTE的下降沿中断,用以响应NRF24L01P模块的相关操作。
数据采集算法传感器是智能车的眼睛,它们给智能车循迹和追踪提供了必不可少的信息。
因此,在智能车软件设计中必须保证数据采集算法的稳定性,同时兼顾其快速性。
本车比赛,我们的智能车主要采集以下传感器的数据:电感传感器电路板、编码器、超声波、干簧管。
下面主要详述超声波模块、电感传感器电路板的数据采集。
1 .超声波模块数据采集我们使用的超声波模块的DO引脚输出50Hz的矩形波信号,通过高电平的时间向单片机传递数据。
本超声波传感器的高电平时间为声波单程传输的时间,通过这个时间可计算出两车之间的距离。
我们使用外部中断和计时器结合的方式测量高电平时间。
首先配置PORTD11为跳变沿中断。
中断被触发时,如果PORTD11为高电平则开始计时,如果PORTD11为低电平则停止计时并记录时间间隔。
2. 电感传感器电路板的数据采集电感传感器电路板通过输出电压的大小反应响应位置和方向的磁场强度。
本次比赛中,我们使用了10个电感分布在6个不同位置,因此每个周期都要采集10路ADC数据,每路ADC数据采集32次进行平均滤波。
北京理工大学智能车俱乐部程序培训K60各模块入门前言这个小文档是对k60单片机的各模块进行了初步的介绍,以便大家在之后车队的k60实际培训演示中能更好地理解,能更快的上手单片机,另外说一下车队用的K60单片机型号是MK60DN512ZVLL10,不同型号的k60单片机各模块基本操作有些小区别。
本文档是基于给大家实际演示的各模块功能来撰写的,里面讲的各个模块在以后的做车过程中基本上都会用到。
实际上一个智能车上所实现的功能都是由这些最基本的小模块组合而成的,把这些小模块各个击破了,都理解了,以后看智能车的整体程序也就容易得多了~另外注意:在我没实际操作讲解之前,大家看这些模块的时候可以不用纠结一些细节的问题,大致有个概念即可~在我讲的时候好好听我讲各个模块的例程,做好笔记,然后看实验现象,进行进一步的理解。
之后自己再回去仔细看例程、笔记和这个文档,并且自己可以对程序进行一些改动,然后烧写程序看现象仔细研究。
PS:我们第十届包括之前的学长们都没有进行这样专门的比较系统的单片机各模块的培训,也没有学长们亲自给我们写这些入门的学习文档,基本都是自己去查资料学习,所以你们这一届算是很走运的了!不要错失良机不好好学习哦~话说回来,毕竟车队是一年比一年进步嘛,培训会慢慢地变得更加有条理!还有你们明年培训下一届的时候也是哦学完了单片机各个模块后,以后你们要是想对车进行哪个模块的调试不会出现不知道程序在哪、不知道怎样去调试这些最基本、较Low的问题~你们对各个模块理解透了,智能车整体的程序架构你们会轻而易举的掌握。
以后想调那个模块调哪个,整个程序也不会乱,以后要在车上增加新模块新功能也会容易得多!所以......仓鼠们打起精神~好好学吧!!!第十届摄像头游清目录一、GPIO模块 (5)1、GPIO概述 (5)2、I/O口的使用方法 (6)二、FTM占空比(PWM)模块 (9)1、PWM概述 (9)2、PWM程序讲解 (10)三、中断模块 (13)1、中断概述 (13)2、GPIO(I/O)口外部中断 (13)2.1I/O口外部中断概述 (13)2.2I/O口外部中断程序讲解 (14)3、PIT定时器中断 (16)3.1PIT定时器中断概述 (16)3.2PIT定时器中断程序讲解 (16)四、A/D(模数)转换模块 (18)1、A/D模块概述 (18)2、A/D模块程序讲解 (19)五、串口通信(UART)模块 (21)1、串口(UART)模块概述 (21)1、串口(UART)模块程序讲解 (22)后记 (25)一、GPIO模块车队用的K60单片机有100个引脚,如下图:其中大部分引脚有GPIO模块的功能,GPIO模块可以输出指定的高低电平,或读入输入电平,在实际智能车上可以用于调试用的小灯、蜂鸣器、拨码开关和摄像头信号数据采集及外部中断等。
K60各模块入门培训教程K60是一款ARM Cortex-M4内核的微控制器系列,由恩智浦半导体(NXP)公司推出。
K60系列微控制器具有高性能、低功耗、丰富的外设和丰富的开发工具支持等特点,适用于各种应用场景。
本教程将重点介绍K60微控制器的各个模块,包括GPIO(通用输入输出)、UART(串口通信)、SPI(串行外设接口)、I2C(串行接口)、ADC(模拟数字转换器)、PWM(脉冲宽度调制)等。
每个模块都将详细介绍其功能和使用方法。
一、GPIO模块GPIO模块是K60微控制器的通用输入输出模块,用于控制外部硬件设备。
K60系列微控制器通常具有多个GPIO引脚,可以配置为输入或输出。
在本教程中,我们将介绍如何配置GPIO引脚的方向(输入或输出)、读取输入引脚的状态和设置输出引脚的状态等。
二、UART模块UART模块是K60微控制器的串口通信模块,用于与外部设备进行异步通信。
K60系列微控制器通常具有多个UART模块,每个UART模块都包含发送和接收功能。
在本教程中,我们将介绍如何配置UART模块的波特率、数据位、停止位和校验位等,并编写代码实现通过UART与外部设备进行通信。
三、SPI模块SPI模块是K60微控制器的串行外设接口模块,用于与外部设备进行全双工的串行通信。
K60系列微控制器通常具有多个SPI模块,每个SPI模块都包含主机和从机模式。
在本教程中,我们将介绍如何配置SPI模块的工作模式(主机或从机)、时钟极性和相位等,并编写代码实现通过SPI与外部设备进行通信。
四、I2C模块I2C模块是K60微控制器的串行接口模块,用于与外部设备进行双向的串行通信。
K60系列微控制器通常具有多个I2C模块,每个I2C模块都可以配置为主机或从机。
在本教程中,我们将介绍如何配置I2C模块的工作模式(主机或从机)、时钟频率和从机地址等,并编写代码实现通过I2C与外部设备进行通信。
五、ADC模块ADC模块是K60微控制器的模拟数字转换模块,用于将模拟信号转换为数字信号。