MC9S12XS128单片机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.MC9S12XS128单片机介绍
2.CodeWarrior IDE 12 应用
MC9S12XS128单片机
• MC9S12XS128(以下简称XS128)是Freescale公 司推出的S12XS系列单片机中的一款增强型16位 单片机,S12XS系列单片机是在S12XE系列基础 上去掉XGate协处理器的单片机,该系列单片机 采用 CPU12X V2内核,可运行在40MHz总线频 率上。不仅在汽车电子、工业控制、中高档机电 产品等应用领域具有广泛的用途,而且在FLASH 存储控制及加密方面呢也有很强的功能。
PWM模块 特点:
1. 它有 8 个独立的输出通道,并且通过编程可控 制其输出波形的周期。 2. 每一个输出通道都有一个精确的计数器。 3. 每一个通道的 PWM 输出使能都可以由编程来控 制。 4. PWM 输出波形的翻转控制可以通过编程来实现。 5. 周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。 6. 8 字节或 16 字节的通道协议。 7. 有4 个时钟源可供选择(A、SA、B、SB),他 们提供了一个宽范围的时钟频率。
ECT初始化程序:
以0通道为例:
void ECT_Init(void) { TIE = 0x00; //通道0~7的使能屏蔽 TIOS = 0x00; // 所有的端口设置成输入捕获模式 TSCR1 = 0x90; // 使能时钟模块,定时器标志位 快速清零,读取数据自动清零 TCTL4_EDG0B = 0; TCTL4_EDG0A = 1; //捕捉 上升沿,0通道 TIE_C0I = 1; // 使能0通道中断,中断服务程序中 读取捕获数 }
ECT模块(增强型定时器模块)
• ECT特点相当于高速的I/O口,由一个16为自由计 数器、8个16为的输入捕捉/输出比较通道、一个 16为脉冲累加器及一个16位的模数递减计算器 (MDC)组成。
ECT初始化
极速挑战中使用了输入捕获(IC)通道,下面介绍IC通道的 初始化。 1. 端口设置成输入捕获模式: 寄存器TIOS,并使TIOS = 0x00; 2.设定自由计数器溢出中断及分频系数 寄存器存器为TSCR1,使TSCR1=0x09; 4.设置捕获上升沿、下降沿或上升下降沿。 寄存器TCTL3、TCTL4; 5.打开输入捕获中断使能 寄存器:TIE
CodeWarrior新建工程
第三步:进入欢迎界面,点击下一步。然后选择芯 片型号 MC9S12XS128,点击下一步。程序一定 要与单片机型号一直,否则在硬件调试中会出现 错误。
CodeWarrior新建工程
第四步:选择使用的语言,在此选择 C语言,点击 “下一步”。
CodeWarrior新建工程
The end,thank you!
CodeWarrior编译 第十二步:程序输入以后,点击工具栏的 图标 检查程序是否有错,如果有错,会在编 辑框上方提示错误警告,以 为标 志,程序中会随之用红色。检查程序并 修改,直到没有错误为止。
CodeWarrior程序下载 第一步:在上述单片机程序编译的基础上,将编程 器与试验板连接好,编程器下载口用BDM同计算 机相连点击 图标 开始调试(debug),进入 调试仿真状态后会出现如下界面。
AD初始化总结步骤:
1. 内部触发,A/D转换精度; 寄存器为:ATD0CTL1 2.外部触发,AD中断允许; 寄存器为:ATD0CTL2 3.数据对齐方式,采样序列长度 寄存器为:ATD0CTL3 4.采样时间选择位,AD时钟选择; 寄存器为:ATD0CTL4 5.采样通道选择,单/多次采样选择位 寄存器为:ATD0CTL5
MC9S12XS128单片机特点 存储器:128KB FLASH;2KB EEPROM;8KB RAM; A/D:16通道模数转换器;可选8位、10位和12位精度; PWM:8位8通道或16位4通道PWM; 串行口:2个异步串行通讯SCI和2个同步串行设备接口 SPI; CRG时钟和复位发生器:锁相环、看门狗、实时中断; 增强型捕捉定时器; I2C总线; CAN总线:3个1Mbps的CAN总线,兼容CAN2.0 A/B; 背景调试模式(BDM); 封装:LQFP-112和LQFP-80;
极速挑战用到的单片机模块
ADC模块
PWM模块
ECT捕获
ADC模块
ADC:电路里面的模拟信号转换为数字信号的转换 器; 特点: AD时钟频率满足500KHz~2MHz; 16通道模数转换器; 8位数字量,10位数字量,12位数字量转换,最 短时间3us; 外部触发控制; 可选择单次转换模式或连续转换模式;
CodeWarrior程序下载 第二步:出现如下图框,则点击确定;
CodeWarrior程序下载 第三步:接下来出现如下图形,说行程序正在下载 至单片机。
CodeWarrior程序下载 第四步:点击如下图标 ,则程序开始在单片机中 运行,此时可拔出下载线,或直接拔掉下载线, 按下单片机上的复位键,程序也开始运行。
PWM模块 特点:
8. 通过编程可以实现希望的时钟周期。 9. 具有遇到紧急情况关闭程序的功能。 10.每一个通道都可以通过编程实现左对齐输出还是 居中对齐输出。
PWM初始化步骤总结:
1.禁止 PWM Disable PWM 寄存器为:PWME=0; 2.选择时钟 Select clock (prescaler and scale) for the PWM 寄存器为:PWMPRCLK,PWMSCLA,PWMSCLB, PWMCLK 3.选择极性 Select polarity 寄存器为:PWMPOL 4.选择对齐模式 Select center or left aligned mode 寄存器为:PWMCAE 5.对占空比和周期编程 Program duty cycle and period 寄存器为:PWMDTYx, PWMPERx 6.使能 PWM 通道 Enable used PWM channels 寄存器为:PWME
CodeWarrior新建工程
第一步:双击桌面 CodeWarrior IDE 12图标,进入 CodeWarrior IDE 12运用界面。在打开的界面中 点击菜单 File,在其下拉菜单中点击New,新建 数据库文件 。
CodeWarrior新建工程
第二步:新建一个数据库,如图选择第一行,然后 再右面命名 123 (任意命名均可),双击 HC(S)12 New Project Wizard,如下图所 示:
PWM初始化步骤总结: 7.设定PWM周期 PWM Channel Period Registers 寄存器为:PWMPERx; 8.设定占空比 PWM Channel Duty Registers 寄存器为:PWMDTYx; 9.使能PWM Enable PWM 寄存器为:PWME;
PWM初始化实例:
• 第五步:选择调试专家,在此选择“NO” ,点击 “下一步” 。
CodeWarrior新建工程
第六步:界面如下图所示,选择“NO” ,点击 “下一 步” 。
CodeWarrior新建工程
第七步:界面如下图所示,选择” ANSI startup code” ,点击“下一步” 。
CodeWarrior新建工程 第八步:选择有无浮点格式,根据自己情况而定, 本程序在此选择第二选项,点击“下一 步”。
Codewarrior软件
• Codewarrior软件使用大赛中采用Codewarrior 3.1 for HCS12作为推荐的程序编译软件。 "CodeWarrior for S12" 是面向以HC12或S12为 CPU的单片机嵌入式应用开发的软件包。包括集 成开发环境IDE、处理器专家库、全芯片仿真、 可视化参数显示工具、项目工程管理器、C交叉 编译器、汇编器、链接器以及调试器。在 Codewarrior软件中可以使用汇编语言或C语言,以 及两种语言的混合编程。
CodeWarrior新建工程 第九步:界面出现“选择存储模式?”,选择 Banked,点击下一步。
CodeWarrior新建工程 第十步:界面出现“选择硬件连接电缆型号” ,选 择 第一项和最后一项,点击“完成”。
CodeWarrior新建工程 第十一步:进入如下界面,点击左侧 Sources文件 前面的加号,选择主程序中的 Main.c, 双击左键进入,可写入程序。
void PWM_Init() { PWME = 0X00; //禁止PWM输出 PWMCTL = 0Xf0; //通道0/1,2/3,4/5,6/7级联 PWMCLK = 0Xff; //PWM1,PWM3,PWM5时钟源为SA/SB,即级联后时钟源为SA/SB PWMPRCLK = 0X22; // 4分频 PWMPOL = 0Xff; //输出波形开始极性为1 output waveform which high first then low when the duty counter is reached PWMCAE = 0x00; //左对齐输出模式 output left align wavefor PWMSCLA = 0x05; //Clock SA is CLOCKA/(2*PWMSCLA) PWMSCLB = 0x05; //Clock SB is CLOCKB/(2*PWMSCLB) PWMPER45 = 10000; //设定输出周期=通道时钟周期*10000 PWMDTY45 = 5000;//占空比=[(PWMDTY01+1)/(PWMPER01+1)]*100% PWME = 0xff; //使能PWM }
AD初始化实例
void ATD_Init(void) { ATD0CTL1 = 0x20;//内部触发允许、A/D转换精度 ATD0CTL2 = 0x62;//禁止外部触发,快速清零,AD中断允许 ATD0CTL3 = 0x80;//数据对齐方式,采样序列长度 ATD0CTL4 = 0x92;//采样时间选择位,AD时钟选择 ATD0CTL5 = 0x30;//采样通道选择,单/多次采样选择位 ATD0DIEN = 0x00;//禁止数字输入 }
相关文档
最新文档