某培训资料课件_第1页
某培训资料课件_第2页
某培训资料课件_第3页
某培训资料课件_第4页
某培训资料课件_第5页
已阅读5页,还剩90页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ZZTI1郑州飞思卡尔智能车_单片机篇ZZTI2郑州飞思卡尔单片机8位单片机51,宏晶,C8051,AVR16位单片机飞思卡尔9S12XS128,ARM,430,DSP2000最小系统板BDM调试器郑州飞思卡尔单片机MC9S12sx128:16位单片机系统时钟:晶振16M,总线时钟可到80M模块时钟:可对系统时钟分频功能及模块IO端口PWMECTPITATDSCIZZTI3ZZTI4郑州端口控制概述A、B:通用IOE:AD:ATD模块KT:TIM模块P:PWM模块S:SCI模块MJH复位后端口为IO口输入,子系统使能后,自动变更为专用功能口。端口作用:IO(输入,输出),功能口ZZTI5郑州管脚图ZZTI6郑州单片机端口配置ZZTI7郑州最小系统管脚接线图ZZTI8郑州引脚ZZTI9郑州常用引脚ZZTI10郑州背面焊接ZZTI11郑州IO口设置概述PORTA,PORTB做IO,T,P,AD功能不变AB口IO设置输入输出:(1位对应一个端口)方向寄存器A口-DDRA,B口-DDRB0输入,1输出输出时的驱动能力(1位对应一组端口)A口-RDRIV[0];B口-RDRIV[1];1全额驱动能力,0缩减(全额/3)驱动能力上拉电阻控制(1位对应一组端口)A口-PUCR[0];B口-PUCR[1];1使用,0不使用ZZTI12郑州端口的位访问PORTADDRAPORTBDDRBPA7PA6PA5PA4PA3PA2PA1PA076543210DDRA7DDRA6DDRA5DDRA4DDRA3DDRA2DDRA1DDRA076543210PB7PB6PB5PB4PB3PB2PB1PB076543210DDRB7DDRB6DDRB5DDRB4DDRB3DDRB2DDRB1DDRB076543210位访问方法:例PORTA_PA0ZZTI13郑州第一个练习点亮一盏灯PB3口输出DDRB=0x0f;亮灯:PORTB=0x00;复位高电平ZZTI14郑州飞思卡尔单片机使用官网:飞思卡尔半导体/开发工具CodeWarrior下载:CW_S12_v5.0_Special(3).exe安装:----BDM调试器安装驱动:USBDMrelease\driver首创科技光盘资料ZZTI15郑州最小系统板使用电路板电源系统板及插座电阻,LEDZZTI16郑州操作过程运行程序ZZTI17郑州ZZTI18郑州郑州ZZTI19ZZTI20郑州CodeWarriorZZTI21郑州写程序、编译、连接、下载ZZTI22郑州ZZTI23郑州程序调试界面ZZTI24郑州效果图ZZTI25郑州单片机时钟ZZTI26郑州总线时钟频率总线时钟:可编程改变(一般最大80M)时钟合成寄存器SYNR低4位时钟分频寄存器REFDV低4位PLLCLK=2*OSCCLK*(1+SYNR)/(1+REFDV)BUSCLK=PLLCLK/2郑州SYNR与REFDIV高位FVCO=2*FOSC*(SYN+1)/(REF+1)ZZTI27SYNR

=0xc0

|

0x04;FREF=FOSC/(REFDIV

+

1)REFDV=0x80

|

0x01;FVCO32-48M48-80M保留80-120MSYNR[7-4]0x000x400x800xC0FREF1-2M2-6M6-12M>12MREFDIV[7-4]0x000x400x800xC0ZZTI28郑州时钟设置典型程序1//

24M主频CLKSEL_PLLSEL=0;

//系统时钟=晶振/2PLLCTL_PLLON=1; //允许锁相环SYNR

=0x40

|

0x02;REFDV=0x80

|

