1-飞思卡尔8位单片机MC9S08JM60开发板实践教程

合集下载

freescale飞思卡尔8位单片机选型指南

freescale飞思卡尔8位单片机选型指南

Learn More:For more information about these Freescale products, please visit /8bit.Freescale ® and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2007Document Number: 8BITCIPRODMPFS REV 10The BDM Multilink is a cost-effective development tool for RS08, HCS08 and HCS12 MCUs, and provides real-time, in-circuit flash programming, emulation and debugging through the BDM interface. CodeWarrior Development Studio for RS08, HC(S)08 and HC(S)12, Special Edition is included along with the BDM Multilink.CodeWarrior Development Studio is a comprehensive special edition tool set for fast and easy MCU development. This tool suite provides the capabilities required by every engineer in the development cycle to exploit the capabilities of the RS08 and HC(S)08 architectures. Some of the features include project manager for up to 32 files, full-chip simulation, flash programming and ProcessorExpert ™ technology, which provides automatic C-code generation for most HC(S)08 on-chip peripherals.Evaluation Boards (EVB):Evaluation boards allow users to program and debug advanced application code with expanded I/O functionsa nd peripherals. HC(S)08 EVBs may include advancedf eatures including zero insertion force (ZIF) sockets, LCDs and large prototype areas. CodeWarrior DevelopmentS tudio for RS08, HC(S)08 and HC(S)12, Special Edition is included along with the board.USB Mini Board for Freescale’s Low-End 8-bit Microcontrollers (USBSPYDER08):T o aid fast and easy development for embedded systems engineers working on our low-end microcontrollers, Freescale has developed the cost-effective, high-performance USB debug tool—the USBSPYDER08. With the USBSPYDER08 you can spy into your application software, debug 8 leg 8-bit microcontrollers before you have your application board and kill bugs in your application software. This complete package delivers a cost-effective, yet powerful way to develop your products and speed time to market./Freescale/Freescale’s 8-bit Product Summary。

MC9S08系列单片机FLASH存储器的在线编程

MC9S08系列单片机FLASH存储器的在线编程

Flash保护寄存器
地址0x1824,FPROT与NVPROT FPROT只读, NVPROT可写,复位后 MCU自动将NVPROT的值给FPROT 第1位Flash保护禁止位,=1Flash不保 护 前7位在FPDIS=0时设置保护的区域
Flash状态寄存器 FSTAT
地址0x1825,使用最频繁 第7位,Flash命令缓冲区空标志位,=1可以接受 新命令。 第6位只读,Flash命令完成标志位 第5位侵害保护标志位,=1表示试图对保护区域 进行擦写操作。 第4位访问出错标志位。 第2位只读,Flash空白标志位,执行空白检测命 令后有意义。
我们需要的是用户模式 (例程见FlashProgram,内有源代码)
与Flash相关的寄存器
1、HCS08系列MCU的Flash存储器 编程方式与HC08有很大差异 2、S08与Flash相关的寄存器有6个 3、普通08与Flash相关的寄存器只 有2个
Flash时钟分频寄存器 FCDIV
地址0x1820。 第7位只读,=1表示复位后FCDIV已被改写, 可以对Flash进行擦写。 第6位设置Flash分频,=1时钟为总线时钟的 1/8,=0Flash分频器时钟输入就是总线时钟。 低5位设置Flash时钟分频器的分频因子。
在线编程的作用
1、在程序运行过程中改变非易失 存储器Flash的数据,可实现在线 标定。 2、可重复擦写十万次以上 3、掉电后数据仍然存在,用来保 存一些参数或重要数据,可靠性好。
Flash存储器的两种编程模式
1、写入器模式,需要硬件支持,让 单片机进入背景调试(BDM)状态, 编程器常采用这种方式。 2、用户模式,在用户程序运行的过 程中对Flash进行擦写。
Flash擦写例程基本框架

飞思卡尔单片机快速上手指南说明书

飞思卡尔单片机快速上手指南说明书

Freescale Semiconductor, Inc.Document Number: 用户指南 Rev. 0, 09/2014Confidentiality statement, as appropriate to document/part status.___________________________________________________________________飞思卡尔单片机快速上手指南作者:飞思卡尔半导体IMM FAE 团队飞思卡尔半导体是全球领先的单片机供应商,其单片机产品包含多种内核,有数百个系列。

为支持用户使用这些产品,飞思卡尔提供了丰富的网站资源、文档及软硬件工具,另外,我们还有众多的第三方合作伙伴及公共平台的支持。

对于不熟悉飞思卡尔产品和网站的初学者来说,了解和使用这些资源这无疑是一个令人望而生畏的浩瀚工程。

