嵌入式实验室
Freescale嵌入式实验室
嵌入式实验指导书
昆明理工大学机电工程学院
2013 年12 月第2 版
目录
1 实验平台的简介 (1)
1. 概述 (1)
2. 实验箱的基本构成 (1)
3. 写入器及其驱动的安装 (3)
2 基本工程的建立 (6)
1. 实验目的: (6)
2. 实验原理: (6)
3. 思考题: (15)
3 流水灯实验 (16)
1. 实验目的 (16)
2. 实验原理 (16)
3. 核心代码示例 (17)
4. 实验步骤 (18)
5. 思考题 (18)
4 数码管实验 (19)
1. 实验目的 (19)
2. 实验原理 (19)
3. 核心代码示例 (20)
4. 实验步骤 (22)
5. 思考题 (22)
5 SCI 串口实验 (24)
1. 实验目的 (24)
2. 实验原理 (24)
3. 核心代码示例 (25)
4. 实验步骤 (26)
5. 思考题 (26)
6 PIT实验 (28)
1. 实验目的 (28)
2. 实验原理 (28)
3. 核心代码示例 (28)
4. 实验步骤 (30)
5. 思考题 (30)
7 TIM 实验 (31)
1. 实验目的 (31)
2. 实验原理 (31)
3. 核心代码示例 (33)
4. 实验步骤 (34)
5. 思考题 (34)
8 ADC实验 (35)
1. 实验目的 (35)
2. 实验原理 (35)
3. 核心代码示例 (37)
4. 实验步骤 (38)
5. 思考题: (38)
9 PWM 实验 (39)
1. 实验目的 (39)
2. 实验原理 (39)
3. 核心代码示例 (40)
4. 实验步骤 (41)
5. 思考题 (41)
1实验平台的简介
1.概述
传统的嵌入式应用开发方法主要是使用仿真器模拟目标系统中MCU 的运行情况,希望达到在目标系统硬件尚未定型与制版情况下,先行调试目标系统的硬件、软件,为目标系统的研制提供前期基础。但是在一些情况下,难以实现100%的实时仿真,有些功能在用仿真器调试时十分正常,而到了实际应用系统却不能顺利运行。同时,传统的仿真方式的一些调试功能仅适用于初学者,对于具有一定开发经验并拥有通用功能模块积累的开发者,往往增加了开发时间。
实验室中使用的嵌入式开发套件是针对飞思卡尔MC9S12 开发工具,提供BDM方式在线编程调试功能。开发套件由写入器、核心板以及扩展板组成。写入器通过USB 接口与PC 机连接,通过BDM 接口与核心板连接(如图1)。在集成开发环境的支持下,通过写入器可对核心板上的MCU 进行在线编程、调试。扩展板上提供核心板底座、数码管、4×4键盘、开关、模拟电位器、蜂鸣器、LCD、传感器、串行口以及USB、CAN、IIC、SPI、网络等接口。
图1.集成开发结构框图
2.实验箱的基本构成
扩展板提供160 引脚核心板底座接口。核心板底座接口如图2。
图2.核心板底座接口示意图
核心板底座接口共有四个双排插座:Core1、Core2、Core3 以及Core4。为方便接线,每个插座对应一个40 引脚的单排插座。
扩展板硬件布局如图3所示。扩展板包括的硬件模块有:复位、电源、调试小灯、蜂鸣器、继电器、8 段数码管、液晶、4×4 键盘、拨码开关、传感器接口(光敏、热敏)、串行口、USB、CAN、IIC、SPI、以太网口、Zigbee、RFID、串口转USB 等。此外,扩展板上还提供了六列插孔,以便插入元件进行实验。
图3.扩展板布局图
3.写入器及其驱动的安装
(1).简介
S08/S12/ColdFire BDM 为S08/S12/ColdFire 三合一写入器(如图4),适用于Freescale HCS08/RS08/HCS12/S12X/ColdFire 全系列MCU,开发环境使用Freescale CodeWarrior。写入器使用USB 线连接PC,使用BDM 接口连接目标板。其中HCS08/RS08/HCS12 系列芯片使用6 针BDM 接口,ColdFire 芯片使用26 针BDM 接口。同时,写入器配有苏州大学飞思卡尔嵌入式系统研发中心开发的独立写入软件,主要供生产时写入程序使用。
图4.SD-PRG-III型写入器
(2).驱动安装
i.将写入调试器与PC 机的USB 口相连,系统弹出“发现新硬件”的提示,并弹出
“找到新的硬件向导”对话框,选择“否,暂时不”选项。单击“下一步”,如图
图5。
图5.硬件向导
ii.选择“从列表或指定位置安装(高级)”选项。单击“下一步”,选择“再这些位置上搜索最佳驱动程序(S)。”,单击“下一步”。如图6。
图6.选择硬件驱动位置
iii.选择“Open Source BDM(LibUSB-W32)”选项。单击“下一步”。直至驱动完全安装,点击“完成”。如图7。
图7.选择硬件驱动型号iv.通过设备管理器检查驱动是否安装成功。如图8。
图8.检查硬件驱动
2基本工程的建立
1.实验目的:
熟悉XS128单片机开发的基本流程,掌握CodeWarrior建立工程的过程。
2.实验原理:
(1).打开开发环境CW5.0 如下图,从File 菜单下选择:New Project…:
图9.应用环境界面
(2).单击CPU 类型前面的“+”号展开相应选项:
图10.建立新工程及文件夹
(3).选择CPU 类型:依次单击“+”逐项展开,可以看到相应的CPU 类型,并在该CPU 上
单击一下,变成蓝色表示选中该CPU ,如下图:
图11.选择单片机型号
(4).选择下载器类型:单击右侧窗口选择下载器类型“TBDML”然后单击“下一步”:
图12.选择下载器型号
(5).选择需要支持的语言种类,单击“Set...”选择存放工程的路径,并修改工程名称:
图13.保存工程名称和路径
(6).单击“完成”,完整工程向导的建立工程过程:
图14.完成工程向导配置
(7).到此工程建立完成。可以在【source】组中打开main.c 直接添加代码,也可以添加或
者新建其他文件。其他操作过程跟别的开发环境类似,可以查看帮助文档。
图15.工程模板
(8).添加和删除文件:如果打开了在main.c 上面单击右键,在弹出菜单中选择“remove”
选项,然后单击弹出对话框的“OK”按钮,即可删除该文件。如下图所示:
图16.删除文件的窗口
(9).添加文件:在sources 文件夹上面单击右键,选择“Add Files...”选项
图17.添加文件窗口
(10).打开main.C,编写相关的程序。
图18.程序编写完毕后窗口
(11).编译,查看程序错误,如果有错误,双击错误之处则可以跳转到错误错,一边修改。
图19.编译错误查看窗口
(12).如果编译没有错误,则可以下载程序1。单击绿色下载标签时,首先跳出BDM 配置对
话框,默认设置,单击确定即可,然后可能会跳出下图,单击确定即可:
1如果遇到无法找到硬件,请查看是否安装驱动。如果第一次下载后,无法再次进行下载,请将BDM 的USB端断开并重新连接。
图https://www.wendangku.net/doc/1f18542693.html,BDM配置窗口
图21.调试环境
(13).代码下载成功后进入调试环境如下图,在这里可以进行各种调试:
图22.调试环境
(14).单击绿色-->全速运行, 如果不需要作具体的单步调试,可以跳过26~30 步,直接使用
演示程序。绿色--> 后面是单步调试的按钮
(15).双击Data1 工具栏可以最大化寄存器查看窗口,如下图所示:
图23.调试及跟踪
(16).单击寄存器查看窗口中黄色+号可以展开数组等变量或者寄存器,如下图所示:
图24.寄存器查看窗口
(17).查看是数据刷新情况时,可以通过下拉菜单刷新全部数据,或修改数据更新模式刷新数
据。如下图:
图25.刷新寄存器数据
3.思考题:
(1).单步调试的作用是?
(2).在原工程的基础上设计一个程序,使小灯可以明暗交替闪烁。
3流水灯实验
1.实验目的
熟练掌握XS128单片机普通I/O口输出功能的使用。
2.实验原理
XS128单片机上有很多引脚,其中很多的引脚具有引脚复用的功能。当某个引脚的复用功能禁用时,那么引脚将作为普通I/O口使用。关于I/O口的设置主要注意以下几点:
(1)每个I/O子系统都有一个功能设置寄存器,其中的几个位用于部分或者全部引脚的
功能设定,设定为专用功能后,方向设置功能可能自然禁止,但上拉、下拉及降低
功率驱动功能一般仍然有效,具体取决于I/O子系统的要求。
(2)通常复位后,各引脚默认为通用I/O输入功能,具体取决于MCU的工作模式。
(3)当引脚设定为通用I/O后,通过方向寄存器挃定引脚的输入/输出,一般复位后默
认为输入。设定为输出后,上拉、下拉功能禁止,但降功率驱动功能允许,而设定
为输入后,降功率驱动功能禁止,而上拉、下拉功能允许。
(4)输入引脚一般可以设定是否激活上拉/下拉功能,激活后可以保证浮空引脚的输入
值固定,对于非浮空引脚有时可以提高响应速度,增强抗干扰能力。
(5)输出引脚可以选择是否降低驱动功率,如果激活可以使驱动能力降低至约50%,这
样可以减小对其他部分的射频辐射干扰,同时降低功率消耗,但可能少量延长过渡
时间、降低响应速度,因此必须根据引脚的外部负载情况确定是否采用。
实验平台上有8个发光二级管,每个发光二级管串联了一个限流电阻,用XS128的PA 口控制发光二级管的亮灭状态,PA口的管脚置1时,发光二级管熄灭,PA口清0时,发光二级管点亮。
图26.LED原理图
3.核心代码示例
(1).端口初始化程序
/*******************************************
* 函数名称:void ConfigIOA(void)
* 描述:端口配置
* 调用:无
* 被调用:无
* 输入:无
* 输出:无
* 其他:无
*********************************************/
static void ConfigIOA(void) /* configuration I/O */
{
DDRA = 0xFF; /* 端口A 的方向输出*/
PARTA = 0x80; /* 端口A 的初始化数据*/
}