0x01;POSTDIV=0x00;_asm(nop);_asm(nop);while(!(CRGFLG_LOCK==1));//等待系统稳定

CLKSEL_PLLSEL

=1;//系统时钟=PLLCLK/2ZZTI29郑州时钟设置典型程序2//

80M主频CLKSEL_PLLSEL=0;

//系统时钟=晶振/2PLLCTL_PLLON=1; //允许锁相环SYNR

=0xc0

|

0x09;REFDV=0x80

|

0x01;POSTDIV=0x00;_asm(nop);_asm(nop);while(!(CRGFLG_LOCK==1));//等待系统稳定

CLKSEL_PLLSEL

=1;//系统时钟=PLLCLK/2ZZTI30郑州PWM模块作用:硬件方法产生PWM,控制电机U0ZZTI31郑州PWM产生原理计数器周期比较值原理:当计数器值=比较值时,电平翻转连续增计数方式连续增减计数方式计数值比较值0周期ZZTI32郑州PWM产生起始电平:高计数值比较值0周期PWM郑州PWM产生原理起始电平:低ZZTI33计数值比较值0周期PWMZZTI34郑州PWM模块8路PWM8位ZZTI35郑州PWM寄存器设置PWM允许:1允许,0禁止极性:0起始低,1起始高居中对齐:0左对齐,1居中对齐周期寄存器PWMPERx

:8位比较值寄存器PWMDTYx

:8位ZZTI36郑州PWM时钟时钟选择CLOCKA/B:对总线时钟分频郑州PWM时钟SA与SB由CLOCKA/B分频得到ZZTI37ZZTI38郑州PWM模块级联4路PWM16位ZZTI39郑州PWM级联CONxy=1,表示xy级联,组成16位PWM01,23,45,67级联PWM允许,极性,居中对齐寄存器,PWM输出分别继承1,3,5,7周期寄存器PWMPERxy

:16位比较值寄存器PWMDTYxy

:16位ZZTI40郑州PWM寄存器郑州练习利用1个8位PWM通道,左对齐方式,起始高电平,产生一个频率=10kHz,占空比=1/4的PWM波形。ZZTI41计算:周期=24000000/10000=2400超过8位,分频:2400/256=9.4,16分频周期=2400/16=150比较值:150/4=37T=100us郑州寄存器设置PP0通道:PWME

_PWME0=1左对齐:PWMCAE_CAE0=0;极性起始高电平:PWMPOL

_PPOL0=1;时钟选择:PWMCLK

_PCLK0=0,CLKAA分频1/16:PWMPRCLK

_PCKA=4周期:PWMPER0=150比较值:PWMDTY0=37ZZTI42ZZTI43郑州程序PWME=1;//PP0通道:PWMCAE=0;//左对齐:PWMPOL=0;//极性起始高电平:PWMCLK=0;//时钟选择,CLKAPWMPRCLK=0x04;//A分频1/16:PWMPER0=150;//周期:PWMDTY0=37;//比较值:两种寄存器设置方法所有寄存器定义可查MC9S12XS128.H继续练习:使用级联PWM生成PWM波形,50HzZZTI44郑州单片机中断void

mian(){初始化For(;;){后台程序。。。}}中断程序中断程序1中断程序2中断程序3特定事件1

特定事件2

特定事件3开中断

清中断标记特定事件发生Void

interrupt

中断号程序名(){。。。。。。}ZZTI45郑州郑州中断程序定位一般情况下,中断程序必须定位于non-banked区域,通过使用#pragmaCODE_SEGNON_BANKED可以把中断程序定位于non-banked区域,同时你必须确保

sectionNON_BANKED不能出现在.prm文件中。在中断程序的末尾,你需要添加#pragma

CODE_SEG

DEFAULT,否则的话,后面的函数也会被定位在non-banked区域。也即,中断服务程序必须被#pragma

CODE_SEGNON_BANKED与#pragma

CODE_SEG

DEFAULT包围。ZZTI46#pragma

CODE_SEG

