飞思卡尔培训资料
复位高电平
ZZTI 14
郑 州
飞思卡尔单片机使用
• 官网:
– 飞思卡尔半导体/
• 开发工具 CodeWarrior
– 下载:CW_S12_v5.0_Special(3).exe
– 安装:----
• BDM调试器
首创科技光盘资料
– 安装驱动:USBDMrelease\driver
复位后端口为IO口输入,子系统使能 后,自动变更为专用功能口。
ZZTI 5
郑 州
管 脚 图
ZZTI 6
郑 州
单片机端口配置
ZZTI 7
郑 州
最小系统管脚接线图
ZZTI 8
郑 州
引脚
ZZTI 9
郑 州
常用引脚
ZZTI 10
郑 州
背面焊接
ZZTI 11
郑 州
• 概述
IO口设置
– PORTA,PORTB做IO,T,P,AD功能不变
ZZTI 30
郑 州
PWM模块
• 作用:
– 硬件方法产生PWM,控制电机
U0
ZZTI 31
郑 州
PWM产生原理
• 计数器 • 周期 • 比较值 • 原理:当计数器值=比较值时,电平翻转
计数值 周期
比较值
0
连续增计数方式
连续增减计数方式
ZZTI 32
郑 州
PWM产生
• 起始电平:高
周期
计数值
比较值 0
7
6
5
4
3
2
1
0
• PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
• DDRB
76543210
DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRB0
7
6
5
4
3
2
1
0
位访问方法:例PORTA_PA0
ZZTI 13
郑 州
第一个练习
• 点亮一盏灯 • PB3口 • 输出DDRB=0x0f; 亮灯:PORTB=0x00;
ZZTI 29
郑 州
时钟设置典型程序2
// 80M主频 CLKSEL_PLLSEL=0; //系统时钟=晶振/2 PLLCTL_PLLON=1; //允许锁相环 SYNR =0xc0 | 0x09; REFDV=0x80 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK==1));//等待系统稳定 CLKSEL_PLLSEL =1; //系统时钟=PLLCLK/2
• AB口IO设置
– 输入输出: (1位对应一个端口)
• 方向寄存器A口- DDRA, B口- DDRB
• 0输入,1输出
– 输出时的驱动能力(1位对应一口-RDRIV[1];
• 1全额驱动能力,0缩减(全额/3)驱动能力
– 上拉电阻控制 (1位对应一组端口)
ZZTI 15
郑 州
最小系统板使用
• 电路板 • 电源 • 系统板及插座 • 电阻,LED
ZZTI 16
郑 州
• 运行程序
操作过程
ZZTI 17
郑 州
ZZTI 18
郑 州
ZZTI 19
郑 州
ZZTI 20
郑 州
CodeWarrior
ZZTI 21
郑 州
写程序、编译、连接、下载
ZZTI 22
ZZTI 1
郑 州
飞思卡尔智能车_单片机篇
ZZTI 2
郑 州
飞思卡尔单片机
• 8位单片机
– 51,宏晶,C8051,AVR
• 16位单片机
– 飞思卡尔9S12XS128,ARM,430,DSP2000
最小系统板
BDM调试器
ZZTI 3
郑 州
飞思卡尔单片机
• MC9S12sx128:16位单片机 • 系统时钟:晶振16M,总线时钟可到80M
PWM
ZZTI 33
郑 州
PWM产生原理
• 起始电平:低
周期
计数值
比较值 0
PWM
ZZTI 34
郑 州
PWM模块
• 8路PWM • 8位
ZZTI 35
郑 州
PWM寄存器设置
• PWM允许:1允许,0禁止
• 极性:0起始低,1起始高
• 居中对齐:0左对齐,1居中对齐
• 周期寄存器PWMPERx :8位
– 模块时钟:可对系统时钟分频
• 功能及模块
– IO端口 – PWM – ECT – PIT – ATD – SCI
ZZTI 4
郑 州
端口控制
• 概述
– A、B:通用IO – E: – AD:ATD模块 –K – T:TIM模块 – P:PWM模块 – S:SCI模块 –M
–J
–H
端口作用:IO(输入,输出),功能口
BUSCLK=PLLCLK/2
ZZTI 27
郑 州
SYNR与REFDIV高位
• FVCO=2*FOSC*(SYN+1)/(REF+1)
FVCO
32-48M 48-80M 保留
SYNR[7-4] 0x00
0x40
0x80
80-120M 0xC0
– SYNR =0xc0 | 0x04;
• FREF=FOSC/(REFDIV + 1)
郑 州
ZZTI 23
郑 州
程序调试界面
ZZTI 24
郑 州
效果图
ZZTI 25
郑 州
单片机时钟
ZZTI 26
郑 州
总线时钟频率
• 总线时钟:可编程改变(一般最大80M) – 时钟合成寄存器SYNR低4位 – 时钟分频寄存器REFDV低4位
PLLCLK=2*OSCCLK*(1+SYNR)/(1+REFDV)
• A口-PUCR[0];B口-PUCR[1];
• 1使用,0不使用
ZZTI 12
郑 州
端口的位访问
• PORTA • DDRA
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 76543210
DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA0
• 比较值寄存器PWMDTYx : 8位
ZZTI 36
郑 州
PWM时钟
• 时钟选择
FREF
1-2M
REFDIV[7-4] 0x00
2-6M 0x40
6-12M 0x80
– REFDV=0x80 | 0x01;
>12M 0xC0
ZZTI 28
郑 州
时钟设置典型程序1
// 24M主频 CLKSEL_PLLSEL=0; //系统时钟=晶振/2 PLLCTL_PLLON=1; //允许锁相环 SYNR =0x40 | 0x02; REFDV=0x80 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK==1));//等待系统稳定 CLKSEL_PLLSEL =1; //系统时钟=PLLCLK/2