本指南的目的,就是给初学者提供一个指导,让他们不被这些海量信息淹没;用户根据本指导提供的操作步骤,能迅速找到所需的资源,了解如何使用相关的工具。

在本指南中,我们以飞思卡尔的新一代Kinetis 单片机K22系列为例,介绍了如何获取与之相关的资源,如何对其进行软硬件设计和开发。

实际上,这些方法也适用于其它的单片机系列。

当然,对于其它有较多不同之处的产品,我们也会继续推出相应的文档,供广大用户参考。

目录1 如何获取技术资料与支持 ..........................................................2 2 如何选择产品、申请样片及购买少量芯片和开发工具 ........... 93 飞思卡尔单片机的开发环境、开发工具和生态系统 ............. 224 如何阅读飞思卡尔的技术文档 ................................................ 45 5 飞思卡尔单片机硬件设计指南 ................................................ 55 6飞思卡尔单片机软件开发指南 (67)飞思卡尔单片机快速上手指南, Rev. 1, 09/20142Freescale Semiconductor, Inc.1 如何获取技术资料与支持1.1 概述当用户使用飞思卡尔单片机芯片时,如何获取芯片的数据手册(Datasheet )、参考设计(Reference Manual )和官方例程等资源呢?另外当用户遇到了技术问题该如何获得帮助和解答呢?这里以Kinetis 的K22系列芯片为例为大家介绍如何解决这些问题。

项目点亮一个LED灯

项目点亮一个LED灯

1.1 MC9S08GB60 框图整体构造
堆栈实质是随机存储器RAM旳一部分,是从 RAM空间中划分出来旳临时空间,专门存储中 断或转移调用旳地址,但它不能超出芯片可用 RAM 空间旳大小。
1.1 MC9S08GB60 框图整体构造
当祈求中断时,CPU 将寄存器旳目前内容保 存在堆栈中,在完毕中断服务子程序后处理器 将它们恢复以继续执行之前旳程序。注意,在 中断前,SP 已指向堆栈中旳下一种可用位置 了。其环节是:SP先将数据保存到堆栈中指定 位置,然后会自减以指向堆栈中旳下一种可用 位置。结束中断时,中断例程旳RTI 指令以相 反旳顺序出栈来恢复CPU 寄存器。
项目1 点亮一种LED灯
学习目的
经过本项目旳学习,能够熟练论述飞思卡尔 HCS08系列MC9S08GB60单片机旳内部资源 及特点;能够论述MC9S08GB60单片机旳整 体构造;能够了解与内核有关CPU控制寄存器 旳作用;熟悉并能辨认MC9S08GB60单片机 旳封装及引脚;能够根据应用要求设计硬件电 路图;能够熟悉论述MC9S08GB60单片机旳 存储器构造;能够了解中断与复位旳概念及用 途。
Z——零标志位 零标志位被置位时表白操作成果为$00(或是十
六进制旳$0000)。该位有两种状态: 1=成果为零 0=成果为非零
1.1 MC9S08GB60 框图整体构造
C——进位/借位标志位 该位有两种状态: 1=有进位 0=无进位 其功能有两种:一是存储算术运算旳进位标志,
当两个8位二进制数相加或相减时,产生进位 或借位时,由硬件自动将该标志位置1,不然 该被清0。二是在位操作中(如左移或右移), 作“位累加器”使用。
1.2MC9S08GB60旳引脚及封装
振荡器引脚 MC9S08GB60 单片机能够在没有任何外部晶体振荡器

飞思卡尔8位单片机-第3章 单片机最小系统设计