NON_BANKEDvoid

interrupt

中断号中断程序名(){中断程序代码}#pragma

CODE_SEG

DEFAULTZZTI47郑州TIM模块

ECT模块输入捕捉比较输出16位脉冲累加器参考:/view/7312f7fd700abb68a982fb17.htmlZZTI48郑州TIM时钟和定时器时钟分频定时器使能0停止1使能计数器TCNT原理使能后从0-0xFFFF-0-0xFFFF循环计数郑州TIM时钟和定时器当PRTN=1,定时器由PTPSR精密分频ZZTI49郑州TIM输入捕捉IC捕捉跳变沿,跳变时刻装入寄存器通道功能选择0输入捕捉1输出比较边沿设置8组跳变时刻保存TC0-TC7ZZTI50ZZTI51郑州TIM输出比较OC输出比较设定一个值[16],当计数器值=该值时,做特定输出通道功能选择0输入捕捉1输出比较比较值:TC0-7比较动作8组TC=TCNT+TZZTI52郑州TIM输出比较OC输出比较引脚断路寄存器OCPDOCPDx=0,允许该通道上输出比较动作在该通道产生;OCPDx=1,禁止该通道输出比较动作在该通道产生,

但输出比较标志位仍然置位。即只与输出引脚断开连接。ZZTI53郑州OC之强制比较与OC7控制ZZTI54郑州IC-OC中断中断允许(捕捉中断和比较中断)0禁止1允许中断标记中断号8-15对应0-7通道定时器溢出中断允许中断号16定时器溢出中断标记ZZTI55郑州16位脉冲累加器对外部IC7脉冲进行计数,结果在PACNT中使用使能PAEN=1,该位不受TEN影响PAMOD=0事件计数模式PEDGE=0:PT7下降沿计数PEDGE=1:PT7上升沿计数PAMOD=1门控计时累加模式PEDGE=0:高电平计时;1:低电平计时PAOVI溢出中断允许位PAI边沿中断允许位中断标志寄存器,中断号17,18ZZTI56郑州16位脉冲累加器的时钟时钟设置PCLK:预分频因子定义的TIM时钟。PACLK:总线时钟64分频PCLKZZTI57郑州TIM寄存器ZZTI58郑州TIM寄存器ZZTI59郑州PIT模块4个24位定时器(递减计数)8位时基+16位定时器构成参考:/view/76c85703de80d4d8d15a4f9f.htmlZZTI60郑州PIT寄存器PITCFLMTPITCFLMT_PITE=1;PIT模块使能PITCEPITCE_PCEx=1;选择通道使能,x=0,1,2,3PITMUXPITMUX_PMUXx=0;通道x选择时基0,1-时基1ZZTI61郑州PIT寄存器PITMTLD0,PITMTLD18位定时器初值PITLD0,PITLD1,PITLD2,PITLD316位定时器初值ZZTI62郑州PIT定时器初值装载正常,当计数器下溢后,装载新的计数器值。PFLMTx=1,立即装载8位计数器值。当PFLTx=1,立即装载16位计数器值。ZZTI63郑州PIT中断PITINTEPITINTE

