Freescale Semiconductor, Inc. 用户指南 Document Number: MCUGSUG Rev. 1.1, 01/2015 飞思卡尔单片机快速上手指南 作者:飞思卡尔半导体IMM FAE团队 飞思卡尔半导体是全球领先的单片机供应商,其单片机产品包含多种内核,有数百个系列。为支 持用户使用这些产品,飞思卡尔提供了丰富的网站资源、文档及软硬件工具,另外,我们还有众 多的第三方合作伙伴及公共平台的支持。对于不熟悉飞思卡尔产品和网站的初学者来说,了解和 使用这些资源这无疑是一个令人望而生畏的浩瀚工程。本指南的目的,就是给初学者提供一个指 导,让他们不被这些海量信息淹没;用户根据本指南提供的操作步骤,应该能迅速找到所需的资 源,了解如何使用相关的工具。在本指南中,文档、软件和工具等资源的链接都提供在文中,用 户直接点击即可访问。 在本指南中,我们以飞思卡尔的新一代Kinetis单片机K22系列为例,介绍了如何获取各种资源, 如何对其进行软硬件设计和开发。实际上,Kinetis全系列单片机的使用差别都不大,不管针对那 一款单片机,用户都可以参照本指南来进行开发。当然,对于少量差别相对较大的产品,我们也 会继续推出相应的文档,供广大用户参考。 飞思卡尔的单片机广泛应用于工业、家电、消费类、汽车和通讯设备等各种市场应用,针对不同 的市场,飞思卡尔提供不同系列的单片机,其内核和外围模块的功能也各不相同。总的来说,飞 思卡尔的单片机可分为传统内核的单片机和新的ARM® Cortex®-M内核的单片机两大类。传统内 核主要包括8位的S08和RS08,16位的S12,16位及32位的DSC,32位的CodeFire(冷火);新的 ARM内核包括M4和M0+两大系列,称为Kinetis系列;M7内核的高性能MCU也即将推出。另外, 飞思卡尔也有M4+A5及M4+A7等异构双核的MCU。适应于全球单片机发展的潮流,飞思卡尔今 后的单片机将以Kinetis系列为主打产品。针对Kinetis系列,飞思卡尔提供了完备的开发环境和工 具的支持,包括全免费的开发环境KDS,免费的独立图形化代码生成工具Processor Expert,免费 的开放源代码操作系统MQX,免费开源的驱动代码库KSDK,免费的人机交互图形界面开发软件 PEG-Lite,以及各种硬件开发调试工具,编程工具,还有众多的第三方合作伙伴的支持。本指南 正是以Kinetis单片机中的K22子系列为例,介绍了一些基本的资源、工具的使用方法和开发芯片 的基本方法,对于广大用户来说,相信会是一个很好的参考和指导材料。对于其他非ARM®内核 的MCU 来说,获取支持、查找资料甚至软硬件开发工具的使用方法都大同小异,也可以参考本 指南进行操作。 © Freescale Semiconductor, Inc., 2015. All rights reserved. ___________________________________________________________________ 目录 1 2 3 4 5 如何获取技术资料与支持 ................................................................................................................. 4 1.1 概述............................................................................................................................................. 4 1.2 如何查找芯片的技术资料......................................................................................................... 4 1.3 如何得到技术支持..................................................................................................................... 6 1.4 如何查找中文文档................................................................................................................... 12 如何选择产品、申请样片及购买少量芯片和开发工具 ............................................................... 13 2.1 概述........................................................................................................................................... 13 2.2 芯片选型................................................................................................................................... 13 2.3 申请免费样片与购买芯片....................................................................................................... 22 飞思卡尔单片机的开发环境、开发工具和生态系统 ................................................................... 28 3.1 概述........................................................................................................................................... 28 3.2 集成开发环境(IDE) ............................................................................................................ 28 3.3 调试与烧写工具(Debugger&Programmer) ........................................................................ 40 3.4 量产烧录工具........................................................................................................................... 42 3.5 Bootloader(引导加载程序) ................................................................................................. 43 3.6 评估板(EVB)....................................................................................................................... 47 3.7 Kinetis 软件开发套件(Kinetis SDK, Kinetis Software Development Studio) .................. 52 3.8 如何获取参考代码和参考设计............................................................................................... 55 3.9 飞思卡尔单片机的生态系统(Ecosystem) ......................................................................... 61 如何阅读飞思卡尔的技术文档 ....................................................................................................... 63 4.1 概述........................................................................................................................................... 63 4.2 数据手册(Datasheet) ........................................................................................................... 63 4.3 参考手册(Reference Manual) ............................................................................................. 64 4.4 用户指南(User Guide) ........................................................................................................ 70 4.5 其它的技术文档....................................................................................................................... 71 飞思卡尔单片机硬件设计指南 ....................................................................................................... 72 5.1 概述........................................................................................................................................... 72 5.2 电源电路的设计....................................................................................................................... 73 5.3 时钟电路................................................................................................................................... 75 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 2 Freescale Semiconductor, Inc. 6 5.4 复位电路设计........................................................................................................................... 79 5.5 调试接口................................................................................................................................... 80 5.6 ADC 模拟输入 ......................................................................................................................... 81 5.7 USB 电路设计 .......................................................................................................................... 82 5.8 板级 EMC 性能改善与 PCB 布线的注意事项 ....................................................................... 83 5.9 Kinetis MCU 的封装类型和一些特殊引脚说明 .................................................................... 84 5.10 设计最小系统硬件电路的 Check List .................................................................................... 86 5.11 K22 最小系统原理图 ............................................................................................................... 88 飞思卡尔单片机软件开发指南 ....................................................................................................... 88 6.1 概述........................................................................................................................................... 88 6.2 开发环境设置与开发工具使用............................................................................................... 88 6.3 基本外设模块编程举例......................................................................................................... 110 6.4 基于 Kinetis SDK 的开发 ...................................................................................................... 127 6.5 怎样移植客户的应用............................................................................................................. 131 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 3 1 如何获取技术资料与支持 1.1 概述 当用户使用飞思卡尔单片机芯片时,如何获取芯片的数据手册(Datasheet)、参考手册(Reference Manual)和官方例程等资源呢?另外当用户遇到了技术问题该如何获得帮助和解答呢?这里以 Kinetis的K22系列芯片为例为大家介绍如何解决这些问题。 1.2 如何查找芯片的技术资料 1. 飞思卡尔芯片的资料全都可以在飞思卡尔的官网上免费下载。进入飞思卡尔官网 www.freescale.com,如果您习惯使用中文,可点击右上角的“English”,在“Select language” 下选择“中文”,选择显示中文,如图 1所示,用户以后再进入该网站时,它就会自动默 认为中文显示。 图 1 飞思卡尔网站中文语言选择 2. 然后选择“产品”“微控制器”“Kinetis ARM ® MCU”,如图 2所示。 图 2 选择Kinetis ARM MCU 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 4 Freescale Semiconductor, Inc. 3. 在Kinetis微控制器/单片机界面中,在左下方选择K22_120 (120 表示主频为120 M),如 图 3所示。点击此链接,可进入K22_120的产品页面。 图 3 选择K22_120 图 4 K22_120资源集合 4. 如图 4所示,进入产品页面之后,可以看到这里包含很多信息和资源。例如在“文档”栏 目中能找到芯片的数据手册、参考手册、应用笔记、用户指南等;在“软件和工具”栏目 中能找到该芯片的仿真调试器、评估开发板、软件开发工具等的详细资料,包括原理图, 源代码等。所有这些资源都可以免费下载。 另外,用户也可以通过飞思卡尔官方网站的搜索功能进行查找。例如要查找与K22相关的资料, 可以先进入飞思卡尔官网www.freescale.com, 在右上角的搜索框中输入“K22”,然后点击搜索 图标或按回车键键开始搜索,如图 5所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 5 图 5 搜索关键字/芯片型号 搜索得到的结果如图 6所示,在搜索结果中点击所需的条目,就可以跳转到相关资源的页面。 图 6 搜索结果 1.3 如何得到技术支持 当您在使用飞思卡尔芯片的过程中遇到问题时,您可以通过以下的途径得到支持:TIC、在线论 坛和当地FAE直接支持。 1.3.1 技术信息中心(TIC) 通过TIC,您可以提交技术服务请求SR(支持使用中文),之后会有专业的技术支持工程师为您 在线解答。TIC工程师都是飞思卡尔的资深工程师,他们分布在飞思卡尔全球各地的机构中,专 门负责解答客户通过网络提交的问题。每个服务请求完成之后,飞思卡尔还会向客户发送满意度 调查表,用以不断提升技术服务的质量。 提交SR的具体操作步骤如下: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 6 Freescale Semiconductor, Inc. 1. 进入飞思卡尔官网www.freescale.com,点击“培训与网络社区”“支持资源”“销售 与技术支持”,如图 7所示。进入“销售与支持”页面,点击“创建服务请求”,如图 8 所示。 图 7 销售与技术支持 图 8 创建服务请求 2. 选择技术服务类别和主题,如图 9所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 7 图 9 技术类别与主题 图 10 选择器件 3. 选择器件,如图 10所示。 之所以要将问题进行分类,是为了将问题细化归类,从而有利于我们后台的TIC工程师进 行问题分拣,进而能找到对所提交问题最有经验的工程师来解答。 4. 录入问题描述,可以添加附件,如图 11所示。这里您既可以输入中文,也可以输入英文, 我们鼓励用户的描述能尽可能的详细和清楚,以便于TIC工程师了解问题的细节。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 8 Freescale Semiconductor, Inc. 图 11 问题描述 5. 最后提交技术服务请求(需要在飞思卡尔官网注册账号并登陆)。用户可以随时查看SR(服 务请求)的处理状态。正常情况下,我们的TIC工程师会在24小时内回复到用户注册的邮 箱。之后用户就可以直接通过回复邮件的方式直接跟这个工程师沟通,而不需要再去重新 提交问题,直到问题解决。如果是新的问题,则需要重新提交一次。在用户的问题解决完 之后,系统会自动发送一份满意度调查表到用户的邮箱,用户可以给本次服务作一个满意 度评估。飞思卡尔会根据用户的评估和意见来不断提高服务质量。 1.3.2 在线论坛 飞思卡尔在线技术论坛包括两大类: 1. 飞思卡尔的官方技术论坛,链接为:community.freescale.com/welcome。 在这里用户可以先搜索是否有人曾遇到过类似的问题,或者创建自己的问题。提问时可以 用中文,但最好用英文,这样就可以有全世界的技术人员进行解答,如图 12所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 9 图 12 Community搜索与提出问题 2. 飞思卡尔第三方中文论坛,主要包括以下三个: 与非网: 21ic: 阿莫论坛: www.amobbs.com/forum-9936-1.html www.freescaleic.org/bbs/ bbs.21ic.com/iclist-192-1.html 用手机扫描下面的二维码可进入它们的移动网站: 与非网 21ic 阿莫论坛 无论是飞思卡尔自己的论坛还是第三方的论坛,都有飞思卡尔的FAE和专门支持论坛的TIC工程师 支持和回复。这里以与非网为例,可以看到有很多飞思卡尔的工程师在这里作版主。 图 13 第三方论坛的飞思卡尔工程师版主 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 10 Freescale Semiconductor, Inc. 1.3.3 通过FAE得到技术支持 另外您还可以与代理商FAE或者飞思卡尔原厂FAE进行联系以获取相关的技术支持,建议您先与 相应的代理商FAE联系。 飞思卡尔目前有六家代理商,分别为Arrow(艾睿电子)、Avnet(安富利)、WT(文晔科技)、 Weikeng(威健国际)、Comtech(科通)和CEAC(中电器材)。 通过点击“样品与购买”“从分销商处购买”,可查看代理商的相关信息,如图 14所示。 图 14 进入代理商信息页面 进入页面之后,选择国家和城市,就可以查看到相应的代理商联系方式,如图 15所示。 图 15 代理商信息 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 11 1.4 如何查找中文文档 飞思卡尔为中国用户提供了很多中文文档,而且更多的中文文档正在陆续发布。为方便用户,部 分使用频率比较高的中文文档被整理在一起。用户点击“培训与网络社区”,在“支持资源”栏 目下即可看到,如图 16所示。 图 16 飞思卡尔网站的中文文档 这个方法可能无法找到所有的中文文档。对于某个具体的芯片来说,如本指南中作为例子的K22, 在其产品主页的文档项中也可以找到相关的中文文档,如图 17所示,如果是中文文档,会显示“下 载中文版”的提示。 图 17 产品页面里面的中文文档 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 12 Freescale Semiconductor, Inc. 2 如何选择产品、申请样片及购买少量芯片和开发工具 2.1 概述 本章将介绍如何确定飞思卡尔单片机的具体型号,如何申请样片、购买芯片及开发工具。本章仍 以Kinetis K22系列MCU为例进行说明。 2.2 芯片选型 飞思卡尔单片机的种类非常多,那么该如何获取合适的芯片呢?飞思卡尔提供了多种不同的方法 和工具来帮助用户找到合适的产品。根据对飞思卡尔产品的了解程度和查找目的的不同,用户可 以采用不同的方法进行选择。 2.2.1 主页产品查找 如果用户已经知道要查找的产品的基本信息,例如已经知道要找带USB功能的K22系列的MCU, 但是需要找到一个具体的芯片型号,最常用的方法是在主页进行查找,具体步骤如下: 1. 进入飞思卡尔官网www.freescale.com,选择“产品”“微控制器”“Kinetis ARM® MCU”,之后就会进入到Kinetis微控制器/单片机主页,如图 18所示。 图 18 Kinetis微控制器/单片机主页 2. 在主页的左下方Kinetis微控制器处,可以进入到每个系列MCU的各个子系列,在这里我们 选择K22_120,如图 19所示。这里120表示芯片的主频为120 MHz。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 13 图 19 选择K22_120子系列 3. 进入K22_120主页之后,选择“购买/参数”,就会出现该系列所有芯片的参数信息,如封 装形式,管脚数量,内存大小等,可通过这些参数选择最合适的芯片,如图 20所示。 图 20 K22_100购买/参数 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 14 Freescale Semiconductor, Inc. 2.2.2 辅助选型工具 如果用户并不清楚需要查找的芯片基本信息,飞思卡尔还提供了一些辅助的选型工具来帮助用户 进行芯片的选型,分别介绍如下。 2.2.2.1 参数选型工具 如果用户知道需要什么内核的产品,则可以通过“参数选型工具”来辅助进行芯片选型。步骤如 下: 1. 进入飞思卡尔官网www.freescale.com ,点击产品中的“参数选型工具”。如图 21所示。 图 21 参数选型工具 2. 选择“微控制器”“Kinetis MCU(基于Cortex-M内核)”,如图 22所示。 图 22 选择Kinetis MCU 3. 在器件类型中,我们选择“K2x USB MCU”,如图 23所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 15 图 23 选择器件类型 4. 之后您可以进行多种操作,以辅助您选取到合适的芯片。比如您可以通过“显示/隐藏”参 数来调整页面的参数显示类型,如图 24所示。您还可以通过调整参数的范围来进行芯片的 选取,如图 25所示。 图 24 显示/隐藏参数 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 16 Freescale Semiconductor, Inc. 图 25 调整参数范围 2.2.2.2 选型神器Cross Check 您还可以通过选芯神器Cross Check(目前最新版本为V4.0)来帮助您快速找到合适的飞思卡尔芯 片,该软件具有以下功能: 根据输入的芯片型号或参数特性来显示飞思卡尔相关器件的预算价,并能够订购样品或购 买器件。 根据用户输入的竞争对手的芯片型号,给出4款最适合的飞思卡尔器件。 该软件的下载地址为: www.freescale.com/zh-Hans/webapp/sps/site/overview.jsp?code=MOBILE 打开该网页后,可以扫描右侧的二维码进行下载手机应用软件,如图 26所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 17 图 26 Cross Check软件下载 您也可以使用网页版的工具,方法是先登陆飞思卡尔官方网站,在“我的账号”“安全应用” 下,可以找到选型神器的应用,包括“部件预算价”和“竞争对手交叉参考”两个工具,如图 27 所示。图 28和图 29是两个工具的使用界面。 图 27 部件预算价和竞争对手交叉参考 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 18 Freescale Semiconductor, Inc. 图 28 部件预算价工具 图 29 竞争对手交叉参考工具 注 对于“竞争对手交叉参考”,可以不用登陆就能使用,位置在“Kinetis 微控制器/单片机”主页,右侧的“辅助工具”“交叉参考工具”以 及下方的“设计资源”“支持和专业服务”“MCU竞争对手交叉 参考”。如图 30所示。或者通过网址www.freescale.com/crosscheck进 入。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 19 图 30 竞争对手交叉参考工具 2.2.2.3 解决方案顾问(Solution Advisor) 飞思卡尔解决方案顾问是一款基于Web的互动式应用向导和动态产品选型工具。如果用户完全不 知道要使用哪个芯片,则可以通过这个工具来查找合适的芯片。使用步骤如下: 1. 通过freescale.transim.com/solutionadvisor/LandingPage.aspx进入到“Solution Advisor”的主 页,如图 31所示: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 20 Freescale Semiconductor, Inc. 图 31 “Solution Advisor”主页 2. 选择“产品选择器”,如图 32所示。在这里按照提示的先后步骤您可以快速找到最合适的 处理器和工具。 图 32 产品选择器 3. 此工具还提供了电机控制向导,如图 33所示。它可以帮助您快速找到最合适的电机控制解 决方案。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 21 图 33 电机控制向导 图 34 HMI向导 4. 您还可以使用HMI向导,如图 34所示。它可以帮助您快速找到最合适的HMI解决方案。 2.3 申请免费样片与购买芯片 2.3.1 如何申请免费样片 1. 在官网点击“样品与购买”“ 样品与购买”,可以进行免费样片的申请,如图 35所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 22 Freescale Semiconductor, Inc. 图 35 免费样片申请 2. 选择微控制器,以K22举例,经过检索可以找到K22的相关样品,或者您可以直接通过“微 控制器”“Kinetis”“K系列”“K2x”“K22”的方式找到该芯片,检索界面如 图 36所示。 图 36 检索样品 3. 检索到样片之后,点击黄色的“样品”按钮。如图 37所示。 图 37 选择样品 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 23 注 我们的样品在一定数量内为免费样品,并且快递费用全免。关于样片 具体申请的个数及费用等相关信息,可以在“常见问题解答”中得到 相关解释。如图 38所示。 图 38 常见问题解答 2.3.2 如何购买少量芯片 2.3.2.1 在飞思卡尔官网上购买 1. 在飞思卡尔官网上注册。如果您已经是会员,请登录网站。 2. 搜索器件。找到可订购器件的 “直接购买”按钮,该图标位于器件号右侧。如图 39所示。 图 39 直接购买图标 3. 点击“直接购买”按钮图标,将产品添加到您的购物车中。当您将产品添加到购物车后, 您可以更新您的购物车,继续购物或结帐。如图 40所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 24 Freescale Semiconductor, Inc. 图 40 购物车 目前,我们支持支付宝、VISA和Master卡来进行网上直接在线支付。但是客户需要自己负 责清关。(手续并不麻烦,但是在海关要求的情况下需要客户自己处理。因为是小批量订 单,而且我们不知道客户的具体用途,所以需要客户自己清关。) 4. 您在下订单之后,将会收到一封确认电子邮件。您可以对已注册用户主页进行个性化定制, 随时跟踪订单情况。(到货时间视产品供货情况和配送方式而定。) 2.3.2.2 通过第三方供应商小批量芯片购买 除了飞思卡尔官网之外,客户还可以用过以下与飞思卡尔有官方合作的芯片在线销售公司来购买 小批量芯片,网址链接如下: Element14: www.element14.com/community/welcome E 络盟:cn.element14.com/ 周立功:www.zlgmcu.com/ DigiKey: www.digikey.com/ Mouser: eu.mouser.com/ 2.3.3 如何购买开发板 当您需要购买开发板时,可以在飞思卡尔官网上进行购买,步骤如下: 1. 点击 MCU 界面的软件与工具,在硬件开发工具中查看该系列 MCU 有哪些开发板。这里还 以 K22 举例说明,如图 41 和图 42 所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 25 图 41 软件与工具 图 42 硬件开发工具 2. 点击相应的开发板之后,可以进入这个开发板的主页,这里以FRDM-K22F为例。可以看到 相关的各种资源,在“文档”栏目中能找到开发板的用户指南等;在“下载”栏目中能找 到开发板的原理图、Sample code、快速开发包等;选择“购买/规格”就可以进行购买。如 图 43所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 26 Freescale Semiconductor, Inc. 图 43 购买开发板 另外从飞思卡尔的第三方合作伙伴,如uCDragon(优龙科技)、Manley(万利电子)、周立功和 lierda(利尔达—),同样可以购买到他们为飞思卡尔芯片定制的开发板。 他们的网址分别为: 优龙科技:www.ucdragon.cn 万利电子:www.manley.com.cn 周立功: www.zlgmcu.com 利尔达: www.lierda.com 以优龙科技为例,首先进入官网www.ucdragon.cn,在“产品分类”中的“ARM开发板”中可以 找到飞思卡尔相关的开发板。如图 44所示。 图 44 uCdragon freescale开发板 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 27 点击相应的开发板之后,可以获得该开发板的信息,通过页面左下方的联系方式,用户可以购买 到该开发板,如图 45所示。 图 45 优龙的销售联系方式 3 飞思卡尔单片机的开发环境、开发工具和生态系统 3.1 概述 在根据需求完成选型之后,用户应开始了解相关的开发环境、开发工具和生态系统,评估飞思卡 尔提供的工具和资源是否能够满足用户的开发需要。本章节将会介绍集成开发环境(IDE)、评 估板(EVM)、调试器(Debugger)、参考代码与设计(Sample code with documents & Existing Reference Design)以及生态系统(ecosystem)。希望本章节的内容能让用户快速准确地找到相关 资源来完成评估与开发。 3.2 集成开发环境(IDE) 集成开发环境就是针对可编程器件的集编辑、编译和调试功能于一体的开发调试工具。以Kinetis 系列MCU为例,一般通用的IDE均可支持,例如IAR、Keil等。另外飞思卡尔也有自己的IDE,分 别是KDS(Kinetis Development Studio)和CodeWarrior,本节将会主要介绍这两个工具及内嵌在 这两个IDE中的代码生成工具“处理器专家”(Processor Expert)。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 28 Freescale Semiconductor, Inc. 3.2.1 KDS (Kinetis Design Studio) KDS是飞思卡尔在2014年刚刚推出的专门用于支持Kinetis系列MCU的一款集成开发环境软件,能够 提供代码编辑到调试的完整功能。KDS的特点如下: 支持目前Kinetis全系列的产品,并将不断更新对新产品的支持; 开源免费,且不受软件代码大小的限制(提醒:Keil、IAR等IDE均需要收费); 支持在32/64位的Windows 7/8的操作系统上运行; 使用Elipse界面风格,并且支持其他可下载的插件,如Processor Expert; 支持SEGGER J-Link/P&E USB Multilink Universal/CMSIS-DAP/OpenSDA等调试接口; 专门为Kinetis系列MCU开发,因此具有内核编译器小、响应速度快的优势。 3.2.1.1 KDS软件下载与安装 目前KDS的最新版本是V2.0.0,以下描述均以该版本为例。软件与相关说明文档的下载路径及链 接如下: 软件:中文首页->软件和工具->软件中心->IDE-调试、编译与构建工具->微控制器->Kinetis Design Studio->下载 文档:中文首页->软件和工具->软件中心->IDE-调试、编译与构建工具->微控制器->Kinetis Design Studio->文档 在Windows系统上安装KDS很简单,只需双击KDS-v2.0.0.exe,根据向导即可完成。另外,飞思卡 尔还提供了一个工具,叫做Kinetis软件开发套件(KSDK),它可以嵌入KDS中使用,为用户提 供丰富的外设驱动代码、协议栈代码、中间件代码和示例代码。关于KSDK的详细介绍,请参见 飞思卡尔单片机软件开发指南章节中的的内容。 在完成KDS的安装后,如果需要在KDS中嵌入KSDK,则还要下载和安装KSDK软件包,软件与文 档的下载路径如下: 软件:中文首页->软件和工具->软件中心->中间件->用于 Kinetis MCU 的软件开发套件->下载 文档:中文首页->软件和工具->软件中心->中间件->用于 Kinetis MCU 的软件开发套件->文档 在下载安装KSDK后,要嵌入KDS中使用要完成以下步骤: 1. 启动KDS并在“Help”选项中选择“Intall New Software”,如图 46所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 29 图 46 在KDS中安装KSDK步骤一 2. 在“Available Software”的窗口中,点击“Add”并找到KSDK安装目录中的.zip文件,点 击“OK”。 图 47 在KDS中安装KSDK步骤二 3. 找到文件位置后,在“the Processor Expert Software category”的项目下显示有“Eclipse Update for KSDK”;在勾选框内打勾,并点击“Next”并完成安装。 图 48 在KDS中安装KSDK步骤三 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 30 Freescale Semiconductor, Inc. 另外,如果需要在 KDS 中使用 Processor Expert,还需要安装一个更新补丁。该补丁名为 Processor Expert for KDS 1.1-Updata 1,下载路径与 KSDK 相同,安装方法也与安装 KSDK 相同,可参照上述 步骤进行操作。 3.2.1.2 在KDS中新建工程与导入已有工程 在KDS中新建一个工程可参考以下步骤: 1. 在打开KDS后,选择新建工程“File”“New”“Kinetis Design Studio Project”。 2. 输入工程名,并在选择工程的存储位置后,点击“Next”。 图 49 在KDS中新建工程步骤二 图 50 在KDS中新建工程步骤三 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 31 3. 选择需要评估的芯片型,点击“Next”。 4. 在“Rapid Application Development”中,可以在新建工程中加入Process Expert和KSDK (Kinetis SDK)来简化底层驱动代码的编写工作,如图 51所示。Processor Expert已包含在 KDS中,但加入KSDK需要按照KDS软件下载与安装中的步骤手动安装。 图 51 在KDS中新建工程步骤四 图 52 在KDS中新建工程步骤五 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 32 Freescale Semiconductor, Inc. 5. 在完成上述配置后,点击“Finish”可以看到如图 52所示的“Project Explorer”界面。 6. 在工程中,可以通过右击项目名选择“New”“Source File”来新建文件,也可以通过拖 拽功能将已有的源文件、头文件和目录等加入到工程中。 导入已有工程可参考以下步骤: 1. 在打开KDS后,选择“File”“Import”。 2. 在“Import”页中,选择“Existing Projects into Workspace”并点击“Next”。 3. 在“Import Projects”页中,选择“Select root directory”并点击“Browse”来选择已有工程 的目标文件夹,选好后点击“OK”。 图 53 在KDS中导入已有工程 4. 在“Projects”框中会列举出目标文件夹中所有的工程,在需要导入的工程前的选项框内打 勾,并点击“Finish”,如图 53所示。 3.2.1.3 编译与调试 在开始编译程序之前,需要预先配置好工程的一些编译参数。右击要编译的Project并选择 “Properties”,在“Proporties for example”页中可以看到工程的所有参数,如图 54所示。点击展 开“C/C++Build”后在Settings中可以看到跟编译有关的参数,默认的参数一般无需修改,如需修 改,请参照说明文档。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 33 图 54 在KDS中配置编译参数 在点击编译 图标后,在相应的工程文件中看到编译生成的.elf文件,如图 55所示。 图 55 编译后生成的可下载文件 在开始下载之前,需要先配置相关调试参数,如选择调试接口等。右击需要调试的工程并选择 “Debug As”“Debug Configurations”进入“Debug”配置页面,如图 56所示。也可以通过点 击调试按键右侧的向下箭头来进入“Debug”配置页面。在“Main”选项卡中,需保证“C/C++ Application”一栏中所选的.elf文件为需要调试的工程对应产生的编译文件。对于“Debugger”和 “Startup”两栏,根据调试器的不同,需要进行不同的配置,如图 56所示。这部分内容会在调试 与烧写工具(Debugger&Programmer)中作具体介绍。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 34 Freescale Semiconductor, Inc. 图 56 在KDS中调试配置 图 57 在KDS中进行调试 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 35 配置完成后,将目标板与PC机通过USB线和相关调试器连接起来,依次点击“Apply”和“Debug” 两个按键进入“Debug Perspective”,如图 57所示,可以程序已暂停在main()函数的初始处。这样 就可以实际调试程序了。表 1列出了工具条中各按键的主要作用。 表 1 在KDS中调试按键功能 按键 说明 按键 说明 开始/继续执行 单步返回函数 暂停执行 复位 使能汇编单步执行 断开仿真器 单步执行 结束调试 单步进入函数 开始下载与调试 3.2.1.4 下载 在程序调试完成后,需要将调试好的程序下载到FLASH中。 点击下载按钮 ,进入“Flash Configurations”界面。配置可参考编译与调试中的要求相同。在 完成配置后,依次选择“Apply”和“Flash”,等待程序下载完成后,重新上电或手动复位后程 序开始运行。 3.2.2 CodeWarrior集成开发环境 CodeWarrior(简写为CW)原是Metroworks公司的产品,后来该公司被飞思卡尔收购,因此CW也 就成为了飞思卡尔自己的IDE系统,目前已在业内使用多年。从10.0版本以后,CW开始使用Eclipse 界面,能够支持不同架构的芯片,包括ColdFire、ColdFire+、DSC、Kinetis、PowerPC、Qorivva、 RS08、S08和S12Z等。 目前针对飞思卡尔单片机的CW的最新版本是CodeWarrior for Microcontrollers v10.6。另外根据客 户的用途和需求不同分为评估版、基础版、标准版和专业版,其中评估版是免费的,其支持代码 和数据大小也是有限制的。以Kinetis系列MCU为例,K系列的限制为128 KB,E/L/M/V系列的限 制为64 KB,如超出限制,则需要申请更高级的版本。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 36 Freescale Semiconductor, Inc. 另外需要提醒的是,对于v10.6以后的版本,CodeWarrior不会再支持其后发布的Kinetis系列的产 品,因此对于使用Kinetis新产品的用户,需要将软件平台逐步转移到其他IDE上,由于 CodeWarrior与KDS所建立的工程兼容,因此推荐使用KDS完成IDE平台的切换。 CodeWarrior软件的安装包和相关文档的下载路径为: 软件:飞思卡尔中文首页->软件和工具->软件中心->IDE-调试、编译与构建工具->微控制器->CodeWarrior for MCUs->下载 文档:飞思卡尔中文首页->软件和工具->软件中心->IDE-调试、编译与构建工具->微控制器->CodeWarrior for MCUs->文档 在支持的调试接口、新建工程与导入工程、调试与编译等方面,CodeWarrior与KDS基本相同,此 处就不作介绍,具体细节可以参照相关说明文档。 3.2.3 处理器专家(Processor Expert) PE(Process Expert)是一款支持Kinetis、ColdFire等多种不同内核的MCU的快速应用开发软件。 该软件以图形化界面的方式快速配置MCU的内核及外设,生成相应的初始化及应用代码,省去手 动编写底层驱动代码的繁复工作,从而大大提高了软件工程师的工作效率。其生成的代码可以支 持KDS、CodeWarrior、IAR和Keil等多种IDE;另外,PE还以嵌入到基于Eclipse架构的IDE中,例 如在KDS和CodeWarrior,可以直接使用嵌入的PE功能,PE所产生的代码将自动放置在相关工程 下,然后在此基础上修改主程序就可以进行编译和调试。 KDS和CodeWarrior这两种IDE安装后都带有内置的PE,无需再额外安装。因此其安装过程就不再 介绍。 3.2.3.1 在KDS或CW10.6中新建基于PE的工程 下面以Kinetis K22为例,创建一个使用PE的KDS工程。使用KDS和CW的操作方法完全相同,下 面以KDS为例说明操作的具体步骤: 1. 首先,在KDS的选项栏中,点击“File”栏并选择“New”“Bareboard Project”来创建 一个新的工程。 2. 出现工程向导界面如图 58,输入工程名并点击“Next”。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 37 图 58 工程设置向导 3. 选择芯片类型,此处选择“Kinetis K Series”“K2x Family”“K22”。点击“Next”。 4. 在“Language and Build Tool Options”页中,选择C语言并 点击“Next”。 5. 在“Rapid Appliation Developmen”页中,在“Rapid Appliation Developmen”组中,选中 “Processor Expert”并点击“Finish”。至此一个包含PE功能的工程已建好,下面开始添加 元件来配置所需的外设。 6. 在“Component Library”中,找到相应组件(如FTM)并右击选择“Add to project”选项。 7. 点击打开添加的组件,其具体配置显示在“Component Inspector”中。 8. 根据所需要求进行以下配置初始化等参数。 9. 在配置完成后,点击图标 产生相应代码。 10. 所产生的代码存放在“Generated_Code”文件夹中。可以看到FTM的相关初始化代码已自 动完成,点击功能键即可编译运行。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 38 Freescale Semiconductor, Inc. 图 59 在KDS中使用Processor Expert生成代码 3.2.3.2 使用独立的PE创建工程 如果希望使用独立的Processor Expert生成驱动代码,并用于IAR、Keil等第三方开发工具中,则需 要安装独立的PE软件。当前最新版本是V10.4。另外,对于使用一些最新器件的开发,如K22F, KV31等,还需安装相应的补丁包。软件及补丁包的下载地址及链接如下: 软件:飞思卡尔中文首页->软件和工具->软件中心->嵌入式组件->Processor Expert 软件->下载 如需在PE软件中使用KSDK,也需要安装KSDK的插件,步骤可参考KDS软件中安装KSDK的方法。 另外,对于生成适用于第三方软件 的工程,在新建工程时,需要勾选相应的编译器,以便生成对 应的链接器文件等,如图 60所示。 图 60 在PE下建立适用于IAR开发环境的工程 对于PE软件的具体使用方法,可参见飞思卡尔单片机软件开发指南中的介绍。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 39 3.3 调试与烧写工具(Debugger&Programmer) 调试工具是开发工具链中的重要一环,方便耐用的开发工具对用户非常重要。接下来就介绍三种 常用的调试工具。 3.3.1 OpenSDA OpenSDA是飞思卡尔自主开发的一种调试平台。在该平台中烧写不同的调试固件,可以使其兼容 不同的调试工具(如实现PEMicro Segger的JLink接口等)。下面介绍如何在FRDM-K22F板上使用 OpenSDA来实现Jlink调试。 1. 在Segger的官网上下载用于OpenSDA的固件库。下载地址为: www.segger.com/opensda.html。 2. 如果FRDM-K22板通过USB线连接到PC机上,请将其拔下。 3. 按住SW1键,然后用USB线连接PC机与板上的SDA USB接口。 4. 松开 SW1键,可见板上一个LED灯在有规律地闪烁,且在PC机上能看到一个移动存储设备, 其盘符为BOOTLOADER,表示目标板进入了bootloader模式,如图 61所示。 图 61 OpenSDA处于BOOTLOADER模式下的显示 5. 将1中所下载的压缩包Jlink_OpenSDA_V2_1.zip解压缩,得到Jlink_OpenSDA_V2_1.bin文 件。 6. 将上述.bin文件复制粘贴到BOOTLOADER设备中并拔下USB线。 7. 重新插上该USB线,在设备管理器中可见到如图 62所示的设备,表示固件烧写成功。 图 62 固件下载成功后设备管理器中显示 这样在IDE中就可以选择以Jlink调试下载程序了。另外OpenSDA还带有虚拟串口调试功能,串口 格式如下: 波特率:115200 bps;1位起始位;8位数据位;无校验位;1位停止位。 在KDS中关于使用OpenSDA设置如图 63所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 40 Freescale Semiconductor, Inc. 图 63 在KDS中使用Jlink调试配置 3.3.2 JLink Jlink是SEGGER公司为支持仿真ARM 内核芯片推出的JTAG仿真器,支持Cortex M0/M1/M3/M4 等内核芯片,并与KDS、CodeWarrior、IAR 和keil等多种开发环境无缝连接,使用方便。 Jlink驱动的下载地址如下:www.segger.com/jlink-software.html,该驱动软件不仅提供了程序下载 功能,另外J-Flash软件还可以不需要IDE软件独立地擦除与烧写程序,以及实现查看芯片的ID、 RAM/FLASH大小、解锁芯片等功能。 图 64为Jlink的20脚的接口图。 图 64 JLink的标准20芯接口 3.3.3 Multilink P&E推出的USB Multilink Universal(FX)是一款高速一体化开发接口(USB Multilink Universal FX 比USB Multilink Universal下载速度更快),它支持Kinetis、DSC等多种MCU。因此其包含多种调 试接口以匹配不同种类的MCU,图 65为支持Kinetis系列相关的三种调试接口。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 41 图 65 Multilink用于Kinetis系列调试的的3种接口 在使用时,其连接顺序如下: 1. 确保目标板断电,并断开USB Multilink Universal与外部的连接。 2. 打开Multilink的塑料外壳,选择合适的接口将其与目标板的调试接口连接起来。 3. 将Multilink与PC机通过USB线相连。此时蓝灯亮。 4. 将目标板上电,此时黄灯亮。 在断开连接时,请先将目标板断电。使用时请遵守连接顺序,否则可能到损坏调试器。 3.4 量产烧录工具 量产烧录工具多用于大规模烧写可编程控制器的场合,具有离线烧写,速度快,操作简单方便等 优点。在大规模量产时,可用来节省人工成本并提高生产效率。下面给出四种烧录厂商及工具。 PEmicro PEmicro针对不同的型号有两种烧录工具,分别为cyclone pro和cyclone max。其中 cyclone max支持Kinetis全系列的MCU型号。除了作为烧录工具,cyclone max还可以作为在线调试 工具。如需购买,请登陆以下网址: www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=CYCLONEMAX_PE&cof=0&a m=0&tab=Buy_Parametric_Tab&fromSearch=false 或者登陆 PEmicro 的官网:www.pemicro.com。 上海祥佑(MICETEK) Web: www.micetek.com.cn TEL:021-32020061/62-8044 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 42 Freescale Semiconductor, Inc. 南京西尔特(XELTEK) Web:www.xeltek-cn.com TEL:025-68161233 深圳鹏远电通(Eagle Comm) Web:www.mcuisp.com TEL:13926556116 如果在使用上述烧录工具遇到问题时,可与烧录器厂家或技术支持联系。 3.5 Bootloader(引导加载程序) bootloader是一种面向用户应用程序的引导代码,可以在没有烧写器的情况下烧录用户程序,也可 以用于在线更新程序,因此得到了广泛的实际应用。bootloader主要包含两部分功能,即利用外设 接口(如UART/SPI/IIC/USB等)接收上位机发来的程序,以及将接收到的程序利用MCU内置的 FLASH编程模块进行烧写。这两部分功能与MCU内部的外设及FLASH的配置密切相关,因此, 飞思卡尔提供了三种实现bootloader的方式,用户可以直接使用或很方便地进行移植。在飞思卡尔 官方网站的主页搜索栏中输入“Kinetis bootloader”或“Kinetis引导加载程序”,可以搜索到相关的 资料,如图 66所示。 图 66 搜索Kinetis bootloader 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 43 点击上图中的“Kinetis引导加载程序”,可以进入Kinetis bootloader的主页。在此页面的下方,可 以看到飞思卡尔支持三种不同的bootloader实现方式的芯片列表,如图 67所示。 图 67 支持不同bootloader实现方式的Kinetis芯片列表 3.5.1 预烧写在ROM中的bootloader 图 68 预烧写在ROM中的bootloader 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 44 Freescale Semiconductor, Inc. 飞思卡尔某些型号的MCU中内置了专用的ROM来存放bootloader。对于某一型号的MCU是否带有 ROM型的bootloader,可以从相对应的参考手册(RM)中是否有Kinetis ROM bootloader这一章节 来确定,或者在数据手册(datasheet)的内存(memory)介绍中查找。另外,对于MCU复位后是 先执行ROM中的bootloader还是直接执行用户的应用程序,是由内置FLASH中FOPT寄存器(偏移 地址为0x40D)决定的。具体配置选择请参看参考手册(RM)中的Reset and Boot章节中的描述。 关于使用哪一种外设接口来接收外部程序,接口功能复用在哪些引脚上等问题,都可以在参考手 册(RM)的Kinetis ROM bootloader章节中找到具体的配置方法。 目前支持ROM型bootloader的Kinetis系列MCU包括KL03,KL27和KL43等。其中KL03的ROM bootloader包含SPI/UART/IIC三种接收方式,KL27和KL43还增加了USB的方式。 3.5.2 预烧写在FLASH中一次性bootloader 图 69 预烧写在FLASH中一次性的bootloader 这种类型的bootloader在芯片出厂前预写在FLASH中,因此可以像ROM型bootloader一样直接使用。 但与ROM型不同的是,上电后bootloader会从FLASH搬移到RAM 中运行,再将FLASH整片擦除 并烧写用户程序,因此这种bootloader是一次性的。其优点是不需要片内ROM且方便量产烧写, 缺点是无法支持以后的程序更新。 目前支持预烧写在FLASH中一次性bootloader的Kinetis系列MCU包括K22、K24和KV3x等。类似于 FLASH型的bootloader的使用细节,也可在对应参考手册(RM)中的Kinetis Flashloader章节中找 到。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 45 3.5.3 开放源码的bootloader 图 70 提供开放源码可修改的bootloader 这类bootloader的工作方式与前两种稍有不同,也是最常用的一种。这种方式将FLASH空间分为两 个部分,一部分用于存储bootloader代码;另一部分用于存储用户应用程序代码。可以理解为FLASH 中存储了两套完整的程序,在上电初始化时,首先执行bootloader程序,待其执行结束后再跳转到 应用程序执行。由于应用代码的基址不再为0x0000,在切换过程中需要修改SCB_VTOR,来实现 中断向量表的重映射。对于这种bootloader的细节描述,可参照应用笔记的说明。 对于希望定制自己的bootloader的开发者而言,这种提供开放源码的方式似乎更为合适。在Kinetis Bootloader页面的“下载”栏中,可以下载到针对K64的bootloader软件包,目前可支持K63和K64两 种型号。用户可以根据MCU型号的不同,修改对应的外设驱动与FLASH烧写命令程序来实现移植。 Kinetis bootloader的下载地址如下: www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=KBOOT&fpsp=1&tab=Design_Tools_Tab 另外,上述三种方式bootloader在使用时,外部输入命令的格式是一致的。在Kinetis bootloader的 下载包\bin\win文件夹中,有一个可执行文件blhost,可以在PC主机上使用命令行的方式完成上 位机传送应用代码的功能。 对于目前芯片内部还没有嵌入bootloader的MCU,如Kinetis E系列、K60/K64、8位/16位MCU,32 位ColdFire等,都可以在官网对应的下载页面内找到对应的通用型bootloader代码及说明文档。以 KE02为例,在其主页上可以找到应用笔记AN4775,如图 71所示。 图 71 KE02_IIC_bootloader文档及代码 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 46 Freescale Semiconductor, Inc. 这部分通用型bootloader的上位机,可以参照文档AN2295(中文名为:开发人员的串行引导加载 程序)及软件AN2295SW。AN2295的文档中不仅介绍了通用型bootloader针对不同MCU的工作原 理及特性,还介绍了运用AN2295SW将bootloader的S19文件与主应用程序的S19文件合成一个S19 文件的方法:这种做法简化了首次下载的过程。 图 72 通用型bootloader说明文档及上位机软件下载 3.6 评估板(EVB) 为了缩短用户评估所选芯片以及提供硬件设计参考,飞思卡尔提供了大量的评估板,大部分评估 板不仅包含了MCU的最小系统、引出的通用IO口、提供JTAG调试接口、提供板载调试器OpenSDA, 还针对不同应用的芯片配置了USB口,触摸滑条和液晶显示等功能电路和接口。另外,这些外设 的驱动程序在官网上也都一应俱全。针对Kinetis系列的评估,评估板按结构分为两种,分别是 FRDM板和Tower板(塔式系统板)。一般来说FRDM板相对便宜,功能简单,而Tower板功能更 加丰富,如图 73所示。 图 73 FRDM板与Tower板 如何根据所选的MCU型号找到最适合用于评估的EVM板是评估的第一步。下面以K22为例,用两 种方法来找到所需的评估板。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 47 1. 首先找到介绍K22的官网主页,路径为“产品”“Kinetis ARM@ MCU”“K系列” “K2x USB MCU”“K22_120MHz”。在该主页的右栏中间可以看到“推荐软件和工具”, 其中可以看到针对K22有FRDM-K22F和TWR-K22F120M两种评估板。 图 74 搜索合适的评估板的方式一 2. 在飞思卡尔的中文首页中,在“软件和工具”一栏中选择硬件开发工具。在该页面中,可 以找到针对Kinetis系列的评估,有塔式系统模块化开发平台和飞思卡尔Freedom开发平台。 这里选择塔式系统模块开发平台。在该页中,选择“展开MCU与处理器模块”“Kinetis MCU模块”,如图 75所示。可见所有的Tower板都已列举出,在其中总可以找到跟您所选 用的型号相同或相近的评估板。 图 75 搜索合适的评估板的方式二 下面就以FRDM-K22F和TWR–K22F120M为例,介绍如何使用评估板。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 48 Freescale Semiconductor, Inc. 3.6.1 Freedom开发平台(FRDM板) 飞思卡尔Freedom开发平台是一种小型化、低功率和高性价比的评估和开发系统,十分适合针对 Kinetis MCU系列器件进行快速应用原型设计和制作演示。关于FRDM-K22F的原理图/软件包和说 明文档的下载路径如下: 下载路径:中文首页->产品->Kinetis 文档路径:中文首页->产品->Kinetis ARM@MCU->K系列->K2x USB MCU->K22_120->推荐软件与工具(FRDM-K22)->文档 ARM@MCU->K系列->K2x USB MCU->K22_120->推荐软件与工具(FRDM-K22)->下载 K22的FRDM板上基本硬件单元包括: 电源电路 板上K22F的输入5V电源可由直流插座J23或用SDA的USB口提供,输入的5V电源经过LDO 输出3.3V供给板上主MCU及其他外设。在测量MCU功耗时,可将R62和R63两电阻取下, 将J15线引出即可测量供给MCU的电流值以便测量功耗。 JTAG调试电路 板上引出了SWD的调试接口,只需通过拿掉J10和J13的跳线来断开OpenSDA与主MCU的连 接即可。J11的封装为标准的10脚封装(脚间距0.05’)。 晶振电路 MCU上电后初始化为使用内部时钟源,可以通过修改软件选择外部时钟源,所支持的外部 主晶振的频率范围为32-40 KHz以及3-32 MHz。该板上的晶振频率为8 MHz。另外板上的 32.768 KHz的晶振用于给RTC提供时钟源。 复位电路 板上按键SW2给主芯片提供复位信号,同时SW2也与OpenSDA连接,长按SW2也可使 OpenSDA进入booloader模式。 3.6.2 塔式系统模块化开发平台(Tower板) 飞思卡尔塔式系统是一个为8位、16位和32位微控制器设计的模块化开发平台,基于该平台,研发 人员可通过开速原型技术进行样机研制。通过这个平台,用户可以采用搭积木的方式将各种功能 板组合在一起,实现用户需要的各种功能。它为设计者提供了基本的模块单元,以满足微控制器 进一步开发的需要。关于TWR-K22F120M的原理图/软件包和说明文档的下载路径如下: 下载路径:中文首页->产品->Kinetis ARM@MCU->K系列->K2x USB MCU->K22_120->推荐软件与工具(TWR-K22F12M)->下载 文档路径:中文首页->产品->Kinetis ARM@MCU->K系列->K2x USB MCU->K22_120->推荐软件与工具(TWR-K22F12M)->文档 3.6.3 如何申请EVB 关于如何得到相关的评估板,有两种方法。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 49 1. 直接联系代理商,向其索要评估板。代理商的具体联系方法请参见通过FAE得到技术支持 小节的介绍。 2. 在飞思卡尔网上订购,如图 76所示。 图 76 获取评估板的方式 3.6.4 按产品分类的开发板及相关资料列表及链接 表 2列出了Kinetis系列带有开发板的主要芯片,并给出了参考手册、数据手册以及开发板的链接, 一些开发板还可以兼容其他系列的芯片。 表 2 Kinetis系列主要芯片 产品 主频 MHz 引脚/pin 参考手册 数据手册 开发板 L series (超低功耗) KL02 48 32 KL02P32M48SF0RM 24 KL02P32M48SF0 FRDM-KL02Z KL03P24M48SF0 FRDM-KL03Z FRDM-KL05Z KL05 48 48 KL05P48M48SF1RM KL05P48M48SF1 KL15 48 35 KL15P35M48SF0RM KL15P35M48SF0 KL25 48 80 KL26 48 36 FRDM-KL25Z KL25P80M48SF0RM KL25P80M48SF0 TWR-KL25Z48M KL26P121M48SF4RM KL26P36M48SF5 FRDM-KL26Z 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 50 Freescale Semiconductor, Inc. 产品 主频 MHz 引脚/pin KL36 48 121 KL43 48 64 KL46 48 121 参考手册 数据手册 开发板 KL36P121M48SF4RM KL36P121M48SF4 KL43P64M48SF6RM KL43P64M48SF6 FRDM-KL43Z TWR-KL43Z48M KL46P121M48SF4RM KL46P121M48SF4 FRDM-KL46Z TWR-KL46Z48M K series (性能和集成) K02 100 64 K02P64M100SFARM K02P64M100SFA K10 50 32 K10P32M50SF0RM K10P32M50SF0 K20 50 32 K20P32M50SF0RM K20P32M50SF0 FRDM-K20D50M TWR-K20D50M 72 64 K20P64M72SF1RM K20P64M72SF1 TWR-K20D72M K21 50 80 K21P80M50SF4RM K21P80M50SF4 TWR-K21D50M K21 120 121 K21P121M120SF5RM K21P121M120SF5 TWR-K21F120M K22 120 64 K22P64M120SF5RM K22P64M120SF5 FRDM-K22F TWR-K22F120M K24 120 121 K24P121M120SF5RM K24P121M120SF5 TWR-K24F120M K30 72 64 K30P64M72SF1RM K30P64M72SF1 K40 100 81 K40P81M100SF2V2RM K40P81M100SF2V2 TWR-K40D100M 81 K40P81M100SF2RM K40P81M100SF2 TWR-K40X256 K53 100 144 K53P144M100SF2V2RM K53P144M100SF2V2 TWR-K53N512 K60 100 100 K60P100M100SF2V2RM K60P100M100SF2V2 TWR-K60D100M 100 K60P100M100SF2RM K60P100M100SF2 TWR-K60N512 144 K60P144M150SF3RM K60P144M120SF3 TWR-60F120M 120 K64 120 142 K64P144M120SF5RM K64P142M120SF5 FRDM-K64F TWR-K64F120M K70 120 256 K70P256M150SF3RM K70P256M120SF3 TWR-K70F120M 20 64 MKE02Z64M20SF0RM MKE02P64M20SF0 FRDM-KE02Z 40 64 MKE02P64M40SF0RM MKE02P64M40SF0 FRDM-KE02Z40M 48 24 MKE04P24M48SF0RM MKE04P24M48SF0 FRDM-KE04Z 80 MKE04P80M48SF0RM MKE04P80M48SF0 80 MKE06P80M48SF0RM MKE06P80M48SF0 FRDM-KE06Z 24 KEA8RM S9KEA8P44M48SF0 TRK-KEA8 E Series (5v/稳定可靠) KE02 KE04 KE06 48 EA Series (汽车级) KEA8 48 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 51 产品 主频 MHz 引脚/pin 参考手册 数据手册 开发板 KEA64 64 KEA64RM S9KEA64P64M20SF0 TRK-KEA64 KEA128 80 KEA128RM S9KEA128P80M48SF0 TRK-KEA128 TWR-KV10Z32 V Series (电机控制和电源转换) KV10 50 48 KV10P48M75RM KV10P48M75 KV30 100 64 KV30P64M100SFARM KV30P64M100SFA KV31 100 100 KV31P100M100SF9RM KV31P100M100SF9 120 100 KV31P100M120SF7RM KV31P100M120SF7 100 MKMxxZxxCxx5RM MKMxxZxxCxx5 MKMxxZxxACxx5RM MKMxxZxxACxx5 MKMxxZxxCxx5RM MKMxxZxxCxx5 MKMxxZxxACxx5RM MKMxxZxxACxx5 TWR-KV10Z32 M Series (计量) KM1x KM3x 50 50 100 TWR-KM34Z50M W Series (无线连接) KW0x(Sub-GHz射频MCU);KW2x(2.4 GHz射频MCU) KW0x 48 60 MKW01xxRM MKW01Z128 KW2x 50 63 MKW2xDxxxRM MKW2xDxxx TWR-KW2x 3.7 Kinetis 软件开发套件(Kinetis SDK, Kinetis Software Development Studio) Kinetis SDK是针对于Kinetis系列MCU所做的软件开发套件,又称为KSDK。它由强大的外设驱动 代码库,协议栈库与示例代码库等部分组成,能够简化和加快对于Kinetis系列MCU的应用开发。 另外,Kinetis SDK是免费的工具,而且所有的硬件抽象和外设驱动软件均开放完整源代码。目前 最新版本为1.1.0,支持KL03、KL43、K02、K22、K24、K63、K64和KV3x这八种型号的MCU, 随后会不断更新完善,直至能覆盖支持所有的Kinetis系列MCU。对于SDK支持MCU的更新情况, 可登陆以下KSDK的下载页面了解。 3.7.1 KSDK的下载与安装 以下是Kinetis SDK的下载路径及相关文档路径。 下载路径:中文首页->软件和工具->软件中心->软件开发套件->用于Kinetis MCU的软件开发套件->下载 文档路径:中文首页->软件和工具->软件中心->软件开发套件->用于Kinetis MCU的软件开发套件->文档 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 52 Freescale Semiconductor, Inc. 下载安装包后,只需根据向导即可完成安装。安装结束后,在安装路径中可看到如下文件夹,这 些就是Kinetis SDK的主要内容,如图 77所示。 图 77 KSDK的完整文件 开始使用SDK之前,还需要完成以下两个步骤: 1. 在KDS中安装于SDK有关的eclipse插件。这一部分内容已在KDS软件下载与安装中有介绍, 这里不再重复。 2. 设置环境变量。右击“我的电脑”,依次点击“属性”“高级系统设置”“环境变量” 可以看到如何添加新的环境变量,并按图 78方式相应设置。 图 78 设置环境变量 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 53 3.7.2 KSDK的结构介绍 Kinetis SDK的结构如图 79所示,它包含了由底层头文件到硬件抽象和外设驱动软件、以及用户应 用的完整功能。由图中不同模块的放置位置,可以看出模块之间调用与被调用的关系。下面对各 个模块逐一进行介绍。 图 79 KSDK的总体结构 1. CMSIS Core Header Files/SOC Header, IP Extension Header Files/CMSIS DSP 这一层是芯片主要寄存器的地址定义,包含了与CMSIS兼容的内核定义头文件和DSP运算 库。此外,还有针对不同型号芯片的外设定义头文件。所在位置路径为:“安装目录” “platform”“CMSIS”。 2. Hardware Abstraction Layer 这一模块称为硬件抽象层,简称HAL,主要负责基础模式的设置,可以理解为对底层寄存 器的设置,省去了手工配置寄存器的麻烦。针对每个外设IP,都有相应的HAL文件与之对 应。同时每个HAL文件也只负责与该外设IP的配置。因此,HAL层具有一定底层驱动的抽 象意义,但所完成的功能相对简单。所在位置路径为: “安装目录”“platform”“drivers”。 3. System Services 系统服务模块主要涉及一些常见的系统功能,包括中断管理、时钟管理、功耗管理和定时 器管理。这一模块常与HAL配合使用,提供给上层的OSA和Peripheral Drivers模块以完成更 多的功能。所在位置路径为:“安装目录”“platform”“system”。 4. Peripheral Drivers 这一模块称为外设驱动层,简称PD。PD所完成的功能比HAL更加丰富,主要通过调用HAL 和System Svevices来实现,通常PD可能调用一个以上的HAL模块。它们两者是不同的,以 UART模块举例来说,UART的HAL模块只是完成了字节形式的收发功能,而其PD模块则 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 54 Freescale Semiconductor, Inc. 能支持基于中断的数据流传送,或将DMA与UART配合使用。目前PD模块支持了多数的典 型用法,但也没有列举完全,如UART的PD模块不支持智能卡等,这些应用会在以后更新 中陆续加入。所在位置路径为:“安装目录”“platform”“drivers”。 5. OSA OSA的全称为Operating System Abstraction,操作系统抽象层。OSA用于设置SDK在一些操 作系统上运行,对于不同的操作系统,在OSA层上进行了统一的封装,比如MQX和 FreeRTOS信号量的使用存在很大差异,但利用OSA提供的函数,可以完全屏蔽不同操作系 统的差异,当然也支持裸板模式。目前的版本包含了操作系统Kernel的大多数服务的抽象, 这些操作系统包括MQX、FreeRTOS、μC/OS-II、μC/OS-III。所在位置路径为:“安装目 录”“platform”“osa”。 6. Stacks and Middleware 这一层包含了一些软件堆栈与协议等,如USB协议栈、TCP/IP协议栈和文件系统等。 7. Board Configration 针对不同的EVM板,都有相应的SDK例程与之对应。这一模块用于配置不同EVM上的管脚 复用、外设时钟给定等来实现兼容。“安装目录”“boards”。 另外,KSDK提供了许多完整例程,可以基于EVM板运行,帮助用户学习KSDK的结构与功能, 所在位置路径为:“安装目录”“demos”。关于如何移植KSDK来完成用户应用的开发,请参 考飞思卡尔单片机软件开发指南的介绍。 3.8 如何获取参考代码和参考设计 在开发应用软件时,用户不仅可能需要针对底层单个外设的驱动,还需要比较复杂功能的软件实 现,甚至是一个产品或应用的整体方案。飞思卡尔有许多资源能够帮助用户在不同的开发状态下 顺利完成项目。 3.8.1 例程代码(Sample Code) 例程代码对于MCU软件开发上手十分重要。下面给出四种找到相关代码例程的方法。 Kinetis SDK(适合于已涵盖型号的MCU) 如上述介绍,KSDK是一种功能强大的软件开发套件,但目前还没有覆盖所有的型号。对 于已经涵盖的型号,除了通过前面介绍的路径直接找到外,也可从所涵盖型号的主页下的 “软件与工具”选项页中找到。 Sample Code Package(SC,适合于尚未被SDK包含的MCU) 对于目前还没有被SDK涵盖的MCU型号,会由包含了针对某个型号的几乎所有模块驱动库 的例程代码来支持。相比较SDK而言,SC的结构简单,更易于上手,但功能较弱。另外其 一般被放置在对应型号的Tower板的主页中,以K64为例,路径如下: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 55 下载路径:“K64主页”“软件和工具”“硬件开发工具-评估/开发板与系统” “TWR-K64F120M”“下载”“软件开发工具”。 点击此处可进入下载链接。 图 80 在对应MCU下的sample Code IDE安装路径下的Sample Code(适合于安装CodeWarrior等IDE的用户) 对于安装了CodeWarriord的用户,在其安装目录下也能找到针对不同系列的许多Sample Code。对于Kinetis的K系列为例,其路径如下: “CodeWarrior的安装根目录”“MCU”“CodeWarrior_Examples”“Kinetis_Examples” 图 81 CodeWarrior安装目录下的Sample Code 代码片段等 同样在某个型号MCU的主页中的软件开发工具中也有相应的实现某个具体功能的代码片 段、引导代码等可供参考。例如: 图 82 代码片段 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 56 Freescale Semiconductor, Inc. 3.8.2 应用笔记 对于比较复杂功能的软件实现,例如如何在Sigma-Delta ADC上实现FFT、如何使用DMA和GPIO 来模拟PWM等,有关实现的功能原理与实现步骤都会以应用笔记的形式记录下来,而且一部分应 用笔记还带有示例程序。 要准确快速地找到相关应用笔记,首先应该在所选芯片的文档中查找,对于带有例程的应用笔记, 也会有图标显示。 图 83 搜索应用笔记的方式一 另外,使用文档搜索功能,能够更全面地查找到已有的AN。下面以K22为例给出搜索所有相关AN 的步骤。 1. 点击首页上的搜索按键。 图 84 搜索应用笔记的方式二步骤1 2. 点击左边栏中的“文档”。 3. 在“过滤方式”中,依次选择Kinetis_MCU、K2x_USB_MCU。文档类型中选择“应用说 明”。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 57 图 85 搜索应用笔记的方式二步骤2、3 3.8.3 参考设计 参考设计通常是针对某个应用的完整解决方案,包括硬件设计、软件代码和原理说明等。 3.8.3.1 如何搜索参考设计 使用“软件和工具”中的高级搜索功能能够帮助您找到最合适的参考设计。下面介绍如何搜索与 Kinetis 的K系列相关的DRM(Design Reference Manual)。 1. 点击飞思卡尔官网主页上的“软件和工具”。在中间一栏的下方找到该功能“高级搜索”。 2. 在软件和工具一栏中选择“参考设计”。 3. 在支持的器件中递进式地选择“微控制器”“Kinetis MCU”“K系列”。 4. 在应用领域中选择 “工业”,如图 86所示。 图 86 CodeWarrior安装目录下的Sample Code 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 58 Freescale Semiconductor, Inc. 在选择“提交”后,就能看到应用K系列MCU在工业领域中的参考设计。搜索到的结果如 图 87所示。 图 87 参考设计的搜索结果 注 由于飞思卡尔网站上的中文搜索功能不是很完善,建议用户使用英文 进行搜索。 3.8.3.2 按应用分类的参考设计列表 飞思卡尔在消费电子、工业、健康医疗、电机控制、智能能源等领域都具有较为完善的参考设计 和解决方案,包括相关的应用文档和开发环境。以下列出了主要的参考设计,点击对应参考设计 的链接,可以到飞思卡尔官网下载相关资料,了解更多信息。 1. 消费电子 智能手机/平板电脑配件: o 智能手机附件 o 心电图仪(ECG)配件 o 充电器节能解决方案 o 无线充电 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 59 互联家庭: o 遥控器 o 空鼠 o 家庭能源管理系统 o 游戏耳机 家用电器: o 烹饪电器 o 洗碗机 o 室内空调系统 手机: o LCD 背光 o 电子书阅读器 可穿戴设备 o 可穿戴无线医疗保健贴片 o 持续血糖监测仪 o 智能手表 2. 工业控制 工厂自动化: o 输入输出控制(l/O 控制) o 人机接口(HMI) o 以太网转换器(桥) o 机器视觉与摄像头 o 工业机器人 楼宇控制: o IP 摄像头 o 门禁与遥控 o 恒温器 o 大功率 LED 零售终端与售卖亭 o 固定式 ePOS 终端 o 便携式 ePOS 终端 3. 医疗保健 持续气道正压通气(CPAP)呼吸机 脉搏血氧测量 活动与健康监测仪 血压计 胎心监测仪 4. 电机控制 三相交流感应电机 永磁同步电机 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 60 Freescale Semiconductor, Inc. 单相交流感应电机 无刷直流电机(BLDC) 有刷直流电机 步进电机 通用电机 开关磁阻电机 5. 智能电源 智能电网与智能仪表 o 智能计量设备连接 o 基于 IPv6 的智能城市连接 o 燃气表和水表 o 3 相电表 o 智能互联家电 数字功率变换 o 商用太阳能逆变器 o 开关电源 3.9 飞思卡尔单片机的生态系统(Ecosystem) 飞思卡尔积极与嵌入式企业合作,为方便MCU的开发与应用,建立了工具链、操作系统、中间件 等不同合作联盟,此外在汽车、通信、工业与消费电子等领域企业合作,为客户提供了强大完善 的生态体系。 图 88 飞思卡尔单片机的生态系统 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 61 上述不同企业根据其擅长领域的不同,为飞思卡尔提供了诸多支持,有的提供了基于 CAN 和 TCP/IP 的协议栈,有的提供了适用于物联网的 WiFi 技术,还有的提供了车载信息娱乐系统的解决方案。 这些技术领先的企业对于飞思卡尔产品广泛深入的支持使得这个生态系统愈发丰富和强大,也使 得用户的产品开发更加得心应手。 用户可以在飞思卡尔网站上查询到相关合作伙伴和生态合作系统的信息,如图 89所示,点击“支 持服务与网络社区”“支持资源”“Freescale Connect合作伙伴计划”,就出现了搜索页面。 图 89 搜索飞思卡尔和合作伙伴和生态系统 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 62 Freescale Semiconductor, Inc. 4 如何阅读飞思卡尔的技术文档 4.1 概述 在嵌入式系统的研发过程中,技术文档的阅读是一个基础。对一款芯片或者一个开发平台从入门 到熟悉再到深入的研究,都离不开对其相关文档的查阅。而如今不同的半导体厂家针对其自家的 芯片或者开发平台都有其自己一套风格的文档体系结构,这就给一些客户的平台移植或者新手的 学习入门都带来了一定程度的障碍和门槛。 本章节以飞思卡尔的Kinetis K22系列MCU为例,详细介绍了飞思卡尔公司提供的包括Datasheet、 Reference Manual、User Guide、Application Note以及一些其他相关技术文档的组织结构和阅读方 法,提高客户阅读文档的效率,从而进一步帮助缩短客户的研发周期。 4.2 数据手册(Datasheet) 与一些其他的半导体厂商不同,飞思卡尔提供的数据手册和参考手册是分开的,即两个独立的技 术文档,其中数据手册(Datasheet)可以查阅到芯片相关的电气参数和封装尺寸等信息,而参考 手册(Reference Manual)则主要介绍芯片具体的架构、技术细节和寄存器配置等内容,这种结构 有效地避免了单一文档的臃肿庞杂,有助于客户清晰地进行芯片选型和电气性能评估。本节主要 介绍数据手册(Datasheet)的结构和阅读方法,参考手册(Reference Manual)的内容将在下一小 节再做介绍。 4.2.1 Datasheet的命名规则 Datasheet,即芯片的数据手册,也跟芯片一样有其相应的命名规则,掌握了这种命名规则有助于 用户更方便的找到相应芯片的数据手册。飞思卡尔根据芯片的家族系列、最大管脚数和主频高低 对Datasheet进行了细分和命名,例如对型号为MK22FN512VLH12的芯片,与其对应的Datasheet 的最新文档为K22P121M120SF7,其中K22为家族系列,P121为最大121管脚(涵盖64 Pin、100pin), M120为120 M主频,SF为Sub-Family的缩写,数字7则为文档的版本号。 注 最新的版本号命名规则相较之前版本号做了些改变,加入了根据Flash 大小的分类,例如,K22FN系列512K Flash的版本号为SF7,而256K Flash的版本号为SF8。 4.2.2 Datasheet的文档结构介绍 Datasheet的内容包括Ratings、General、Peripheral Operating Requirements and Behaviors、Dimensions、 Pinout和Part Identification等几个部分。其中: Ratings:即额定值参数,介绍了包括温湿度额定值和芯片的工作电压电流等额定值参数。 其中特别需要注意的是,针对本文档芯片MK22FN512VLH12的最高焊接温度建议不要超过 260°C,客户在焊接操作和工艺设计的时候需要参考此部分内容。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 63 General:即芯片的通用参数,既介绍了芯片的电压电流工作范围、低功耗模式下的唤醒时 间和功耗参数、工作模式下的功耗/频率比和EMC特性等非开关量参数,也介绍了芯片内部 时钟范围和一些外部接口的时序约束等开关量参数。 Peripheral Operating Requirements and Behaviors:即芯片的外设模块的工作参数,是我们做 软硬件开发时最常用的部分,该部分给出了内核模块、时钟模块、内存接口、模拟外设模 块和通信接口的工作参数,其中常用到的包括MCG和Oscillator时钟模块的时钟约束范围 (用于倍频或者分频的配置和外部晶振的选择等)、Flash模块烧写的时间、 EzPort/FlexBus的时序要求、ADC模块的采样率和有效精度、Comparator模块的带宽、 DAC的有效精度和USB/SPI/I2C/UART/I2S等通信接口模块的工作参数,可以帮助客户最 大程度地有效利用芯片内部的功能模块,并做相应的功能实现的预评估和测试。 Dimensions:芯片的封装尺寸,客户在PCB layout的过程中如果需要手工画出该芯片PCB封 装的话,可以根据该部分提供的对应封装的文档序号到飞思卡尔官网搜索并下载,再参照 该文档给出的封装尺寸手工画出相应芯片的封装。以MK22FN512VLH12为例,其封装为 LQFP-64,Datasheet给出的对应封装的文档号为98ASS23234W。 Pinout:管脚分配表,K22F内部提供了丰富的外设资源,由于管脚数量的限制,其外部管 脚一般需要复用成多个外设功能,除了电源管脚、晶振管脚和个别的模拟输入管脚。该管 脚复用分配表可以结合Reference Manual中的管脚复用模块寄存器配置,根据客户的实际 功能需求做相应的复用功能配置。 Part Identification:芯片具体型号的命名规则,以MK22FN512VLH12为例,M表示量产型 号,K22表示Kinetis家族K22系列,F表示带浮点运算单元FPU,N表示只有Program Flash 没有FlexMemory,512表示Flash空间大小为512字节,V表示工业扩展级温度-40-105°C, LH表示芯片封装为LQFP-64,12则表示芯片的主频为120 MHz。 4.3 参考手册(Reference Manual) Reference Manual,即芯片的参考手册,详细介绍了芯片的内核结构、内存映射、时钟分配、电源 管理、安全加密、烧写调试、管脚复用以及所有外设模块等的技术细节,是客户开发软件必须了 解也是最常需要查阅的技术手册。但是动辄上千页的参考手册,包容了如此多的技术信息,要从 里面找到自己想要获取的相关资料对一个新手来说实属不易,因此有必要理清整个参考手册的结 构,有针对性的攫取相关信息,掌握阅读FSL参考手册的方法。本章节以系统时钟配置、管脚复 用和中断管理这三个难点也是重点的部分为例介绍飞思卡尔Reference Manual的阅读方法,并在最 后以ADC外设模块章节为例,详细介绍参考手册的具体某一外设章节的组织结构和阅读方法。 4.3.1 “万金油”之第三章 Chip Configuration 在介绍上述三部分的配置之前,需要重点提一下飞思卡尔参考手册非常重要的一章,即第三章 Chip Configuration,这也是飞思卡尔文档的特色之一。几乎其所有的Reference Manual中,第三章 的地位一直很稳固;作为一个统领全篇的章节,其内容概述了芯片各个模块配置所需要参考的信 息和功能架构并给出了一些模块更详细的配置信息和注意事项,所以我们在进行软件编程对某个 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 64 Freescale Semiconductor, Inc. 外设进行配置的时候除了查看该外设相应的章节之外,第三章也是最常需要参考的一章。这里仍 然以MK22FN512VLH12为例列出第三章中我们常需要参考的一些模块的配置信息: 1. ARM Cortex-M内核的System Tick Timer的时钟源; 2. 系统中断优先级的配置和中断向量表的分配; 3. 低功耗异步唤醒管理模块(AWIC)的唤醒源; 4. 极低功耗唤醒单元(LLWU)的唤醒源; 5. DMA模块的多路请求信号源; 6. 系统内存Flash和SRAM空间分配和相关注意事项; 7. FlexBus信号线的复用管理; 8. ADC模块采样通道号及硬件触发信号的分配; 9. 内部模拟比较器输入通道的分配; 10. Flex Timer的通道数、硬件触发机制和输入捕捉等参数配置; 11. USB模块的工作机制; 12. SPI模块发送和接收FIFO深度; 13. UART模块的中断源分配; 14. GPIO高驱动能力管脚的分配。 以对ADC模块进行软件配置为例,在ADC模块的章节中,ADCx_SC1n寄存器中ADCH位即定义了 ADC模块对模拟输入采样的通道号,而具体涉及到相应通道号的管脚映射分配则可以在第三章的 ADC Configuration中找到,如图 90所示。 图 90 ADC通道分配图 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 65 4.3.2 系统时钟配置 系统时钟的配置是入门一款芯片平台的敲门砖,不同于以前的8位机和16位机简单的时钟管理, ARM平台提供了非常强大而丰富的时钟管理机制,满足其内部各个功能模块的正常运行和低功耗 机制的实现,但由此带来的是复杂且繁琐的时钟配置,这让很多新手望而却步只能用拿来主义的 方法去使用封装好的函数库,但是出现问题或者根据实际需要进行微调配置的时候就会常常束手 无策或者拆西墙补东墙,因此通过参考手册深入地了解ARM平台的时钟管理机制之后,用户才能 熟练地对系统的时钟进行配置。 图 91 系统时钟总体框图 通常的建议是以图文结合的形式去了解和熟悉系统的时钟管理机制。如图 91所示,将 MK22FN512VLH12参考手册中“第五章 Clock Distribution”的系统时钟总体框图拆分开来看,就可 以清晰的了解其平台的时钟管理机制主要是由MCG模块、SIM模块、System Oscillator模块,RTC 模块、IRC48M internal oscillator和PMC这六个子模块构成,各模块之间以不同的颜色区分。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 66 Freescale Semiconductor, Inc. 图 92 MCG模块内部框图 从总体到局部的角度来看,在对总体结构有了全局的认识之后,则可以通过查看图 91中对应的六 个子模块来深入了解其寄存器级的配置实现,以MCG子模块为例,可以在与其对应的章节里找到 该模块的结构框图如图 92所示,图中给出了与System Oscillator和SIM这两个子模块的接口,对 MCG内部的寄存器级的实现也给出了详细的比特位的配置,而且最重要的是还清晰地描绘出了时 钟Clock从输入到输出的路径配置,帮助用户理清整个系统时钟管理的结构。 4.3.3 管脚复用 ARM平台丰富的外设资源与有限的管脚封装之间的矛盾造成了其管脚复用的必然性(除了个别敏 感的管脚外),而不同于时钟管理部分的复杂,飞思卡尔对其芯片管脚复用的配置却非常简单。 对芯片管脚复用的配置需要结合Datasheet中“Pinout”章节的管脚分配图,如图 93,而所需要配 置的寄存器可以在“Port Control and Interrupt”这一章中找到,即PORTx_PCRn(其中x表示A、B、 C、D、E、F等管脚组,而n则表示0-31之间的管脚号),如图 94所示,通过这种PORT分类的方 式来映射芯片所有管脚。该寄存器中3位MUX即表示复用功能的选择,如图 95,最多8个复用的 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 67 选项一般就足够了。当然,对于配置成输入功能的引脚来说可以通过该寄存器使能上拉下拉电阻 功能避免悬空引入不可预料的干扰,还有相应的I/O外部中断也需要在此寄存器里做相应配置。 图 93 Pinout管脚复用分配图 图 94 PORTx_PCRn寄存器映射 图 95 管脚复用配置位 结合上述三图,以配置64 pin LQFP封装的芯片MK22FN512VLH12的PTE0和PTE1这两个管脚为UART 功能为例,它们默认的配置为ADC的模拟输入端口功能,通过图 93所示的管脚复用分配图找到 UART1的复用索引号为ALT3选项,则只需要将PORTE_PCR0和PORTE_PCR1这两个寄存器中MUX位写 入3即可实现UART1_TX和UART1_RX端口的配置,操作代码如下: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 68 Freescale Semiconductor, Inc. PORTE_PCR0 |= 3 << 8; PORTE_PCR1 |= 3 << 8; 4.3.4 中断管理 图 96 NVIC模块框图 ARM平台的中断管理引入了NVIC即嵌套向量中断控制器这个模块,其负责接管芯片运行状态下 所有的中断源,是ARM内核不可分离的一部分,它与内核的逻辑紧密耦合完成相应的中断处理工 作。而且由于其为内核的一部分,因此关于NVIC相关寄存器的配置需要结合ARM公司的架构技 术文档,具体见内核架构参考手册(Architecture Reference Manual。不过,NVIC对中断的管理是 建立在中断向量表上的,这张表的数量是固定的,但是除了前16个内核中断之外,剩余的IRQ中 断不同的半导体厂家可以根据自己的需要来定制映射不同的外设中断,也就是说各大半导体厂家 定义的这个中断向量表可能不一致,飞思卡尔ARM平台的中断向量表映射可以在其Reference Manual的“第三章 Chip Configuration”中“Core Modules的Nested Vectored Interrupt Controller (NVIC) Configuration”小节中找到,用户可以根据这张表的索引号来使能或者禁用相应的IRQ中断,或者 配置相应中断的优先级。 4.3.5 外设模块章节的组织结构与阅读方法 本小节以参考手册中ADC模块为例,详细介绍针对具体某个外设模块章节的组织结构和阅读方法, 方便用户编写相应外设的初始化函数和具体功能的实现函数。ADC章节主要由Introduction,ADC signal descriptions,Memory map and register definitions,Functional description,Initialization information和Application information等五个部分组成,其中: Introduction:主要介绍内部 ADC 模块的技术特性和功能指标,并给出该模块的内部功能 框图,该功能框图不但有助于理解该外设的内部组成和功能原理,而且给出了清晰的寄存 器相关的位域配置路径,帮助用户理清相应的功能实现路线图,从而方便用户软件的编写; ADC signal descriptions:该部分给出了 ADC 模块相关的管脚信号和输入输出属性等信息, 帮助用户实现相应外设模块功能管脚的定义; Memory map and register definitions:即 ADC 模块相关的寄存器地址映射和功能定义,这 部分是一个章节的核心内容,是我们编写外设模块底层驱动主要参考的部分,其详细介绍 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 69 了外设相关的所有寄存器的定义和相关寄存器位所代表的含义,结合 Introduction 部分的 功能框图,可以更有效地实现对外设模块的功能配置; Functional description:功能描述部分,也是我们常需要参考的部分,作为寄存器映射和定 义部分的补充和扩展,其详细描述了对外设进行相应功能配置时所需要考虑和注意的技术 细节。对 ADC 模块来说,该部分详细描述了 ADC 输入时钟源和电压参考源的选择,硬件 触发和具体通道号的选择以及转换控制和 ADC 低功耗相关的细节,一般来说在 Memory map and register definitions 部分没有详细描述的功能都可以在这部分找到相应的细节描述; Initialization information 和 Application information:这两部分分别给出了外设模块初始化相 关信息和应用相关的信息,即用户可以根据初始化信息部分给出的外设模块初始化的配置 流程编写相应的外设初始化底层驱动,而应用信息部分则主要给出了在实际应用中使用相 应外设模块时需要注意的问题。 4.4 用户指南(User Guide) 为了方便新用户快速入门和熟悉飞思卡尔的产品、开发工具和开发环境,飞思卡尔针对其相关产 品提供了相应的用户指导手册,包括部分外设资源模块的编程指导手册和相应的开发板工具使用 手册。 4.4.1 外设模块快速参考用户指南(Peripheral Quick Reference User Guide) 外设模块用户参考手册详细介绍了芯片常用模块的技术特性,并针对该模块资源的部分功能给出 了相应的代码例程作为编程参考,可以加快用户上手时间,提高用户开发的效率,在软件开发时 可以结合该用户手册和芯片的Reference Manual文档中相应外设模块的章节进行外设资源的配置。 飞思卡尔为ARM平台Kinetis家族的部分系列提供了相应的外设用户参考手册,如表 3所示。 表 3 Kinetis家族外设模块用户参考手册 MCU 系列 文档名称及链接 Kinetis K KQRUG Kinetis L KLQRUG Kinetis V KVQRUG 4.4.2 评估板用户指南(Freedom & TWR Tool User Guide) 为方便用户评估芯片的性能和熟悉飞思卡尔产品的开发流程,飞思卡尔提供了两套评估板供用户 评估和开发测试,其中Freedom板为廉价的评估板,自带板载调试器,用户可以直接通过自己的 PC机快速搭建开发环境并进行测试和评估芯片简单的外设资源,另外塔式系统Tower板为可扩展 性比较强的评估板,板载资源比较丰富且通过构建塔式系统可以灵活的添加和裁剪外设资源,用 户可以进行更高级的功能测试。飞思卡尔为这两套评估板均提供了相应的用户指导手册帮助用户 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 70 Freescale Semiconductor, Inc. 快速入门飞思卡尔产品的开发,以MK22F系列为例,Freedom板的用户手册为FRDMK22FUG, TWR板的为TWRK22F120MUG,它们均可以直接在飞思卡尔官网搜索下载。 4.5 其它的技术文档 除了上述Datasheet、Reference Manual和User Guide之外,飞思卡尔还提供了其他的丰富的技术文 档供用户参考,本章节重点介绍一下用户还经常参考的应用笔记、Errata勘误表和内核架构的参 考文档。 4.5.1 应用笔记(Application Notes) Application Note,即应用笔记,是飞思卡尔内部专家工程师针对飞思卡尔产品的具体应用所撰写 的心得笔记。飞思卡尔官网系统提供了大量的中英文应用笔记供客户工程师参考和学习,一些应 用笔记也会附上相应的代码例程供客户下载。飞思卡尔应用笔记均以其英文大写字母“AN”开头, 后面数字为文档的序列号,用户可以直接在飞思卡尔官网搜索相应的文档序号或者具体应用的关 键字进行下载,此外针对某款芯片相关的应用笔记则可以直接在该芯片的产品页中“Document” 一栏中找到,如图 97所示。 图 97 应用笔记列表 4.5.2 勘误表(Mask Set Errata) 芯片的Errata勘误表是客户在使用相关芯片进行项目开发时必须要查阅的参考文档,在一款芯片从 发布到量产再到最后停产的整个生命周期里,半导体厂商会非常负责任地针对芯片在应用过程中 出现的一些功能的局限性或者某些参数的不准确性等问题不定时的发布相应的勘误表,帮助用户 在项目开发过程中规避相应的问题和进行风险把控。此外,需要用户注意的是,Errata勘误表是以 Mask Set即芯片的掩膜硅版本号进行分类的(芯片Package封装上打的标号,比如2N03G),所以 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 71 用户可以根据所使用芯片的版本号在飞思卡尔官网查询相应的Errata勘误表文件,同样用户也可以 直接到相关芯片的产品页中Document一栏中找到该芯片系列所有Mask Set的Errata勘误表,以 K22F 120M产品为例,其所有子系列的Errata勘误表如图 98所示。 图 98 K22F_120M 勘误表 4.5.3 内核架构参考手册(Architecture Reference Manual) 由于飞思卡尔Kinetis家族系列的平台是基于ARM Cortex-M内核的产品,其内核的知识产权为ARM 公司所有,所以关于该平台内核架构部分的包括指令集、中断管理和调试组件等详细的技术信息 则需要到ARM公司官网下载相应内核架构的技术文档作为参考,由于飞思卡尔目前的Kinetis产品 系列主要为ARM Cortex-M0+和Cortex-M4内核,其在ARM官网相应的内核参考文档可以直接搜索得 到,其相应的文档链接如下: 1. ARM Cortex-M4 内核技术参考手册 2. ARM Cortex-M0+内核技术参考手册 此外,关于飞思卡尔的自有内核架构包括DSP56800E/EX和Coldfire等相关内核架构的文档则可以直 接在飞思卡尔官网下载。 1. DSP56800E/DSP56800EX内核技术参考手册 5 飞思卡尔单片机硬件设计指南 5.1 概述 在进行嵌入式系统设计时,硬件电路设计的好坏不仅关系到整个系统的功能实现和可靠性,还会 对系统软件的复杂程度产生影响。本章节以Kinetis K22芯片为对象,介绍采用Kinetis MCU进行最 小系统硬件设计时,需要了解的一些硬件设计注意事项和设计原则,对于其他系列的Kinetis MCU, 这些方法同样适用。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 72 Freescale Semiconductor, Inc. 在本章节中,除了会介绍电源电路、时钟电路、复位电路、调试电路等MCU常见外围硬件设计 外,还会针对使用Kinetis系列芯片时需要了解的设计做一些探讨,如NMI引脚配置、High current driver引脚分布、IO输出方式(Open-drain/Pull-Push)支持、RTC、USB、ADC电路设计和参考电 压的选择以及板级EMC性能改善等。 5.2 电源电路的设计 5.2.1 K22的电源引脚分配和功能描述 Kinetis K22支持1.71-3.6 V宽电压输入,为了提供稳定的电源,芯片使用多组电源引脚分别为内部 电压调节器、IO引脚驱动、AD转换电路等供电,并且提供多处电源引出脚,便于用户外接滤波电 容,改善系统的电磁兼容性。对于本文档中使用到的K22 LQFP-64 pin封装,其电源引脚名称、分 布和功能描述如表 4所示。 表 4 K22 LQFP-64 pin封装电源引脚名称、分布和功能描述 引脚名称 功能描述 典型值 引脚号(LQFP-64) VDDx/VSSx 数字电源输入正/负 3.3 V、0 V 3/4、30/31、48/47 VDDA/VSSA AD 模块的电源输入正/负 3.3 V、0 V 13、16 VREFH/VREFL AD 模块参考电压输入高/ 低 3.3 V、0 V 14、15 VBAT RTC 模块的备用电源输入 3.3 V 21 VREGIN USB 模块输入参考电压 5V 8 VOUT33 USB 模块电源稳压器输出 3.3 V 7 VREF_OUT 内部参考电压输出 1.2 V 17 1 电源输入 电源输出 1. 文中VSSx指的是芯片的地。 5.2.2 MCU主电源供电引脚 VDDx/VSSx是芯片的主电源供电引脚,Kinetis K22 LQFP 64 pin封装的芯片上一共包含3对,在电 路设计时需要在每对引脚外部分别放置至少一个去耦电容(0.1 uF的陶瓷电容)。并且旁路电容 的放置必须尽量靠近MCU电源引脚,从而最大限度地缩小VDD和VSS引脚之间的电容所形成的环 路。 在芯片内部,这三对电源的引脚是互相连通的。理论上说,只要将任意一个VDDx引脚和任意一 个VSSx引脚连接到电源上,整个芯片就可以正常工作了。但在实际的设计中,我们建议将三组电 源引脚都可靠地连接到电源上,这样对改善芯片内部的电源回路以及提高整个系统的EMC性能都 更有好处。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 73 5.2.3 模拟外设电源及参考电压引脚 VDDA/VSSA是芯片内部ADC、DAC以及CMP等模拟外设的电源输入引脚,为使芯片的模拟外设 有稳定的电源,从而得到更好的转换精度,通常需要在靠近VDDA引脚的地方并联两个外部稳压 电容(10 nF陶瓷电容+1μF钽电容)。另外,为限制电源中的高频噪声,在设计时,可以将VDDA 通过电感、磁珠等阻塞元件与数字电源VDDx进行隔离。 另外,大部分Kinetis MCU还提供了一对模拟参考输入引脚VREFH/VREFL,用户可以连接一个独 立的外部电压基准作为模拟电压的参考(该基准的电压范围为1.13V-VDDA)。客户也可以使用 片内产生的内部ADC参考源,一般为1.2 V。为保证能得到更好的精度,建议使用外部的3V电压 作为参考。当然,用户也可以直接连接到外部电源引脚VDDA上,使用过程中,建议在VREFH引 脚上连接一个10 nF和一个1μF的电容。对于一些小封装的芯片,可能没有VREFH和VREFL,实 际上它们分别在内部被直接连接到ADC的供电电源VDDA和VSSA。 5.2.4 RTC后备电源引脚 VBAT引脚是RTC模块的备用电源输入,用于在系统掉电和低功耗模式下为RTC和一个32字节寄 存器供电,该引脚通常被连接到外部电池(1.71 V<VBAT<3.6 V)。如图 99所示,一个简单的电 池隔离器由一个共阴极的双肖特基阵列组成,在主系统电源VDD关闭时,通过器件D1提供备用电 池。建议在尽可能靠近MCU的地方放置一个100 nF旁路电容,以便最大限度地降低电源切换事件 的影响。 图 99 RTC后备电源连接 5.2.5 USB模块电源引脚 VREGIN是芯片内部USB模块的供电引脚,为避免外部瞬态浪涌电压的影响,建议在此引脚的线 路上串连一个内阻为330欧姆的磁珠,并在靠近该引脚处并联一个10 uF电容,如果成本允许,考 虑在此供电线路靠近USB物理接口侧并联一个TVS管,作为热插拔和外部浪涌电压的保护电路。 5.2.6 VREF_OUT和VOUT33电压输出引脚 为方便用户使用,Kinetis K22还有两个电压输出引脚,用户可以通过程序配置分别对外输出一个 1.2 V电压和一个3.3 V电压。其中,VREF_OUT引脚是芯片内部1.2 V基准电压的输出引脚,该电 压可以作为芯片内部ADC,DAC或者CMP作为电压基准,同时也可以作为外部电路的电压源。需 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 74 Freescale Semiconductor, Inc. 要注意的一点是,无论是在内部或者外部使用该1.2 V电压作为参考,都需要在VREF_OUT引脚连 接一个100 nF的负载电容。 VOUT33引脚是芯片内部3.3 V电压的输出引脚,该电压是由芯片内部USB Voltage Regulator产生, 该电压除了可以用来提供给内部的USB Transceiver完成USB功能外,用户还可通过VOUT3.3引脚 输出到外部,提供给板上的其它芯片作为供电电源,其最大输出电流为120 mA。并且如果使能该 引脚的输出功能时,必须在该引脚外部加一个2.2 uF的电容。 5.2.7 电源电路的PCB设计建议 电源系统的布线是整个硬件版图最重要的部分,其基本思想是确保MCU和其他数字器件通过低阻 抗路径接至电源,并且有一些常规可以遵循: 1. 分割不同的电源域,将交流电源与直流电源分开,数字部分与模拟部分分开。实际电路设 计中可以选择使用物理隔离和去耦滤波器,对于后者的使用如图 100所示,串联隔离元件 通常选择小电感或阻抗较小(100 MHz时约100Ω)的铁氧体磁珠。去耦电容一般选择10 nF 到1 uF,具有高频成分的一端应选择较低的值。 图 100 数字和模拟电源隔离示意图 2. 在MCU的每个VDD电源引脚旁边放置去耦电容,画板时一定要尽量使去耦电容靠近MCU 电源引脚放置,并尽量缩小VDD和VSS引脚之间的电容所形成的环路。 3. 合理使用电源层和接地层,接地布线应优先于任何其他布线,电源走线尽量使用较宽走线 和较少的层变换。在系统允许的情况下,建议在 MCU 封装的正下方使用一个接地层,以 便降低 RF 辐射并提高瞬变抑制性能,提高板级的EMC性能(更多关于电源硬件设计和EMC 的知识请参看AN2764)。 5.3 时钟电路 5.3.1 K22的时钟源 为满足用户不同的应用,飞思卡尔Kinetis MCU提供多个时钟源选择,图 101所示是K22的系统时 钟框图,它包括多种时钟源,可以通过MCG模块灵活地配置使用。其中内部时钟源的优点是成本 低,不易受外部影响,而外部时钟源的优点在于能产生非常精确的主时钟。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 75 1. 内部时钟源: 在芯片内部集成了一个4 MHz快速时钟和一个32 K慢速时钟; 一个1 KHz固定输出的LPO,可以工作在任何的低功耗模式下; 内部IRC48M,主要用于USB等对时钟精度要求比较高的应用。 2. 外部时钟源: 在EXTAL0和XTAL0之间可以外接振荡器或者在EXTAL0引脚直接连接时钟源,频率范围 为从 32.768 Khz到32 Mhz; 在EXTAL32和XTAL32之间可以外接32.768 Hz无源振荡器或者有源时钟作为RTC或者 MCU系统的时钟源。 图 101 K22的系统时钟框图 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 76 Freescale Semiconductor, Inc. 5.3.2 MCG的外部时钟振荡器电路设计 常用的外部时钟振荡器有两种类型:机械谐振式,如石英晶体和陶瓷谐振器;被动式RC(电阻电容)振荡器。关于该振荡器的元件选用详见特定器件的Datasheet手册,此处不再赘述。本节主 要针对使用外部晶体振荡器的时钟电路设计展开探讨。 5.3.2.1 外接晶振的电路设计 根据应用的不同,Kinetis连接外部晶振时可以采用3种电路设计,如表 5所示。 表 5 Kinetis使用不同外部晶体外部电路方案选择 晶振和应用类型 建议电路 Low-frequency(32 kHz), Low Power 方案 1 Low-frequency(32 kHz), High Gain 方案 2/方案 3 High-frequency(3-32 MHz), Low Power 方案 1/方案 3 High-frequency(3-32 MHz), High Gain 方案 2/方案 3 具体的电路连接分别如图 102所示,可以看到,在方案1和方案2中不需要外部谐振电容,原因是 在芯片的内部集成了谐振电容,用户可以通过CR[SCxP]位来灵活配置内部谐振电容的大小,其最 大值可以达到30 pF。而当选用的晶振所需要的匹配电容大于30 pF时,建议采用方案3的晶振连接, 否则建议使用方案1和方案2,从而简化电路设计。 需要指出的是,尽管方案3可以在多种模式下使用,但是在低功耗模式使用时,由于芯片振荡器内 部默认是集成反馈电阻的,所以一定不要外部再加RF。对于CX和Cy,负载电容的容值需要根据晶 振的要求进行选择。 对于RTC外部32 K晶振输入,由于芯片内部包含反馈电阻和谐振电容,只需似方案1在EXTAL32 和XTAL32引脚外接32 K晶振即可,无需外接电容和电阻,从而可大大简化电路设计。 方案1 方案2 方案3 图 102 使用外部晶体的电路连接方案 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 77 5.3.2.2 外接有源振荡器的电路设计 如果采用外部有源时钟,其电路设计就会更加的简单,如图 103所示。对于K22,其外部有源时钟 的最大值为50 MHz。 图 103 使用外部有源振荡器的时钟电路设计 在应用中,如果不使用外部晶振,建议把EXTAL和XTAL引脚配置成GPIO功能,并设置为输出低, 从而最大程度的降低芯片功耗,并提高系统的EMC性能。 5.3.2.3 晶振电路PCB设计建议 Kinetis MCU的引脚布局考虑到PCB布板的需要,通常将EXTAL和XTAL引脚置于BGA封装的外部 焊盘环上或QFP封装的拐角上,从而为在顶层上靠近MCU处放置晶体或谐振器的布线提供空间。 通常在时钟引脚的旁边还会有地(VSS)引脚,方便用户的接地布线。以下是一些通用的规则: 1. 晶体和负载电容需要尽可能近地靠近MCU的引脚,以减小输出失真和启动稳定时间; 2. 晶体正下方的层上不得有任何种类的信号布线; 3. 合理选用偏置电阻和负载电容,涉及到EMC易感性的系统中,应该选用可以使振荡器输入 引脚上信号的振幅比较大的那种振荡器配置,但带来后果可能是功耗会比较大; 4. 晶体及其负载元件周围应放置一个防护环,防止安装层上的相邻信号发生串扰。此防护环 可以从晶体引脚相邻的VSS引脚起始,图 104所示分别是推荐的BGA封装和LQFP封装的晶 体Layout布局。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 78 Freescale Semiconductor, Inc. 图 104 BGA和LQFP封装建议的晶体Layout布局 5.4 复位电路设计 在基于MCU 的系统中,除振荡器输入之外的最敏感的输入信号就是复位和中断请求输入。 RESET_b引脚是芯片的复位引脚,该引脚默认是使能复位功能的(可通过软件配置为GPIO等其它 功能),并且低电平有效。Kinetis MCU的复位引脚是双向引脚,作为输入端,将其拉低可以使芯 片复位;作为输出引脚,上电复位期间会有低脉冲输出,表示芯片复位完成。 建议的电路如图 105所示,通过上拉电阻把该引脚拉至高电平,同时靠近MCU放置一个100 nF电 容,以实现瞬态保护避免误复位。值得一提的是,RESET_b 引脚还有一个可配置数字滤波器,用 以在上电之后抑制该引脚上的潜在噪声(相应配置位位于RCM_RPFC寄存器)。如果使用该滤波 器的话,上述的上拉电阻和电容可能变得不需要,但在高电气噪声环境中,仍然建议使用外部滤 波。 图 105 典型复位电路设计 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 79 通常,为保证可靠性有些客户会选择使用一个外置的复位芯片。在复位芯片的输出类型选择上, 建议选择Open-Drain输出的复位芯片,因为推挽输出类型的复位芯片在复位引脚输出高,而且在 复位芯片和MCU的复位引脚没有做隔离或者保护时,容易导致MCU复位引脚被烧坏。所以如果 客户选择使用推挽输出的类型的复位芯片,建议在MCU和复位芯片之间串连一个电阻或者二极管 进行隔离,连接的系统框图分别如图 106(a)和(b)所示,电阻R31阻值的选择需要根据外部复位芯 片驱动能力来确定,建议值为10 K-100 K。 图 106 复位芯片与MCU复位引脚连接框图 还有一点需要注意的是,RESET引脚的供电不能早于芯片电源引脚VDDx的供电,否则可能会造 成芯片被锁。而如果RESET引脚在系统中没有被使用,建议把该引脚配置成GPIO功能,并设置输 出为低,从而减少外部噪声的干扰,提高系统总体的EMC性能。 5.5 调试接口 Kinetis MCU同时支持JTAG接口和SWD接口进行编程调试。除电源外,JTAG接口需要用到至少5 个PIN脚(JTAG_TCLK/ JTAG_TDI/ JTAG_TDO/JTAG_TMS/ JTAG_RST),其电路连接如图 107 所示,而串行线调试接口(SWD)最少只需要3个Pin脚(SWD_CLK/ SWD_DIO/ SWD_RST),其 电路连接如图 108所示。两者相比,SWD在高速模式下更稳定,使用引脚更少,所以在使用过程 中建议使用SWD接口。值得提醒的一点是,在使用JTAG标准接口连接时,与芯片的RESET_b引 脚连接的应该是JTAG接口的RESET引脚,而不是nTRST引脚,否则可能会引起芯片无法正常下载。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 80 Freescale Semiconductor, Inc. 图 107 Kinetis MCU JTAG接口连接示意图 图 108 Kinetis MCU SWD接口连接示意图 5.6 ADC模拟输入 模拟采样是MCU的一个常用功能,Kinetis 大部分MCU系列提供16位的SAR ADC,最多支持4个 独立ADC模块以及48个通道(单端,在不考虑引脚复用的情况下),本文档中使用的 MK22FN512VLH12包含两个独立ADC模块,支持14个单端通道和2个差分通道。 对模拟输入而言,前端滤波电路的设计非常重要,除了考虑模拟信号的截止频率,还需要考虑源 阻抗和采样时间,尤其是对于高分辨率模数转换。常规思想是:快速采样时间与慢速采样时间相 比,要求更小的电容值和输入阻抗。高分辨率输入与低分辨率输入相比,要求的电容值和输入阻 抗可能更小。一般而言,并联电容值范围是10 pF(高速转换)至1µF(低速转换),串联电阻的 范围是数百欧姆到10 kΩ。除了合理设计外部滤波电路,模拟电路在PCB布线时还有很多需要注 意的地方: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 81 1. AD通道的布线要尽量短; 2. 将数字部分和模拟部分的电源分开,并分区覆铜,保证模拟地和数字地只在一个点结合, 而且这个点要求远离干扰,有时会选用一个磁珠连接; 3. 走线周围避免放置高噪声元器件,在模拟通道外围使用模拟地进行隔离; 4. 要想得到特别准确的采样结果,一般推荐在输入端加一些Buffer/跟随运放。 5.7 USB电路设计 Kinetis K22内部USB模块的系统框图如图 109所示,它集成了一个支持Dual-role USB OTG-capable (On-The-Go) 的控制器模块、一个Transceiver、一个3.3 V regulator以及一个USB device charger 检测模块,支持USB 2.0规格的FS(full-speed)Device 模式和 FS/LS host模式。 图 109 K22内部USB模块系统框图 Kinetis USB模块的完善大大简化了USB的接口电路设计,但是用户还是需要根据使用模式的不同 进行一些外部电路的设计。图 110是USB在Device和Host模式下的推荐电路,其中Option 1和Option 2是MCU工作在Host模式下,实现对外部USB Device提供5 V电压的电路图。Option 1结构简单, 成本低,Option 2方便程序控制MCU在Host和Device模式进行切换,可靠性更高。而当MCU只工 作在Device模式下,这两个Option可以省略。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 82 Freescale Semiconductor, Inc. 图 110 USB Device and Host模式下电路设计 5.8 板级EMC性能改善与PCB布线的注意事项 EMC性能是作为产品认证的一个重要指标,和板级硬件电路的设计息息相关,EMC性能取决于许 多因素,通常需要考虑的因素包括:连接器、机械组件、高速信号、低速信号、开关和电源域等。 连接器和某些机械组件(开关、继电器等)的放置对最终产品的成型至关重要,所以在开始PCB 布线之前,必须注意妥善安放各元件并合理划分不同的电源域,如图 111所示。必须将低电平模 拟信号电路、高速数字信号电路以及噪声电路 (继电器、大电流开关等)分开放置,以将PCB子 系统间的耦合将到最低。另外,在每个功能区域内分别添加退耦滤波器(DF)、高频率旁路电容 (BP)以及提供低通滤波器(LPF),从而增强系统的整体EMC性能。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 83 图 111 板级平面结构布局 用户可在飞思卡尔网站上搜索应用笔记“AN2321:电路板级的电磁兼容设计”作为参考。 5.9 Kinetis MCU的封装类型和一些特殊引脚说明 5.9.1 封装类型 Kinetis MCU提供多种不同的封装类型,从20脚1.6x2.0 mm的CSP封装的KL03到256脚BGA封装的 K70,能最大程度上满足客户在不同应用场合的需求。关于芯片的封装尺寸信息可以在官网查询, 此处以K22F120M 系列的64-pin封装为例讲述一下封装尺寸信息的查找方法,步骤如图 112中的三 个截图所示,在该网页中除了可以找到该芯片的封装数据,还可以找到该芯片的环境合规信息、 订购信息、工作特性、供货状态等重要信息。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 84 Freescale Semiconductor, Inc. 图 112 封装尺寸信息查找方法截图 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 85 5.9.2 NMI引脚 NMI引脚是芯片的不可屏蔽中断引脚,芯片默认是使能NMI功能的(低电平有效),该引脚内部 具有较小的内部上拉电阻,但建议采用外部4.7 kΩ至10 kΩ上拉电阻。需要特别提出的是,如果 该引脚被外部电路拉低,即便该引脚被复用成其它功能(FTM或者GPIO),在下载程序时,也有 可能导致芯片与仿真器连接异常。原因是芯片一上电,在程序还没有执行禁用NMI功能时,由于 NMI引脚被外部拉低,程序就会已经进入NMI的中断程序,从而造成程序无法成功下载。此时则 需要通过Flash NVM 配置字节禁用NMI功能,它与在程序中禁用 NMI引脚的区别在于,这种方法 会执行用户程序之前生效。 5.9.3 大电流驱动(High Current Driver)引脚 Kinetis E系列MCU部分引脚支持大电流驱动功能,可以直接驱动LED,每个引脚的最大输出电流 能够达到20 mA,总的最大输出电流是100 mA。 5.9.4 LLWU唤醒引脚 在Kinetis MCU低功耗应用中,除了支持芯片内部模块唤醒之外,还支持GPIO引脚唤醒,但需要 指出的是并不是所有的引脚都支持,所以在电路设计时需要特别注意,具体是哪些引脚支持LLWU 引脚唤醒功能,可以参照芯片RM手册的Chip Configuration章节。 当使用GPIO把芯片从VLLSx或者LLS模式下唤醒时,如果用户在中断程序中清除LLWU的唤醒标 志,芯片会自动清除PIN脚对应的端口中断标志。 5.9.5 未用到的I/O及模块的处理 在实际应用中,通常会有一些未用到的微控制器资源,如某些特定的内部模块、晶振引脚、以及 GPIO引脚等,为了提高EMC性能,需要对这些资源做相应配置。 未使用的I/O端口通常设置为一个特定的状态,考虑到提高EMC性能和低功耗应用,通常设 置为输出并外部上拉; 未使用的晶振引脚建议配置为GPIO功能,避免外部信号的干扰; 没有用到的模块应该禁用或者“冻结”。 5.10 设计最小系统硬件电路的Check List 用户设计K22的最小系统时,可参看表 6进行注意事项的检查。 表 6 最小系统设计Check list 引脚/信号 1 Reset 注意事项 建议通过电阻把该引脚拉至高电平(4.7 k - 10 k),同时靠近 MCU 放置 100 nF 电容; 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 86 Freescale Semiconductor, Inc. 引脚/信号 2 NMI 注意事项 引脚内部具有较小的内部上拉电阻,但建议采用外部 4.7 kΩ 至 10 kΩ 上拉电阻,并且 NMI 引脚可以用作低功耗的唤醒引脚; 如果复用为其它功能,且外部拉低,需要通过 Flash NVM 配置 Disable NMI 功能; 根据应用场合的不同选择合适的电路,参见“外接晶振的电路设计”章节; 3 XTAL/EXTAL 4 XTAL32/EXTAL32 外部不需要匹配电容和反馈电阻; 5 VDDx/VSSx 推荐每对电源引脚分别放置至少一个去耦电容(0.1uF 的陶瓷电容)。并且旁路电容的放置 必须尽量靠近 MCU 电源引脚; 6 LLWU Pin 并不是所有的引脚都支持 LLWU 唤醒功能,具体可查看芯片“Chip configuration”章节; 7 SWD_CLK/SWD_DIO 尽量缩短线的长度 <= 6 英寸,最大程度避免串扰;使用的仿真连接的 USB 线也不要过长, 尽量选用质量好一些的短的 USB 线; SWD_CLK 和 SWD_DIO 引脚在芯片内部分别有上拉 和下拉,但为保证可靠性用户也可以选择性的在外部分别添加上下拉电阻; 8 JTAG_TMS 如果使用 JTAG 调试接口,建议该引脚使用强上拉,上拉电阻推荐值为 10 K; 9 LPUART_TX 在 UART transmitter disable 并且芯片进入低功耗状态时,该引脚会出现 tri-state 从而产生 漏电流,所以在低功耗应用中建议使能内部上拉功能,或者外部上拉,详细信息参见 Errata: e7986; 10 PGA PGA 增益放大功能是针对某些特定的 AD 通道,大多数 AD 通道都都不支持 PGA 功能; 11 I2Cx_SCL/ I2Cx_SDA 这两个 PIN 脚需要上拉,上拉电阻建议值为 2.2 K-10 K; 12 RTS/CTS 如果未使能 UART 的硬件流控, 这两个 PIN 脚可以配置为其它功能; 13 VREGIN/VOUT33 如果没用用到 USB 功能,这两个引脚建议 unconnect; 14 VOUT33 如果使能 USB 输出 3.3V 电压,需要在该引脚并联一个 2.2uF 电容。 不使用时建议配置为 GPIO 输出功能,并输出低,从而降低系统功耗,提高 EMC 性能; 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 87 5.11 K22最小系统原理图 图 113 K22F 120M LQFP-64pin 最小系统原理图 6 飞思卡尔单片机软件开发指南 6.1 概述 前面的章节介绍了飞思卡尔单片机的硬件设计方法,本章将会详细介绍软件开发的各个环节,让 开发者能够从零开始,快速完成软件开发流程。本章的举例,大多以Kinetis K22单片机为例,但 是这些方法对于Kinetis其他型号的单片机同样适用,可以很方便地进行移植。 6.2 开发环境设置与开发工具使用 飞思卡尔的MCU具备完善的生态系统,支持各种IDE和调试工具,并且提供了各式各样便捷的工 具,即使是初学者,也能轻松完成项目开发的工作。一般来说,进行开发的步骤如下所述。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 88 Freescale Semiconductor, Inc. 6.2.1 连接开发板 飞思卡尔提供了种类繁多而且容易使用的开发工具及环境,极易上手,用户可以不用花太多精力 在软件开发之外的东西,只要简单的连几根线,即可开始开发工作。 首先要使用的是飞思卡尔的开发板。能见到的主要有两种,一种是功能强大的Tower塔式系统, 一种是功能比较简单的Freedom板。 Tower塔式系统 Tower塔式系统的主板能够单独使用,也可以加入到塔式系统中与其他的板子共同使用。 Tower系统主板带有JTAG或者OpenSDA调试接口,不再需要外部仿真器,只需要一根USB 线连接开发板和电脑即可实现调试下载功能,如图 114及图 115所示。 图 114 单独使用塔式系统主板 图 115 完整的塔式系统 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 89 Freedom 板 Freedom板与Tower板相比尺寸要小很多,使用方法也更简单。Freedom板带有OpenSDA调 试接口,同样不需要外接仿真器,使用USB电缆连接电脑即可。需要注意的是板子上可能 会有两个USB插口,一个用于OpenSDA,另一个是芯片本身的USB模块接口,在插口附近 会印刷有标识,如图 116所示。 图 116 Freedom开发板连接 6.2.2 使用Kinetis Design Studio(KDS)进行软件开发 选择好开发板之后,就可以开始软件的编写和调试了。飞思卡尔单片机支持所有业内主流的集成 开发环境,如IAR、Keil 和CodeWarrior等。开发环境的选择主要是根据用户自己的习惯,本文以 飞思卡尔最新的KDS为例来进行说明。 Kinetis Design Studio,简称KDS,是飞思卡尔最新推出的针对Kinetis系列MCU的集成开发环境, 可以完成整个软件开发过程中的所有功能,包括代码编辑、编译、调试下载等,目前最新版本2.0.0, 可通过此链接下载安装软件和文档: KDS 下载链接。 KDS基于Eclipse框架,采用ARM GCC和GDB编译调试环境,同时集成了飞思卡尔的Processor Expert和KSDK功能,因为与Codewarrior一样都是基于Eclipse框架,所以使用界面与CodeWarrior 几乎一样。KDS专门针对飞思卡尔的Kinetis MCU进行了优化,用户体验更好。 打开KDS后,首先需要选择一个workspace,这里推荐在KDS的安装目录下新建一个专门的文件夹, 命名为“workspace”。打开KDS后,我们首先新建一个工程,点击“File”“New”“Kinetis Design Studio Project”,如图 117至图 119所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 90 Freescale Semiconductor, Inc. 图 117 在KDS中新建工程 图 118 输入工程名称 图 119 选择对应的芯片 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 91 最后一步,选择是否需要辅助开发工具,如图 120所示。 图 120 选择辅助开发工具 SDK是飞思卡尔提供的软件开发包,里面提供了各个模块常用的API(比如使用UART发送数据), 方便用户开发,在本文第三章中有介绍,具体使用方法在后面的章节中有详细的讲解。如果目标 芯片支持SDK(比如K22),那么这里可以勾选该选项。 PE(Processor Expert)是飞思卡尔推出的一款图像化配置工具,后面也会详细说明。关于Project Mode选项,如果选择Linked,那么所有的工程都会公用一套静态文件;选择Standalone则会单独 在各自的工程目录下拷贝一份。 最后一步,点击“Finish”即可完成新工程的创建,KDS开发环境软件的主界面如图 121所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 92 Freescale Semiconductor, Inc. 图 121 KDS的主界面 新工程建立完成后,如果用户已经有自己的代码,也可以把他们添加到刚才新建的工程中,如图 122所示。 图 122 添加已有的文件 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 93 推荐将用户代码放在“source”目录下面,或者自己新建一个目录,点“next”之后,会弹出一个 对话框,如图 123所示。 图 123 添加已有的用户文件 点击“完成”之后,之前选中的所有文件就添加到了工程中。用户也可以通过设置包含路径调用 用户文件。在当前的工程上按右键,选“Properties”,在弹出的对话框中按图 124操作。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 94 Freescale Semiconductor, Inc. 图 124 包含已有的文件 关于PE和SDK的使用,以及MCU具体模块的编程,后面章节会详细讲述,本小节只说明KDS的使 用,仅仅在main函数中添加最简单的一行赋值代码为例。 用户除了自己编写程序外,还可以导入现有的工程,这个过程也非常简单,步骤如图 125至图 127 所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 95 图 125 导入现有的工程步骤1 图 126 导入现有的工程步骤2 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 96 Freescale Semiconductor, Inc. 图 127 导入现有的工程步骤3 当工程文件都编辑好之后,便可以开始编译调试了。在对应工程上点击鼠标右键,选“Build Project”,如图 128所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 97 图 128 编译工程 如果代码文件格式没有问题,编译链接通过后,就可以开始调试了。这里还有一个小技巧,用户 在编译后如果出现一些非代码相关的错误,可以先尝试使用Clean Project选项,再重新Build。调 试开始前,首先需要设置一下使用的调试器。点击小甲虫图标旁边的下拉箭头,再点击“debug configuration”,弹出如下对话框,如图 129所示。 图 129 调试接口选择 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 98 Freescale Semiconductor, Inc. 这里我们主要关注三个内容: 1. 选择调试接口。 图 129中显示的这三种调试接口,对应于三种不同类型的调试工具,飞思卡尔的Tower板和 Freedom板,使用的都是PEMicro的调试接口,这里以PEMicro调试为例进行配置,剩余的 两个调试接口的配置类似。双击调试接口的图标,就会出现具体的配置选项,点击“设置”, 再点击“Debugger”标签,就会出现具体的设置窗口,具体如图 130所示。 图 130 配置调试接口信息 2. 最后点击“Debug”以后,就会开始程序的下载和调试。程序下载完成后会弹出调试界面, 其中各窗口的主要功能如图 131和图 132所示。 图 131 调试界面中的工具栏和寄存器查看窗口 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 99 图 132 调试界面中的代码显示窗口 3. 在调试界面上方的工具栏和窗口中,可以单步执行代码,查看寄存器信息;在调试界面下 方,可以设置断点,查看当前代码的执行情况等。 KDS还有很多其他的功能和使用方法,用户自己可以在使用中体验,也可以参阅相关文档。 6.2.3 处理器专家(PE)的使用 PE(Processor Expert),是飞思卡尔推出的一款图形化设置工具,通过图形化的简洁方式,用户 不仅可以很方便地对MCU的各个模块、功能进行配置,同时自动产生对应的代码,并且根据不同 模块,还有很多的功能函数可以直接进行调用。 有了PE的帮助,用户可以避免阅读大篇幅的手册,不需要研究每个寄存器位的含义,只要按照提 示进行选择,便可完成对MCU的配置。 PE有两种不同的形式,一种就是前面章节提到的,集成在KDS或Codewarrior里面,直接添加在 工程中,可以很方便地调用;另一种是独立的PE软件,全称叫Processor Expert Driver Suite,目前 最新版本10.4,可通过如下链接下载: www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=PE_DRIVER_SUITE&uc=true &lang_cd=zh-Hans 两种方式的使用方法是一致的,考虑到文档前后的一致性,本文以集成在KDS中的PE的为例,同 时在该小节最后,简单说明一下独立的PE软件的使用。 在新建工程的时候勾选PE,便可在工程中通过PE来配置当前的MCU了(具体操作步骤请参见在 KDS中新建工程与导入已有工程的内容)。下面举例说明PE的最基本的用法。具体的细节后面会 有详细的介绍 1. 首先,整个PE的配置主界面如图 133所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 100 Freescale Semiconductor, Inc. 图 133 PE的配置主界面 2. 在PE中,MCU的某个外设模块或功能模块称为一个Component(部件)。当用户需要使用 哪个模块或功能时,在图 133的“Component Library”窗口中添加即可,步骤如图 134所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 101 图 134 添加所需的component 图 134中标出了“Components”的4种不同的排序和归类方式,用户可以根据自己的习惯使 用。其中“Categories”表示按模块功能分类,“Alphabetical”表示按首字母排序,推荐使 用这两种。 还有一点需要注意,如果添加了SDK,那么PE中的“component”是不一样的,因为SDK 使用的是不同的模块驱动,如图 135和图 136所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 102 Freescale Semiconductor, Inc. 图 135 有SDK时的Components 图 136 没有SDK时的Components 3. 点击所添加的“component”,就可以对其进行配置了。本文以LPTMR为例来说明如何对 “Component”进行配置。 LPTMR(Low Power Timer)是一个低功耗定时器,在MCU处于低功耗模式下时,仍然能 够通过给定的输入时钟源,正常计数并产生中断。LPTMR内部包含一个自动递增的计数器, 并能与给定的值进行比较,产生中断等动作。在PE中对LPTMR进行配置的步骤如图 137 所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 103 图 137 在PE中对LPTMR进行配置 按照上图的步骤,就可以完成对LPTMR的配置了。图 137中那些选择项的内容就是对 LPTMR进行配置的细节,LPTMR控制寄存器的每个bit位的定义都会体现这里,用户不用 再去阅读手册具体的细节,只要根据这个图形化界面的说明进行选择即可。生成代码前, 请点击保持按钮保存之前的修改。 这里有两点需要说明: 首先,图形化的配置界面虽然简单,但是并不是可以随心所欲的配置,模块本身有自己的 一套工作流程,不同的bit位之间可能会存在关联,因此有可能出现配置冲突。如果用户是 手动输入的代码,则很难发现对这种bit位赋值错误;如果是用PE进行配置,就会自动提示 报错,如图 138所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 104 Freescale Semiconductor, Inc. 图 138 PE的出错提示 另外,如果需要开启LPTMR中断,则需对其中断进行配置,如图 139所示,另外还需要编 写相应的中断服务程序。在Generated_Code目录下,可以找到与配置模块对应的c文件,本 例使用的模块是LPTMR0,所以对应的文件是LPTMR0.c,里面可以看到PE生成的中断服 务程序原型,如图 140所示。 图 139 在PE中开启并设置中断 用户可以在LPTMR0.c文件中,加入自己的中断服务程序代码。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 105 图 140 编写中断服务程序 因为功能不同,不同“component”的配置差别较大,这里就不一一介绍了,但使用起来都是非常 简单直观的,用户在可以在使用的时候自己体会。 PE除了可以图形化的方式初始化各个模块,其本身还包含了大量的函数API,这些API涉及单片机 各个模块的具体应用,用户可以很方便的进行调用,完成对应的功能,如图 141所示。 图 141 开启PE的KDS主界面 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 106 Freescale Semiconductor, Inc. 在左边的PE组件框中,可以看到有很多的函数可以调用,以UART模块为例,常见的初始化、设 置波特率、收发数据、配置模块等功能,都有对应的函数,将鼠标悬停在每一个图标上,会出现 关于这个函数具体的说明。 在右侧Methods标签页,可以具体选择需要PE生成哪些代码,用户在使用时,可以根据自己的需 求选用。在左边的PE组件框中,PE生成代码会在图标上以对勾显示,反之会显示叉。 用户在使用函数时,可以直接进行拖动,如图 142和图 143所示: 图 142 拖动函数 图 143 函数拖动以后 在KDS环境下使用PE进行软件开发主要就包括上面这些内容,接下来会简单讲解一下独立的PE Driver Suite工具。PE Driver Suite的主界面如图 144所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 107 图 144 独立PE的主界面 从图中可以看出,独立的PE Driver Suite界面与集成在KDS中几乎一样,事实上,由于两者皆是 采用Eclipse框架构建的,因此不但界面,使用方法上也是基本相同的。有关单独的PE使用方法, 本文不再赘述,用户可参考前面KDS章节。 对于独立的PE,只有两点需要注意: 1. 独立的PE界面中虽然有编译、调试、运行等菜单选项,但实际上独立的PE是不含编译器、 调试器等组件的,因此这些功能是不能使用的,如果用户点击这些选项,会产生一些未知 的问题。 2. 独立的PE不同于KDS的地方,就是PE可以产生对应于第三方IDE(比如IAR、Keil)的工程 代码,产生的代码可以直接在第三方IDE中编译运行。例如对于IAR来说,用户只要修改IAR 工程中使用的ICF链接文件(Keil会自动识别为SCF文件),配置好memory的分配即可,如 图 145所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 108 Freescale Semiconductor, Inc. 图 145 PE产生IAR的过程 产生的工程,可以直接导入到IAR中。首先在“Tools”“Options”下面打开选项,然后用IAR 建一个空工程,添加工程中刚才生成的XML文件即可,如图 146所示。 图 146 IAR中导入工程 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 109 6.3 基本外设模块编程举例 通过前面的步骤,我们对飞思卡尔Kinetis MCU的开发环境、开发工具都有了初步的认识,也熟悉 了基本的用法,可以正式开始编写自己的应用代码了。每一个MCU都会包括大量的外设模块,但 是Kinetis不同系列MCU的相同模块(比如SPI)具有高度的同一性,因此软件的开发也大同小异, 用户只要掌握了基本的原理,可以很方便的从一个系列,比如本文举例的K22,移植到另一个系 列上,比如K64。本节会选出几个最具有代表性的模块,并结合参考代码,介绍其编程方法。 在开始本节之前,首先需要介绍一下赋值语句的使用。MCU的编程,很大程度上就是对寄存器的 赋值操作。在飞思卡尔的手册中,每一个寄存器都会有一个名字,同时每个寄存器里的每个bit位 也会有一个名字,比如SIM_SCGC5寄存器,其中有一个PORTA位。同时我们对每个bit位也会定 义一个mask,比如SIM_SCGC5_PORTA_MASK,这个mask表示对这个寄存器的PORTA位的掩膜 位。所以如果要对这个PORTA位置1,可以用这样的代码: SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK; 同样如果对这一位清0,代码可以这样: SIM_SCGC5 &= ~SIM_SCGC5_PORTA_MASK; 这种位操作语句可以方便地对每一个bit进行赋值操作。 6.3.1 时钟模块 时钟设置是嵌入式系统的核心,这一节将会详细介绍Kinetis MCU的时钟系统,说明怎样具体配置 各个模块的时钟。以Kinetis K22为例,其时钟系统框图如图 147所示。 图 147 Kinetis K22的时钟系统框图 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 110 Freescale Semiconductor, Inc. 从图 147中可以看到,K22包括了MCG模块、SIM模块、振荡器模块以及电源管理模块PMC。其 中振荡器模块主要是提供各种频率的时钟源;电源管理模块提供一个1KHz的低功耗时钟;而完成 整个系统的时钟配置,最关键的是MCG和SIM这两个模块,下面分别进行介绍。 6.3.1.1 多用途时钟发生器(MCG) MCG(Multipurpose Clock Generator)模块内部包含锁相环(PLL)和锁频环(FLL),还有两个 片内时钟:片内高速时钟(4 MHz)和片内低速时钟(32 KHz)。用户可以根据需求选择不同的 时钟源,配置不同的时钟分频因子,来产生各种不同频率的时钟信号。 根据PLL/FLL的使用情况,以及内外时钟的选择,MCG提供了9种不同的工作模式,分别是: 锁频环工作片内时钟模式(FEI) 锁频环工作片外时钟模式(FEE) 锁频环旁路片内时钟模式(FBI) 锁频环旁路片外时钟模式(FBE) 锁相环工作片外时钟模式(PEE) 锁相环旁路片外时钟模式(PBE) 低功耗旁路片内时钟模式(BLPI) 低功耗旁路片外时钟模式(BLPE) 停止模式(STOP) 锁频环工作片内时钟模式(FEI)是MCG模块默认使用模式。MCG模块的不同工作模式(停止模 式除外)之间可以来回自由切换,如图 148所示。图 148中标示的不是标准的模式转换图,只是其 中一种方式而已。这里,以客户最常用的PEE模式工作为例,描述了芯片从上电到最终进入PEE 模式的转换过程。 图 148 MCG工作模式转换图 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 111 其中MCU上电后的默认模式是FEI,在启动代码中,会经过图中红线标示的状态,最终进入PEE 模式。与此对应的时钟分配如图 149所示。 图 149 PEE模式下的时钟分配 MCG的编程,核心就是对各个分频因子的配置,以及PLL/FLL模块的设置。对MCG模块编程,当 然可以采用读手册,写寄存器的方式来进行,但是MCG模块功能相对较复杂,寄存器很多,手册 阅读也较吃力,这么开发软件的话,效率不高,这里推荐采用PE工具(Processor Expert)来生成 对应的软件代码,本文与前面的一样,也采用KDS环境。 打开KDS后,在左侧点“Processor Expert”,就会出现时钟设置页面。因为对于MCU来说,时钟 的设置是必需的,所以不需要像另外的模块一样来添加“Component”。配置时钟可按图 150到图 153所示的步骤进行。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 112 Freescale Semiconductor, Inc. 图 150 设置系统的时钟 图 151 对时钟源进行配置 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 113 图 152 MCG的设置 图 153 MCU时钟设置设置 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 114 Freescale Semiconductor, Inc. 按照上面的步骤,便可以完成整个系统的时钟设置。前面的步骤中,有一些选项是灰色不可操作 状态,这和当前MCG模式有关,本例中选择的是PEE模式,因此不能对FLL模块进行设置,此时 有关FLL的设置选项就是灰色的。 6.3.1.2 系统集成模块(SIM) SIM(System Integration Module)模块控制芯片内核时钟、总线时钟、外部总线时钟、FLASH存 储器时钟、USB模块时钟等系统时钟,配置基于MCG输出基准时钟的分频系数。SIM模块还用 于控制外设时钟是否选通,打开使用模块时钟,关闭未使用模块时钟,这些时钟的门控,有利于 降低芯片功耗。 但是对于SIM的编程却非常的简单,只要关注这样两组寄存器即可:SIM_SCGCx和SIM_CLKDIVx (x表示1-7的数字,不同封装的芯片略有差异)。 1. SIM_SCGC(系统时钟门控System Clock Gating Control):这一组寄存器控制外设模块时 钟的开关。我们以SCGC4寄存器下面的UART0位举例说明,手册中是这样描述的: 图 154 SCGC4寄存器中UART0位的定义 如果要开启或关闭UART0模块的时钟,只需用最简单的赋值操作对这个位进行操作即可。 对于其他模块的时钟开关,只要选定相对应的控制位,所有的位操作都是相同的。 2. SIM_CLKDIV(系统时钟分频System Clock Divider):这一组寄存器控制MCG输出时钟后 的分频因子,分配给内核、总线、Flash等。以CLKDIV1寄存器中的OUTDIV1位为例,手 册中是这样描述的: 图 155 OUTDIV1位的定义 可以看到这一位定义了MCGOUTCLK给内核时钟的分频,再参考一下前面的K22时钟分配 图,直接赋值,也同样方便。如果使用“Processor Expert”工具,所有对这些控制位的赋 值操作都可以通过图形化界面的选择来实现。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 115 6.3.2 GPIO GPIO是所有MCU软件最常使用的功能,对I/O口的编程本身并不复杂,只需要配置少数几个寄存 器。 首先需要进行PinMux的设置。芯片在设计的时候,会把很多个功能集成在同一个物理管脚上,用 户在使用的时候,需要进行设置。还是以K22为例,在手册的Signal Multiplexing and Signal Descriptions章节,会有一个表格详细地说明每个管脚的复用功能,如图 156所示。 图 156 芯片的引脚复用 这个表格中,横向的ALT0-ALT7就是表示该管脚可以用来实现哪些功能,我们以PTE3(管脚标号 4)为例,Default是ADC1_SE7a,说明上电后,默认为ADC采样功能;从表格中看到,这个管脚 还可以用作GPIO(PTE3)、SPI1的SIN或SOUT、UART1的RTS_b等。 对PinMux的设置在Port Control寄存器中。Port Control是很多个寄存器组,命名方式为 PORTx_PCRn,其中x表示字母ABCDEF,对应PTA-PTE,表示端口A到端口E;n是数字,表示 每一个Port包含的实际管脚。比如上文说的PTE3,就对应于PORTE_PCR3寄存器,查手册,可以 看到这个寄存器各bit的定义如图 157所示。 图 157 PTE3的端口控制寄存器 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 116 Freescale Semiconductor, Inc. 下面详细说明其中各个控制或状态位的含义。 ISF(Interrupt Status Flag):该管脚作为GPIO时,对应的中断标志位。 IRQC(Interrupt Configuration):配置GPIO中断类型,比如上升/下降沿触发,电平0/1触 发,触发使用DMA还是CPU中断。 LK(Lock Register):设置此寄存器的0-15位是否锁定。锁定后,这些位不能再修改,直 到系统再次复位。 MUX(Pin Mux Control):对应管脚的不同功能,总共3位来确定该管脚的功能是 ALT0-ALT7中的哪一个。 DSE(Drive Strength Enable):设置该IO管脚是否可输出大电流。 ODE(Open Drain Enable):配置管脚是否开漏输出,0表示推挽输出,1表示开漏输出。 PE(Pull Enable):配置是否使能内部上下拉电阻。 PS(Pull Select):0表示下拉,1表示上拉。 只要使用简单的赋值语句,给这些寄存器赋对应的值即可。本节重点讨论GPIO功能使用,当把管 脚配置成GPIO后,便可以对IO口进行操作。 GPIO寄存器根据端口A到E,分为GPIOx。在实际应用中,主要使用下面三组寄存器: GPIOx_PDDR:设置该IO口的方向,0表示输入,1表示输出。 GPIOx_PDIR:该管脚配置为输入时,这一位表示管脚上的输入逻辑。 GPIOx_PDOR:该管脚配置为输出时,输出的逻辑,0为低电平,1为高电平。 这些寄存器的每一个bit对应于一个IO管脚,比如GPIOA_PDDR[2]就对应PTA2管脚,对这些寄存 器直接操作,就可以配置PTA2管脚的状态。 最后还有一点需要补充,用户在实际使用时,如果有部分管脚没有使用,建议配置为输出,并且 输出低电平并接地。这样处理对EMC性能最好,当然如果要求不高的话,不接地悬空也是可以的。 6.3.3 ADC模块 ADC转换也是用户常用的模块,这一小节主要介绍一下飞思卡尔Kinetis MCU中ADC模块。很多 Kinetis MCU片上集成了一个16位精度的逐次逼近ADC,支持单端和差分输入,此外还有硬件平 均、校准等其他功能,能够满足基本的工业应用的需要。 图 158是ADC模块的系统框图,第一眼看上去有些复杂,但是用户不用担心,按照红线圈起来的 几个重点部分划分,其实很容易理解。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 117 图 158 ADC模块框图 ADC模块本身比较复杂,涉及的功能也很多,由于篇幅限制这里不能一一详细讲解,本文的重点 是几个关键的部分,让读者能够快速上手,利用ADC模块实现最基本的功能。 首先需要配置PinMux,把用来进行ADC采样的管脚,配置成对应的ADC功能。 其次需要知道ADC的触发模式,即在什么条件下触发ADC采样。Kinetis的ADC模块有两种 触发方式,一种是硬件触发,MCU内部的其他模块(比如可编程延迟单元PDB、电压比较 器等)和ADC有内部互联,满足指定条件就可无需CPU干预,直接触发ADC采样(比如Timer 达到一个计数值)。另外一种是软件触发,只要对某一个寄存器写操作,就可以触发采样。 对于触发方式的选择,可配置ADC_SC2寄存器的ADTRG位。 如果要使用硬件触发方式,首先需要配置触发源,相应的控制位在SIM模块的SOPT寄存器中,在 K22中是SIM_SOPT7寄存器,里面有ADCxTRGSEL和ADCxALTTRGEN位,可以选择不同的硬件 触发方式,其中x对应于两个独立的ADC模块,ADC0和ADC1,如图 159所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 118 Freescale Semiconductor, Inc. 图 159 ADC触发源选择 对于触发源的配置,需要设置ADC_SC1寄存器。有几个触发源,就会有几个SC1寄存器,从SC1A 到SC1n,它们一一对应的。用户可以参考ADC模块框图最上面的部分。SC1寄存器包含ADC转换 功能的控制位,以及相应的标志位,主要包括: COCO:转换完成标志,为1说明当前转换已经完成。 AIEN:中断使能。 DIFF:是否启用差分模式,0表示单端输入,1表示差分输入。 ADCH[4:0] 输入通道选择,选择使用哪一个引脚来采样数据,具体看手册引脚定义,该配 置与差分模式也有关系。 而对于软件触发,只要 SC1A 寄存器的 ADCH 位不是全 1,那么对 SC1A 寄存器的任意写操作, 就可以触发一次 ADC 采样了。 软硬件触发的选择,取决于 ADC_SC2 寄存器的 ADTRG 位。 在开始 AD 转换之前,除了触发方式和触发源的选择,还有一些其他的寄存器需要配置,主要是 下面几个: CFG1寄存器,其中包括: o ADIV[6:5]:时钟分频,分别对应输入时钟的 1/2/4/8 分频。 o ADICLK[1:0]:ADC 模块输入时钟选择,可以在总线时钟、异步时钟等时钟源中选择 一个作为 ADC 模块的时钟输入。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 119 o ADLPC:低功耗设置,为 1 表示启用低功耗,牺牲采样率换取功耗。 o ADLSMP:长/短采样时间设置,1 表示长采样时间。 CFG2寄存器,其中包括: o ADHSC:高速配置,如果输入时钟源频率很高,置 1 该位可获得更快的总转换时间。 o ADLSTS[1:0]:长采样时间,当前面提到的 ADLSMP=1,即选择了长采样时间时,该 位设置具体添加几个时钟周期。 SC2寄存器,其中包括: o ADTRG:软硬件触发设置,1 表示硬件触发,0 表示软件触发。 o DMAEN:DMA 使能。 SC3寄存器,其中包括: o AVGE:硬件平均,置 1 表示启用硬件平均。 o CAL:置 1 开始校准,在校准过程中会保持为 1,完成后自动清零。 总而言之,这些配置都是 ADC 的一些功能设置,能够利用采样时间,换取更好的精度或者功耗 性能,具体怎么设置,需要根据实际需求。 除了上面这些功能以外,ADC 还有很多其他的功能,比如比较触发、DMA 搬运数据等,本文不 再细讲,感兴趣的用户,可以自行查阅手册。 配置好了 ADC 模块,并且满足触发条件,ADC 就会开始工作。当 SC1n 寄存器中的 COCO 位置 1 后,说明采样结束。此时的结果,会存放在 ADC_Rn 寄存器中,n 也表示触发源的个数,Rn 寄 存器的数量与 SC1n 一样,比如 SC1B 的结果存放在 RB 中。 ADC 的详细主要功能和使用方法可以查阅手册,也可以参考飞思卡尔官方的示例代码。 当然用户也可以通过 PE 图形化的操作界面来配置 ADC 模块,这里就不再赘述。 6.3.4 UART模块 Kinetis的UART模块功能非常强大,支持硬件流量控制、红外、ISO7816、地址匹配等很多功能, 作为面向初学者的起步文档,本文仍然着力于UART的基本功能,即数据的收发,让开发者能够 快速上手,实现UART的基本功能。 Kinetis MCU一般有多个UART模块,这些模块可能会有一些差别,以100 MHz的K22为例,如表 7 所示。需要注意的是,不同系列的MCU,如120 M的K22,其模块硬件配置是有所不同的,用户 还需仔细查阅用户手册的说明。 表 7 UART模块的差别 UART 模块 是否支持 ISO7816 FIFO 深度 模块时钟 最大波特率 低功耗支持 UART0 是 8 内核时钟, 最大 100 MHz 6.25 Mbps 否 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 120 Freescale Semiconductor, Inc. UART 模块 是否支持 ISO7816 FIFO 深度 模块时钟 最大波特率 低功耗支持 UART1 是 1 内核时钟最, 大 100 MHz 6.25 Mbps 否 UART2 是 1 外设时钟最大,50 MHz 3.13 Mbps 否 LPUART 否 无 FIFO 多时钟可选 6.25 Mbps 是 一些UART模块只能选取总线时钟,另一部可以自由配置,对于UART模块的时钟配置,需要看 SIM这一章节,对应于SOPT寄存器。以K22为例,在SOPT2中,时钟的选择如图 160所示。 图 160 UART时钟源配置 可以分别选取内部、外部参考时钟,FLL\PLL时钟作为UART模块的时钟。不同时钟源会影响到 波特率的设置,同时在低功耗模式下,要确保时钟源没有关闭。 要使用UART模块完成最基本的数据收发,首先需要对UART进行初始化,配置通信的基本参数, 几个关键点如下: 波特率: o UART_BDH 和 UART_BDL 寄存器的 SBR 位,共 12-bit 表示一个波特率。 o UART_C4 寄存器,里面的 BRFA 位,5 位表示对应的 32 分频。 o UART 模块的时钟:参见 SIM_SOPT2 寄存器的 LPUARTSRC 位。 o 波特率 = 模块时钟频率/(16 * (SBR[12:0] + BRFD)) 数据帧格式: UART通信的数据帧格式如图 161所示: 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 121 图 161 UART的帧格式 从图 161中可以看到,UART每帧的数据包括1个开始位,若干个数据位,紧接着是奇偶校验位, 最后是停止位。 用户需根据不同的使用需求,配置如下寄存器: UART_C1: M位,选择8-bit还是9-bit数据位,1表示9-bit数据位。 UART_C1: PE位,置1使能奇偶校验。 UART_C1: PT位,奇/偶选择,1表示奇校验,0表示偶校验。 当这些UART基本配置完成后,就可以开始收发数据了。首先使能UART收发器,这个操作在 UART_C2寄存器中,TE置1使能发送,RE置1使能接收。 收发器使能完毕后,如果是发送数据,则首先需要等待UART_S1寄存器的TDRE位置1,这一位为 1时表示目前可以发送数据,此时只要将待发数据写入UART_D寄存器中即可完成发送。关于 TDRE位是否置1,可以采用轮询的方式查询这一位;也可以配置UART_C2中的TIE位为1来使能 中断,一旦TDRE为1,会产生一个中断。 接收数据的过程与发送类似。收发器使能完毕后,如果有数据发送过来,UART模块会自动接收。 如果UART_S1寄存器的RDRF位置1,说明此时数据已经接收完毕,只要读取UART_D寄存器即可 获得刚才接收到的数据。关于RDRF位是否置1,也是同样可以采用轮询的方式去查询或者采用中 断方式,对应的中断使能位是UART_C2中的RIE。 这里还有一点需要说明,UART_D寄存器只有8-bit,如果使用了9-bit数据帧,那么第9 bit的数据 位于UART_C3寄存器的T8或R8位。 UART的其他功能,比如FIFO的使用、接收唤醒、硬件流量控制等,用户可以自行查阅相关手册。 在本文后面介绍SDK的章节,还包括一个用SDK实现UART功能的例子供用户参考。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 122 Freescale Semiconductor, Inc. 6.3.5 低功耗设置 Kinetis系列MCU具备多种低功耗模式,用户可以在功耗和性能之间进行权衡。在说明MCU的低功 耗模式之前,首先需要介绍一下ARM的内核。ARM Cortex M4的内核,包含了三种不同的工作模 式,分别是Run,Sleep,以及Deep Sleep。其中: Run就是正常的运行模式,可实现芯片的全部性能; 在Sleep模式下,内核会停止工作,但是能响应中断; 在Deep Sleep模式下,内核会处于静态,停止响应中断。 Kinetis在ARM本身的模式上,通过对外设的不同控制,扩展出了13种不同的模式,主要介绍见表 8。 表 8 低功耗模式说明 运行模式 描述 对应 ARM 内核模式 常用的唤醒方法 典型的电流值 RUN,运行模式 正常的运行模式 Run \ 13.83mA HSRUN,High Speed Run,高速 运行模式 最高频率运行,最大化性能 Run \ 23.6mA VLPR,Very Low Power Run,低功 耗运行 降频运行,内核频率只有 4MHz,关掉 低压检测功能;片上的电压调节器只输 出刚刚足够的功率 Run \ 0.61mA WAIT,等待模式 内核进入 sleep 模式,但是外设模块可 以正常工作;能够正常响应中断 Sleep 中断 4.4mA VLPW,Very Low Power Wait,低功 耗等待 与 WAIT 模式类似,只是会降频运行, 关闭低电压检测 Sleep 中断 0.382mA STOP,停止模式 芯片会进入静态状态,不响应中断,但 可通过一些异步中断唤醒芯片;外设的 时钟关掉,绝大多数外设会停止运行 Deep Sleep 中断 0.27mA VLPS,低功耗停止 与 STOP 类似,只是会降频运行,关闭 低压检测。能够让 ADC 运行和支持 I/O 中断的最低功耗模式。 Deep Sleep 中断 4.5uA LLS3,Low Leakage Stop 3,停止 3 模 式 内核时钟,系统时钟,总线时钟全部关 掉。内部的逻辑、所有的 RAM 状态能 够保持。 Deep Sleep 唤醒中断 2.6uA LLS2,Low Leakage Stop 2,停止 2 模 式 与 LLS3 类似,但只保留 SRAM_U 的一 部分。(CPU 内部逻辑保持的最低功耗 模式,再往后唤醒相当于 CPU 复位) Deep Sleep 唤醒中断 2.4uA VLLS3 内部所有逻辑掉电,所有的 SRAM 状态 能够保持。 Deep Sleep 低功耗唤醒复位 1.9uA 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 123 运行模式 描述 对应 ARM 内核模式 常用的唤醒方法 典型的电流值 VLLS2 在 VLLS3 的基础上,再关闭部分 SRAM (SRAM_L 的全部和 SRAM_U 的一部分 ) Deep Sleep 低功耗唤醒复位 1.7uA VLLS1 在 VLLS2 的基础上,所有的 SRAM 全部 掉电,只保留 32-Byte 的系统 register file 和 32-Byte 的 VBAT register file。 Deep Sleep 低功耗唤醒复位 0.73uA VLLS0 在 VLLS1 的基础上,再关闭 1kHz 的低 功耗时钟。所有的低功耗模式,I/O 口 的状态都能保持。 Deep Sleep 低功耗唤醒复位 0.14uA 这里还需要说明一点,每个低功耗模式下的实际电流,与芯片温度、各个模块的使能情况相关, 实际使用会有一些差异,本文只给出一些典型数值,具体的应用情况,请参考芯片技术手册。 这些低功耗模式之间不能随意切换,具体的转换图如图 162所示。 图 162 低功耗模式状态转换图 低功耗模式进入和退出的具体操作,请参阅参考手册的“System Mode Controller(SMC)”章节, 此外还有很多细节上需要注意的地方,比如时钟模式设置,一些模块的状态等。本文建议初次接 触飞思卡尔产品的用户在Freescale官方的参考代码基础上或者采用SDK进行低功耗模式的开发。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 124 Freescale Semiconductor, Inc. 6.3.6 USB编程简介 USB协议本身比较复杂,详细介绍超出了本文的范畴。本节不会涉及复杂的USB功能开发细节, 只是简单介绍一下对Kinetis MCU的USB应用开发,飞思卡尔能够提供哪些资源,以及怎样使用这 些资源。 对于USB的应用,飞思卡尔提供了一个完整USB协议栈,目前最新正式版5.0,提供HID、HUB、 CDC等所有常见类的支持,全面自持Device、Host、OTG三种方式,能很好的与Kinetis MCU配 合。USB协议栈的下载链接如下: www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MEDICALUSB&fpsp=1&tab= Design_Tools_Tab&uc=true&lang_cd=zh-Hans 此页面中有各个版本的USB协议栈软件包。下载后5.0版后安装即可。 飞思卡尔的USB协议栈提供了非常全面的例程,几乎所有的USB类都有若干个例程可以参考,这 里强烈建议初学者先打开这些例程看看,跑跑对应的代码,熟悉一下协议栈。这些例程位于“协 议栈的“安装目录”“Source”“Device”或“Host”或“OTG”“examples”目录下,如 图 163所示。 图 163 打开USB协议栈工程 针对CodeWarrior、IAR、Keil的例程都是现成的,可直接导入,编译下载即可。 另外,安装目录下的Documentation文件夹里面,包含了USB协议栈使用的所有相关文档。这里 建议先浏览一下USBHOSTUG、USBOTGUG和USBUG三个文档,分别介绍了Host、Device、 OTG的使用,以及怎样建立自己的应用程序。关于协议栈的具体细节,限于篇幅,这里就不深入 讨论了。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 125 于此同时,Kinetis SDK中也集成了对USB协议栈的支持,SDK中集成的USB协议栈功能更强大, 可支持不同的RTOS,使用方式和前面介绍的类似,具体细节用户可参考“SDK安装目录\usb\doc” 文件夹中的内容。 6.3.7 芯片加密和保护 软件开发者为了保护自己的知识产权,通常情况下都会对芯片的Flash数据和程序进行加密,防止 第三方个人通过非法手段获取程序代码,再烧录到同型号芯片中仿制产品。对Kinetis系列产品, 有两种方法能够保护开发者的程序: 1. 对Flash加密 在Kinetis系列单片机中,通过设置Flash配置区域中对应的加密位,复位后芯片会进入secure 模式,外部调试器无法读写Flash数据,从而完成对代码的保护。 对Flash加密,只需要对Flash模块的FSEC寄存器(FTFE_FSEC)进行对应的设置,步骤非 常简单,FSEC寄存器的定义如下: o KEYEN[7:6]:是否允许后门验证,只有设为10表示允许后门验证。 o MEEN[5:4]:是否允许大批量擦写,即使Flash被加密后,也可以大批量擦写(整个 Flash全部被擦除),10表示不允许,其余值都表示允许。 o FSLACC[3:2]:飞思卡尔工厂失效分析访问,是否允许飞思卡尔工厂读取被加密的 数据,这个设置超出了本文的范畴,用户可自行查阅手册。 o SEC[1:0]:是否对芯片加密,10表示不加密,其余值都表示加密。 这里需要指出的是,FSEC寄存器在芯片上电后会自动从Flash的指定地址处(K22为0x040C 地址)载入提前写入的默认值,用户需要提前将对应的值烧写到Flash中 2. 利用每一颗芯片的唯一识别号UID进行验证 飞思卡尔 Kinetis 系列单片机,有一个 64-bit 的唯一识别号(UID),这个值保存在 SIM 模块中。用户可以在自己的程序中,以 UID 为基础,经过某种算法得到一个密码(比如 UID 加和),并将这个密码烧录到 Flash 的 IFR 区域,同时在主程序的最前面加上验证的 代码,如果发现 UID 和密码不匹配,则不执行主程序。Kinetis 单片机每一片的 UID 都是 不相同的,并且 IFR 区域只能烧写一次,通过这种手段,可以有效避免程序被仿制。 关于这种保护的方法的细节,请参考如下文档(两个链接是一个文档): www.freescaleic.org/module/forum/thread-595621-1-1.html bbs.21ic.com/icview-821648-1-1.html 上述的两种方法,第一种是保护Flash中的程序不能被非法地读取出来,第二种是保护程序不能被 未经授权烧写到其他芯片中运行,将这两种方法结合起来,可以全面保护开发者的权益。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 126 Freescale Semiconductor, Inc. 6.4 基于Kinetis SDK的开发 软件开发套件(SDK,Software Development Kit),由强大的外设驱动、协议栈、中间件和示例 应用组成,旨在简化和加速基于所有Kinetis MCU的应用开发。现在推出的SDK是针对Kinetis MCU的,所以又称为KSDK,目前最新版本为1.0.0GA,是完全开源的。前面已经提到,SDK将整 个软件进行分层,提供了各种功能丰富的函数,这些函数可直接对寄存器进行操作,用户不必自 己去写对寄存器进行操作的代码,所以大大地节省了用户阅读手册的时间。 在使用SDK之前,首先需要完成两步的设置,分别是设置环境变量,以及在KDS中安装与SDK有 关的eclipse插件。这两个操作的详细步骤,可参考本文档KSDK的下载与安装的内容。 SDK本身包含了大量的例程,这些例程涉及到了Kinetis各个模块的典型用法,对于初学者,建议 先导入例程进行初步的研究,对SDK整体上有一个大概的了解,例程存放于“SDK安装目录\demos” 下面,直接导入编译运行即可。 图 164 SDK的库文件 需要注意的是,在编译例程工程之前,用户应该先编译SDK的库。SDK库位于“SDK安装目录 \lib\ksdk_platform_lib”目录中,库本身也是一个工程,导入后先进行编译,编译结束后,就可以 编译例程了。SDK库的工程名ksdk_platform_lib,如图 164所示。 用户在使用SDK提供的库函数开发时,所要用到的函数源代码都包含在SDK安装目录的“platform” 目录下。根据图150的内容,首先是clock目录,因为时钟管理由system services层提供支持,所以 其中还包含了“system”目录,其中含有对时钟进行操作的所有函数,比如初始化、设置分频、 MCG模式切换等,具体每个函数的实现,用户可参看代码。 对比gpio目录,可以看到有所不同的是其中包含了“common”、“drivers”、“hal”三个目录。 其中drivers就是外设驱动层,包含了相对复杂的功能函数;而hal就是硬件抽象层,直接对应于寄 存器的操作;common表示Kinetis不同系列单片机该模块的不同特性(比如同样是UART,K60与 K20会存在差异)。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 127 再看一下LPTMR的工程文件,在其main函数中,包含了LPTMR配置、初始化、开始计数这一系 列功能的实现函数,都是调用Driver层的API来实现的,如图 165所示。 图 165 LPTMR工程的Main函数调用 在LPTMR的main函数中,调用了几个driver层的函数,这些driver层的函数,本身又会调用HAL层 的函数,这里体现了SDK的分层结构。用户可以在LPTMR的目录下查看各个函数的具体实现。 如果用户需要自己开发程序,可以根据实际需求,调用platform库中所有的HAL、Driver层的函数。 对于SDK所有的函数,可以从函数名区分该函数的分层,hal层的函数名含有“HAL”字样,同样 Driver层含有“DRV”字样。 注 不要同时调用不同层的函数。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 128 Freescale Semiconductor, Inc. 下面以UART模块为例,通过调用驱动层函数来实现数据的收发。每个模块驱动的使用,都需要 两个结构体变量,这两个结构体,一个完成对模块的配置,一个记录模块的状态,以UART为例, 配置结构体定义如图 166,里面定义了波特率、奇偶校验、数据帧长度等设置。 图 166 UART模块配置结构体定义 状态结构体定义如图 167所示。 图 167 UART模块状态结构体定义 状态结构体中定义了当前UART模块运行时候的一些变量。 用户在使用UART模块时,需要首先定义这两个数据结构,然后就可以调用UART模块的初始化函 数了,如图 168所示。 图 168 UART模块初始化 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 129 初始化函数有三个参数,第一个参数表示UART实体,一个芯片里面可能多个UART模块,用一个 数字进行区分,比如0表示UART0;第二个和第三个参数就是前面定义的两个结构体。Driver层会 根据这些参数,对UART模块进行初始化操作。初始化结束后,就可以开始进行数据的收发了, 示例代码如图 169所示。 图 169 UART发送函数示例代码 在示例代码中,定义了一个数组“data[19]” 来存放待发送数据,然后直接调用驱动中的发送函 数UART_DRV_SendDataBlocking() 即可。数据的接收与发送类似,只是调用不同的函数。除了收 发函数,驱动层还提供了诸如反初始化、获取当前状态、终止发送等诸多函数,函数接口都不复 杂,用户可以自行研究。 最后,还要再提一下SDK的中断使用。在启动代码中,会有一个startup_MK64F12.s文件(不同型 号的芯片后面数字会有差别),里面定义了中断向量表,如图 170所示。 图 170 SDK的中断向量表 右边一栏中定义的就是每个中断的中断处理函数。在SDK中,将中断处理函数分成了两层来调用, 图中定义的中断函数会再去调用驱动层提供的函数,清标志位、中断执行代码都是在驱动层完成 的,如图 171所示。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 130 Freescale Semiconductor, Inc. 图 171 中断的两级调用 如果用户不需要驱动层提供的API,想自己编写中断处理函数,只要进行简单的代码修改即可。 除了UART模块,其他模块驱动的调用与UART类似,限于篇幅,本文不一一举例。 用户在实际中编写自己的程序时,对某些函数的API和用法存在疑问时,可以参考demos目录下 SDK自带的例程,仿照例程使用。SDK提供的例程基本上涵盖了所有的模块。 同时,doc目录下还包含了很多的文档,建议先阅读user guide,里面有一些最基本的使用说明, 以及快速上手指南。更详细的每个函数细节描述,请参考文档“SDK API Reference Manual”。同 时对于每一个demo,“Demo Applicationn User’s Guide”里面也有详细的描述。 6.5 怎样移植客户的应用 在很多情况下,开发者已经有了自己的一套应用代码,或者有基于其他MCU的代码,那么如何将 其移至到Kinetis上面的呢?本小节将会从主要的方面给出一些基本的建议,并以KDS环境为例。 对于代码的移植,首先需要建立一个新的工程,并且在工程建立好之后,添加所有的C文件和h文 件到相应的目录下,这两步较为简单,具体过程也可以参考介绍KDS的章节。有一点要注意,在 建立工程的时候,一定要选择对应的芯片,同时推荐使用PE工具,因为PE能提供一套非常完善的 初始化代码,减少移植的工作量。源代码文件全部添加完成后,就可以调用里面的函数了。 其次需要正确配置时钟,不同开发板的时钟源是不一样的。配置时钟的代码在“CPU.c”或者“芯 片名字.c(例如MK64XXX.c)”文件中,里面有对MCG、SIM_CLKDIV等寄存器的操作,用户需 要根据自己的实际情况来进行配置。当然这一步也可以直接采用PE来配置。 接下来需要设置中断向量表,在KDS中的Vectors.c文件里有一个指针数组,用来定义所有的中断 向量的入口,如图 172所示。 用户需按照实际需求,将需要用到的中断函数名改成实际的函数名。具体的中断向量号及入口地 址需查阅芯片手册。 除了上面这些,用户还要按照目标板的需求,修改PinMux,将管脚配置成对应的功能,具体请参 考本文的前一章GPIO部分。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 Freescale Semiconductor, Inc. 131 图 172 修改中断向量表 此外,因为芯片的地址空间可能不同,用户还可能需要修改memory map。比如原程序在1MB Flash的MCU上运行,但是如果移植目标芯片只有512 KB,就需要注意合理的分配地址空间,确 保地址不会溢出,以免程序跑飞。 最后,还需要修改Linker文件,来分配存储器空间的使用。在工程目录下,会有一个.ld文件,一 般名字为芯片名(例如K64FN1Mxxx12.ld),如果之前的代码对地址分配有特殊需求,用户可在 这里进行配置,如图 173所示。 图 173 Linker文件修改 关于Linker文件的具体语法,请参考文档AN4498。此文档可以在Freescale官网搜索到。相信阅读过 本应用指南的用户已经了解如何在飞思卡尔网站上搜索并下载参考文档了。 飞思卡尔单片机快速上手指南, Rev. 1.1, 01/2015 132 Freescale Semiconductor, Inc. How to Reach Us: Home Page: freescale.com Web Support: freescale.com/support Document Number: MCUGSUG Rev. 1.1 01/2015 本文档中的信息仅供系统和软件实施方使用 Freescale 产品。本文并未明示或者暗示授予利 用本文档信息进行设计或者加工集成电路的版权许可。Freescale 保留对此处任何产品进行 更改的权利,恕不另行通知。 Freescale 对其产品在任何特定用途方面的适用性不做任何担保、表示或保证,也不承担因 为应用程序或者使用产品或电路所产生的任何责任,明确拒绝承担包括但不局限于后果性的 或附带性的损害在内的所有责任。Freescale 的数据表和/或规格中所提供的“典型”参数 在不同应用中可能并且确实不同,实际性能会随时间而有所变化。 所有运行参数,包括“经 典值”在内,必须经由客户的技术专家对每个客户的应用程序进行验证。Freescale 未转让 与其专利权及其他权利相关的许可。Freescale 销售产品时遵循以下网址中包含的标准销售 条款和条件:freescale.com/SalesTermsandConditions. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © 2014 Freescale Semiconductor, Inc.