飞思卡尔8位单片机-第3章 单片机最小系统设计
• 计算机正确运行(COP) 看门狗可选择从专用的1 kHz 内部时钟源或总线时钟运行
3.2.1 MC9S08QG8内部时钟源
时钟源模块内部结构
31.25kHz 1分频
2分频 16MHz
8MHz
FLL
内部时钟源工作模式
FEI: FLL engaged internal mode; FEE: FLL engaged external mode; FBI: FLL bypassed internal mode; FBILP: FLL bypassed internal low power mode; FBE: FLL bypassed external mode FBELP: FLL bypassed external low power mode stop:
内部参考时钟ICSIRCLK的使能控制 1-ICSIRCLK允许;0-ICSIRCLK停止
控制当ICS进入停止状态时内部参考时钟是否保持使能. 1-如果IRCLKEN设置或者ICS在进入停止前为FEI,FBI或者FBILP模式时,内部参考时钟 保持使能. 0-ICS进入停止状态时,内部参考时钟也禁止。
(1 MHz to 40 MHz for external clock source) 0 Low frequency range selected for the external oscillator of 32 kHz to 100 kHz
(32 kHz to 1 MHz for external clock source)
extern volatile byte NVICSTRM @0x0000FFAF;
if (NVICSTRM != 0xFF) {
ICSTRM = NVICSTRM; // load trim value if location not blank

MC9S08JM60简介

MC9S08JM60简介

这是一个低成本,开源的调试接口,主要是为HCS12系列MCU开发的。

它采用MC908JB08作为主控制器。

通过软件升级可以到MC908JB16。

TBLCF - Turbo BDM Light Coldfire:这也是基于MC908JB16的调试器,主要是针对Coldfire V2, V3, and V4系列MCU开发。

OSBDM - Open Source BDM:它同样是基于MC908JB16的调试器接口,主要为目标为9S08, 9RS08, and Coldfire V1开发的。

OSBDM-JM60 - 9S08JM60 Based OSBDM:它是基于9S08JM60的调试器接口,兼容以前所有的BDM功能。

同时还可以为DSP56800E处理器提供JTAG接口。

可以看出最新款的调试器OSBDM-JM60也是目前为止功能最强劲的。

1.BGND接口:BGND接口为9S08,RS08, and Coldfire V1系列MCU提供一个6针的BGDN命令调试接口。

这个接口采用了74LVC1T45双电源转转换器芯片。

用于JM60和目标板电压之间的转换。

JM60通常是5V电压[用+5V_SW表示],而目标板电压可以是1.8-5.5V[用+V_TRG表示]。

JM60通过TBGND_ EN的高低来控制数据转送的方向。

这个信号高为JM60输出信号,低则为JM60接收信号。

TBGND_OUT为JM60一则的信号,TBGND_IN 则为目标板一则的信号。

2.电源控制:OSBDM提供一个对调试器电源和目标板电源的限流功能。

具说USB连到电脑初始化时,电流不是一般的大呀,因为搞这个调试器再把咱的电脑USB口烧了[>500mA],那多悲呀。

这是通过一个电源切换芯片mic2026来实现的,它提供一个两路电源选择的功能,它的意思就是一个5V的电源输入,然后输出两路5V电源,而这两路电源是否有输出呢,是受你控制的,你使能那个管脚,那一路就电源就可以用。

飞思卡尔8位单片机—飞思卡尔8位单片机基础知识

飞思卡尔8位单片机—飞思卡尔8位单片机基础知识

7〉 管脚的复用
注意: 0、管脚功能复用时的优先 级见右表,高优先级接管管 脚时,对低优先级模块会产 生杂乱信号,因此切换前应 先停止不使用的功能。 1、PTA5作为只能输入管脚 而言,输入电压不能超过 VDD。 2、IIC使用的端口可以通过 设置SOPT2 寄存器中的 IICPS位重新定位到PTB6和 PTB7,复位时缺省使用 PTA2 and PTA3。 3、如果ACMP和ADC被同 时使能,管脚PTA0和PTA1 可同时使用。
管脚及其功能
6〉 管脚控制寄存器
位于高页面的管脚控制寄存器,可以独立设置每个管 脚的输出驱动强度、输出信号变化速度、输入脚的内部 上拉允许等。内部上拉的设置有些时候自动失效,比如 管脚设为输出、管脚被外设使用、管脚作为模拟电路使 用等。如果管脚被用于键盘中断KBI模块,,并设置上升 沿触发,则允许上拉时实际是配置了下拉电阻。 对输出管脚设置了输出变化速度控制后,可以减少 EMC辐射,变化速度控制对输入脚无效。 输出管脚的输出驱动强度控制,可以选择更大的驱 动电流,虽然每个输出管脚都可以设置成大电流驱动, 但总电流不能超出芯片的工作范围。同时大驱动电流对 EMC辐射也会有一定影响。
• EPROM
EPROM(Erasable Programmable ROM,可擦除可编 程ROM)芯片可重复擦除和写入,。EPROM芯片在其正 面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以 看到其内部的集成电路, 紫外线透过该孔照射内部芯片 就可以擦除其内的数据,完成芯片擦除的操作要用到 EPROM擦除器。EPROM内资料的写入要用专用的编程 器,并且往芯片中写 内容时必须要加一定的编程电压( VPP=12—24V,随不同的芯片型号而定)。EPROM的型 号是以27开头的,如27C020(8*256K)是一片 2M Bits容 量的EPROM芯片。EPROM芯片在写入资料后,还要以 不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线 照射而使资料受损

飞思卡尔QG8实验教程

飞思卡尔QG8实验教程

第一章基础理论1.1 单片机程序设计与应用系统开发过程单片机的行为是受程序控制的,因此开发与使用单片机必然会遇到程序设计的问题,单片机设计是一个硬件与软件结合的问题,而其软件设计的工作往往占有更多的成分。

一个完整的嵌入式系统开发过程,除了硬件电路的设计外,软件工作包括程序编辑、汇编或编译、程序下载、程序调试、脱机验证等过程。

程序的编辑就是按照一定的格式,采用汇编或者C等高级语言进行编写。

早期的单片机程序设计在DOS环境下符合一定的格式编辑,然后采用一个合适的软件汇编,生成二进制等CPU能识别的目标代码,将单片机(内带程序存储器的情形)或程序存储器放入编程器,编程器通过串口或USB等接口与PC机相连,将PC机存放的CPU能识别的代码下载到单片机或程序存储器中。

图1-1是一个简单的说明。

图1-1 程序设计过程采用以上方式进行开发的情形下,单片机必须是能从电路板上取下来,这对贴片封装的单片机就无能为力了。

此时为了能在线仿真调试,需要昂贵的仿真头和仿真电缆与软件,而且几乎没有仿真器能做到100%的功能仿真,甚至有的问题正是来自于仿真器。

随着技术的发展,采用ISP技术,只要在目标电路板上预留一个接口,通过一个很小的下载器,与PC 机串、并口或USB口相连,就可以进行程序的调试与下载,尤其是有的单片机具有JTAG接口,下载调试更加方便,调试尽可能少占用单片机资源,更有甚者,像freescale的单片机,内置背景调试控制器(BDC ,Background Debug Controller),支持一线ISP和程序调试。

目前程序开发需要的各种软件,如编辑、汇编、编译、链接、调试、下载等都集成到一个环境下(集成开发环境IDE),这些开发环境有的是针对某种单片机,由单片机厂商提供,有的则比较通用一些,这些开发环境如Silicon Laboratories,AVR Studio,Keil uVision,Freescale CodeWarrior等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章 搭建实验环境 1、 实验电路板及下载器实物图片 2、 实验电路图 本实验图包含两大部分,分别是CPU.SCH和实验资源.SCH。CPU采用飞思卡尔8位单片机MC9S08JM60CLD,(电路图介绍)

图1-3 实验资源部分电路

图1-4 LCD串口1602液晶电路

图1-5 RS232接口电路 图1-6 数码管显示电路

图1-7 发光管、ad转换以及按键电路

图1-8 3、 集成开发软件环境的建立 1〉运行文件CW_MCU_V6_3_SE.EXE,在电脑C盘安装飞思卡尔8位(及简化32位)单片机集成开发环境codewarrior6.3版本

2〉运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program Files\pgo\USBDM 4.7.0,在这个目录下 a>C:\Program Files\pgo\USBDM 4.7.0\FlashImages\JMxx下的文

件USBDM_JMxxCLD_V4.sx是下载器的固件文件; b>C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers下有下载器的usb驱动.因此在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动安装位置到以上目录即可。

3〉运行USBDM_4_7_0i_Win之后,还会在目录: C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.3\prog\gdi下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior集成开发环境下对usb下载器的调试、下载的支持。

4、 C语言编程基础 第二章 LED闪烁程序编写过程 1、 新建工程 运行单片机集成开发环境codewarrior IDE 出现如下界面  Create New Project :创建一个新项目工程  Load Example Project :加载一个示例工程  Load Previous Project :加载以前创建过的工程  Run Getting started Tutorial:运行CodeWarrior软件帮助文档  Start Using CodeWarrior: 立刻使用CodeWarrior 点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection窗口可以选择最后一个开源下载器HCS08 Open Source BDM。

下一步后出现编程语言选择和指定项目名称以及存放位置界面 选择C语言,项目名称就写“LED闪烁”,保存位置自己决定,但要记住。 后面有些选项就暂时跳过,选择“完成”后,并将文件夹展开的样子如下:

点击“make”快捷按钮正确编译后,左边的钩钩全部消失,同时在Code和Data列出现了相关的代码和数据量。 2、 修改主文件并下载运行 在左侧双击mian.c文件,打开该文件的编辑界面,修改文件直到下面模样: 修改完main.c文件后,点击最右边的debug按钮。

出现下载器配置界面,如果没出现说明下载器没有正确安装。选择“5V”是打算让下载器给目标板供电5V。确保其它选项都对后,选择“ok”

#include /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */

void main(void) { // EnableInterrupts; //不开中断,因此将此句去掉了 word i,j; //定义两个word(int)型的变量i和j SOPT1 = 0; //关闭看门狗 PTBDD_PTBDD0 = 1; //设置B0为输出 PTBDD_PTBDD1 = 1; //设置B1为输出

for(;;) { //死循环,类似while(1) PTBD_PTBD0 = 0; //B0输出“0”,点亮D1,见图1-8 PTBD_PTBD1 = 1; //B1输出“1”,D2灭 for(i = 0;i<2000;i++){ //2个for循环嵌套,延时大约半秒 for(j=0;j<100;j++){} } PTBD_PTBD0 = 1; //B0输出“1”,D1灭 PTBD_PTBD1 = 0; //B1输出“0”,D2亮 for(i = 0;i<2000;i++){ //延时 for(j=0;j<100;j++){ } } //__RESET_WATCHDOG();//看门狗已经关闭,不需要喂狗了 } } 出现装载警告

继续“ok”后程序下载到单片机中。在调试界面里点击运行按钮,让程序全速运行后应该看到两个LED交替点亮。

3、 延伸讨论 1〉 在修改主程序main.c的过程中,对寄存器SOPT1、PTBDD_PTBDD0、PTBD_PTBD0的名称问题,对于刚入手者确实有一定难度。由于包含了文件 "derivative.h",该文件又包含了“MC9S08JM60.h”,这是与选用的cpu相关的,建议打开这个cpu相关的头文件仔细阅读,对于B口数据寄存器的定义如下,如果看不懂建议要搞懂C语言的数据结构和联合的用法。关于方向寄存器的定义与此相似。

2〉 关于采用for循环进行延时的问题。首先这种方法很难做到精确的延时,而且对于首次使用这款单片机的人来说,粗略延时都很难估算,这是因为for循环的延时跟系统的总线时钟有关。虽然电路板上焊接了4MHz晶振,但上面的例子并没有用到,用的是内部缺省时钟。内部缺省时钟在不修改参数的情况下,总线时钟是8MHz。如果在主函数死循环前面添加修改时钟的代码,将时钟切换到外部晶振,同时启用内部的PLL锁频环,将下面的代码放在for(;;)死循环之前,将会产生24MHz的总线时钟,重新下载运行后发现LED闪烁的速度明显加快。

/*** PTBD - Port B Data Register; 0x00000002 ***/ typedef union { byte Byte; struct { byte PTBD0 :1; /* Port B Data Register Bit 0 */ byte PTBD1 :1; /* Port B Data Register Bit 1 */ byte PTBD2 :1; /* Port B Data Register Bit 2 */ byte PTBD3 :1; /* Port B Data Register Bit 3 */ byte PTBD4 :1; /* Port B Data Register Bit 4 */ byte PTBD5 :1; /* Port B Data Register Bit 5 */ byte PTBD6 :1; /* Port B Data Register Bit 6 */ byte PTBD7 :1; /* Port B Data Register Bit 7 */ } Bits; } PTBDSTR; extern volatile PTBDSTR _PTBD @0x00000002; #define PTBD _PTBD.Byte #define PTBD_PTBD0 _PTBD.Bits.PTBD0 #define PTBD_PTBD1 _PTBD.Bits.PTBD1 #define PTBD_PTBD2 _PTBD.Bits.PTBD2 #define PTBD_PTBD3 _PTBD.Bits.PTBD3 #define PTBD_PTBD4 _PTBD.Bits.PTBD4 #define PTBD_PTBD5 _PTBD.Bits.PTBD5 #define PTBD_PTBD6 _PTBD.Bits.PTBD6 #define PTBD_PTBD7 _PTBD.Bits.PTBD7 3〉 如果没有硬件,也可以完全采用软件仿真的方法进行程序设计,改动过程如下: a〉首先确保在工程硬件连接下拉中选择第一项“Full Chip Simulation”,如果有硬件,对于自制的开源下载器则应该选择“HCS08 Open Source BDM”

b〉点击“debug”按钮后不会出现下载器配置界面,而是直接进入调试界面,在调试界面选择“Component/Open…”菜单。

在弹出的界面里,双击虚拟可视工具。

MCGC2= 0x36; while(!MCGSC_OSCINIT) ; MCGC1 = 0xB8; while(MCGSC_IREFST); while(MCGSC_CLKST!=2); MCGC1 = 0x88; // RDIV = 2; //0x90; //RDIV = 4 MCGC3 = 0x46; // 24倍频; //0x44;//16倍频 while(!MCGSC_PLLST); while(!MCGSC_LOCK); MCGC1 = 0x08; //切换到PLL 0x10; while(MCGSC_CLKST!=3);

相关文档
最新文档