_PINTEx=1;使能下溢中断PITTFPITTF_PTFx=1;清除对应通道中断标志(写1)保险使用方法,开通多路PIT中断时PITTF=0x01;PITTF=0x02;PITTF=0x04;PITTF=0x08;ZZTI64郑州PIT设置及中断使用步骤先关闭PIT设置PIT寄存器使能PIT模块如果某路PIT使能了中断,必须有中断函数PIT对应中断号PIT0-66,PIT1-67,PIT2-68,PIT3-69ZZTI65郑州PIT寄存器ZZTI66郑州练习使用IC捕获PWM边沿,计算PWM周期。使用IC捕获PWM边沿,在中断中控制B口电平,使灯1秒闪烁。使用PIT编写PWM输出100Hz方波使用PIT模块计时24000000/100=240000=0x03a980使用PB口输出ZZTI67郑州ATD参考:/view/1a79024f767f5acfa1c7cd75.html模拟量数字量ZZTI68郑州ATD原理ZZTI69郑州ATD原理结果寄存器0结果寄存器1结果寄存器2结果寄存器3结果寄存器4结果寄存器5结果寄存器6结果寄存器7AN0AN1AN2AN3AN4AN5AN6AN7采样保持AD转换AD时钟总线时钟分频产生中断保存结果中断标志程序外部信号启动ADZZTI70郑州ATD时钟及采样ATD0CTL4ATD时钟:ATD采样时间ATD0CTL11:采样前放电0:不放电SMP[7-5] PRS[4-0]SMP_DIS[4]ZZTI71郑州ATD采样精度、结果保存格式ATD0CTL1ATD0CTL30左对齐1右对齐SRES[6-5]DJM[7]ZZTI72郑州ATD转换通道选择通道模式ATD0CTL50单通道,1多通道开始通道ATD0CTL5转换序列长度ATD0CTL3MULT[4]CDCCCBCAS8CS4CS2CS1CZZTI73郑州转换序列折返多通道采样时,一个序列中多次采样某通道。WRAP位决定在转换完某通道后折回到AN0通道。ZZTI74郑州转换模式与转换启动ATD0CTL50单次转换1连续转换对ATD0CTL5写会启动一个转换队列也可通过外部信号启动对ATD寄存器写一般会终止当前转换队列SCAN[5]ZZTI75郑州ATD转换完成与中断转换完成标记ATD0STAT01队列转换完成该标记可查询AD完成中断允许ATD0CTL20禁止中断1允许中断,开中断必须有中断程序AD中断号22SCF[7]ASCIE[1]郑州ATD结果保存结果寄存器ATD0DRxATD0CTL31循环保存0固定保存第一个结果保存在ATD0DR0后面结果顺序存放FIFO[2]ZZTI76郑州外部触发ATD可固定采样时间,便于PID调节ATD0CTL2外部触发使能ETGIGE0禁止外部触发1允许外部触发外部触发配置ETRIGLE[4]ETRIGP[3]ETRIGE[2]ZZTI77ZZTI78郑州外部触发ATD信号通道ATD0CTL1ETRIGSEL[7]ETRIGCH[3-0]ZZTI79郑州ATD其它问题特殊通道VRH,VRL,(VRH+VRL)/2ATD的比较功能当AD值大于等于或小于等于某预定值时,产生一个中断。建议使用硬件比较器替代,如电池电压检测。ZZTI80郑州ATD寄存器ZZTI81郑州练习对一个电压值进行采样使用软件启动使用外部信号启动外部信号可使用PWM产生在中断程序中读取结果ZZTI82郑州程序技巧程序构成主模块子模块1相似程序放在一个子模块上子模块2不常修改的程序放在子模块上代码错行编写for,if,switch等语句即{的下一行代码向后错一个TAB,}向前提一个TAB代码注释变量起名把子模块添加进工程在主程序中声明子模块中的程序在主程序中条用子程序ZZTI83郑州变量值查看简单技巧在窗口内双击模块变量,可显示其值单击Data1或Data2显示区,在对话框中键入模块变量名,即可查看其值。ZZTI84郑州程序断点设置在调试窗口,选中代码行,右击后添加断点,也可删除断点。程序运行至断点处停止,把鼠标悬停在某变量上,即可查看其值。F10单步运行ZZTI85郑州SCI硬件连接单片机-单片机单片机-PC机单片机电平转换单片机单片机232电平转换USB接口转换PCZZTI86郑州SCI模块ZZTI87郑州SCI基本使用•数据格式:8位,无校验发送接收初始化:波特率设置,SCI寄存器设置发送空闲时写数据到数据寄存器接收完成后从数据寄存器读数据一般使用查询发送:查询空闲时写数据发送中断接收:接收中断时读取数据郑州波特率设置SCI0BDH-L:13bitSBRZZTI88常用波

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论