飞思卡尔k系列 ftm模块详解

飞思卡尔k系列 ftm模块详解
飞思卡尔k系列 ftm模块详解

1.5FTM模块

1.5.1 FTM模块简介

FTM模块是一个多功能定时器模块,主要功能有,PWM输出、输入捕捉、输出比较、定时中断、脉冲加减计数、脉冲周期脉宽测量。在K10中,共有FTM0,FTM1,FTM2三个独立的FTM模块。其中FTM0有8个通道,可用于电机或舵机的PWM输出,但不具备正交解码功能,也就是对旋转编码器输入的正反向计数功能。而FTM1和FTM2则具备正交解码功能,但是FTM1和FTM2各只有两个通道。FTM模块的时间基准来自一个16位的计数器,该计数器的值可读取,即可作为无符号数对待,也可作为有符号数的补码对待。

1.FTM模块特性

●时钟源可选择,FTM的时钟源可以来自系统时钟或外部时钟。可对时钟分频,分频

比为1,2,4,8,16,32,64,128。

●FTM的一个16位计数器,该计数器可设置为自由运行或由用户设置起始和结束值,

可递增计数也可递减计数。

●FTM的每个通道都可以设置为输入捕捉、输出比较或边沿对其的PWM输出。

●在输入捕捉模式下,可捕捉上升沿、下降沿或两个边沿都捕捉,有些通道可选择输

入滤波器。

●在输出比较模式下,在比较成功时可选择输出信号置位、清零或翻转。

●所有的通道都可以设置为中心对齐的PWM输出模式。

●每对通道都可以级联以产生PWM信号。

●FTM的通道可成对工作在相同输出或互补输出,也可各通道独立输出。

●当通道成对互补输出时可使用死区插入。

●可产生触发信号。

●软件控制PWM输出。

●最多4个全局错误控制使用的错误输入。

●每个通道的极性可设置。

●每个通道都可产生中断。

●错误条件发生时也可产生中断。

●同步载入或写入带缓冲的FTM寄存器。

●关键寄存器有写保护功能。

●和HS08系里的TPM兼容。

●对于维持在低电平或高电平的信号也可进行输入捕捉的测试。

●双边沿捕捉可用于脉冲或周期信号宽度测量。

2.FTM模块框图

由图可见,FTM模块的核心是一个16位计数器,该计数器的时钟源可以选择,如果我们选择由FTM来实现PWM,输入捕捉,或者输出比较,定时中断,脉宽测量等功能,则一般选择system clock。这个时钟实际上就是我们前面提到的MCG模块输出的MCGOUTCLK,再由SIM模块分配后得到的Bus Clock。如果我们选择由FTM实现对外部脉冲的计数,也可选择外部时钟,如果是外部编码器输入的AB相脉冲,用于电机正反转测速,则可以使用PHA 和PHB输入,由计数器自动加减计数。

16位计数器FTM Counter每个FTM模块一个,该FTM模块的所有通道共用这一个计数器。计数器的初始值(CNTIN)和结束值(MOD)可以设置。计数器的计数方式有三种,一种是递增计数,计数器从初始值开始累加,直到结束值,在下一个时钟周期,又回到初始值,循环往复。第二种是先加后减计数,计数器从初始值开始累加,到结束值后,从下一个时钟开始递减,一直减到初始值,然后再次开始累加,循环往复运行。第三种是正交解码模式,即对外部输入的AB相脉冲计数,由FTM根据A相和B相的相位自动递增或递减计数。在这里需要注意,FTM0不具备第三种计数模式,只有FTM1和FTM2可以使用正交解码。

1.5.2 FTM的寄存器

对FTM模块的设置和访问时都是通过FTM的寄存器来完成,下面我们就开始介绍FTM 相关的寄存器。注意,FTM模块有很多寄存器的写入操作并不能立刻更新该寄存器的值,而是先写到一个缓冲器(Buffer)里,由系统在设置好的载入点(load point),再配合软件或硬件触发的方式来从缓冲器更新寄存器中的值的,后面我们介绍到这些寄存器的时候会指出。另外,FTM的很多寄存器具有写保护功能,需要先把写保护打开才可以写入,这点也在后面的介绍中提到。

1.状态和控制寄存器(FTMx_SC)

该寄存器每个FTM模块一个,里面包含计数器溢出标志,溢出中断允许设置,计数模式设置,时钟源选择和分频设置,具体如下。

●TOF:定时器溢出标志,当FTM模块计数器到达MOD寄存器中设置的结束值时,无论

是递增计数还是先加后减计数,在计数值从结束值变化到下一个值时,该位置1。当读取该寄存器,且该位置1时,写0可清除该标志,写1则没有效果。

●TOIE:定时器溢出中断使能。当TOF置1时是否触发中断。对外界固定时钟计数配合

TOF和TOIE则可以实现定时中断的功能。

TOIE=0:定时器溢出中断禁止;

TOIE=1:定时器溢出中断使能。

●CPWMS:中心对齐PWM选择。这一位实际是设置计数器加减计数,所谓PWM中心对

齐模式就是指的计数器先加后减。该位平时出于写保护状态,只有在MODE[WPDIS] = 1时才可被写入。

CPWMS=0:计数器加法计数;

CPWMS=1:计数器先加后减计数。

●CLKS:时钟源选择。选择FTM计数器的时钟来源。该位平时写保护,只有在MODE[WPDIS]

= 1时才可写入。

CLKS=00:未选择时钟;

CLKS=01:系统时钟(推荐,即Bus Clock);

CLKS=10:定频时钟;

CLKS=11:外部时钟。

●PS:预分频设置。设置对CLK选中的时钟预分频。该位平时写保护,只有在MODE[WPDIS]

= 1时才可写入。

预分频比=2^PS,最大128分频。

2.计数器FTMx_CNT

该寄存器包含FTM计数器的值。复位时该寄存器清0,向该寄存器写入任何值将会使该寄存器回到初始设定值。CNTIN中保存的是初始设定值。

BDM模式下,FTM计数器被冻结。

3.模数寄存器FTMx_MOD

该寄存器保存FTM计数器的模数,即计数器计数终止值,当计数器到达对应的模数值时,TOF将在下一个时钟到来时置1。此时计数器的值取决于选择的计数器计数方案,默认回到初始值。

写该寄存器的值会先锁存到一个缓冲器里,不会立刻更新,而是和寄存器更新设置有关。

4.通道n状态及控制寄存器(FTMx_CnSC)

这是一个非常重要的寄存器,每个通道都有一个CnSC寄存器。该寄存器中包含通道中断标志位、中断使能控制位、通道设置以及引脚功能设置。

●CHF:通道标志,当对应通道设定事件发生时该位由硬件置1。所谓通道设定事件有两种,

一种是输入捕捉模式下,捕捉到设定的边沿时;另一种是输出比较模式下,FTM计数值

变化到和通道n的设定值相等时。当通道的CHF置1时,读取CnSC寄存器并对CHF位写0可清除该位,写1无效。如果该位置1,在对CSC寄存器进行读写操作时,新的事件发生,则CHF位仍保持未清除的状态。在这种情况下,新发生的事件的中断请求不会丢失。

CHF=0:通道事件未发生;

CHF=1:发生通道事件。

●CHIE:通道中断使能。该位用于设置CHF置位时是否发出中断请求。

CHIE=0:通道中断禁止;

CHIE=1:通道中断使能。

●MSB、MSA:通道模式选择,只有在MODE[WPDIS] = 1的情况下才可写入。

当DECAPEN=0,也就是不用双边沿捕捉,双边沿捕捉一般用于捕捉外部脉冲用于测量脉冲的周期和脉宽时用。

MSB:MSA=00:输入捕捉;

MSB:MSA=01:输出比较;

MSB:MSA=1x:边沿对齐PWM。

当DECAPEN=1,即使用双边沿捕捉时。

MSB:MSA=X0:单次捕捉模式;

MSB:MSA=X1:连续捕捉模式。

●ELSB、ELSA:边沿或电平选择。参看下表:

模式、边沿和电平选择,在下表中,有些设置位还没有提到,这里提前介绍一下。

DECAPEN用于设置双边沿捕捉,主要用于测外部脉冲的周期和脉宽时用到;

COMBINE用于设置联合模式,用于两路联合输出PWM,可用于非对称PWM波形输出,或者两通道互补输出,使用联合方式输出PWM的方式在有些桥式电机驱动的电路中,可以很方便的实现电机正反转切换,也可以用软件实现死区插入,如果不用联合模式,该位置0即可;

CPWMS在FTMx_SC寄存器中已经介绍,具体参看前面的介绍。有关MSnB:MSnA和

DMA=0:DMA禁止;

DMA=1:DMA使能。

5.通道n计数值寄存器((FTMx_CnV)

每个通道都有一个CnV寄存器,在输入捕捉模式下,当捕捉到设置的边沿时,此时FTM 计数器的值自动保存到CnV寄存器中,该值可用于反映捕捉事件发生的时刻。在输出模式下CnV寄存器保存输出匹配值,该值用于和FTM计数器的值进行比较,当相等时,则比较成功。

在输入捕捉、捕捉测试和双边沿捕捉模式下,任何对该寄存器的写入操作都无效。在输出模式下,写入该寄存器的值会先锁存到缓冲器内,何时更新和寄存器更新设置有关。

6.计数器初始值寄存器(FTMx_CNTIN)

该寄存器保存FTM计数器的初始值。写入该寄存器的值会预先锁存在缓冲器内。在选择时钟前,先设置该寄存器以初始化FTM计数器,否则,计数器会默认从0开始计数。

7.捕捉和比较状态寄存器(FTMx_STATUS)

该寄存器中包含了每个通道的FTMx_CSC寄存器中的CHnF位的拷贝以方便编程。这样一次就可以读出一个FTM模块的所有通道的标志位,读取后,写0清除。

8.特性模式选择寄存器(FTMx_MODE)

该寄存器主要设置错误中断、错误控制、捕捉测试模式、PWM同步、写保护、通道输出初始化、FTM增强特性使能。这些控制和所有通道都有关。

●FAULTIE:错误中断使能,当错误控制使能时,在检测到错误时是否触发中断。

FAULTIE=0:错误控制中断禁止;

FAULTIE=1:错误控制中断使能。

●FAULTM:定义错误控制模式,该寄存器写保护,只有当MODE[WPDIS] = 1时可写入。

FAULTM=00:所有通道错误控制功能禁止;

FAULTM=01:偶数通道错误控制使能,且手动清除错误;

FAULTM=10:所有通道错误控制使能,且手动清除错误;

FAULTM=11:所有通道错误控制使能,且自动清除错误。

●CAPTEST:捕捉测试使能,该位写保护,只有当MODE[WPDIS] = 1时可写入。

CAPTEST=0:输入捕捉测试禁止;

CAPTEST=0:输入捕捉测试禁止。

●PWMSYNC:PWM同步模式,所谓PWM同步实际上就是如何将某些寄存器的值从Buffer

中更新的一种机制。

选择MOD,CnV,OUTMASK,和FTM counter几个寄存器同步时使用的触发器,可选择软件触发或硬件触发。触发就是允许计数器在到达下一个载入点时更新这些寄存器的值的信号。软件触发通过编程实现,硬件触发通过外部脉冲实现。

PWMSYNC=0:MOD,CnV,OUTMASK,和FTM counter几个寄存器的同步可以选择软件触发或硬件触发,没有限制。

PWMSYNC=1:MOD,CnV的同步只可以选择软件触发,OUTMASK,和FTM counter的同步只可以选择硬件触发。

●WPDIS:写保护禁止,该位和WPEN(写保护使能)相反,当WPEN写1时,WPDIS被

清0

WPDIS=0:写保护使能,被写保护的位不可被写入;

WPDIS=1:写保护禁止,被写保护的位可写入。

●INIT:通道输出初始化,当对INIT写1时,通道的输出初始化,根据每个通道的OUTINIT

寄存器而定。对该位写0无效,任何时候读取该位都为0。

●FTMEN:FTM使能,该位写保护,只有当MODE[WPDIS] = 1时可写入。

FTMEN=0:只有和S08的TPM兼容的寄存器可以使用,这时一般的输入捕捉和输出比较,各通道独立输出PWM都可以使用,且不需要选择PWM同步方式;

FTMEN=1:所有寄存器都可以使用。如果使用通道联合输出PWM,双边沿捕捉,AB相计数等增强的功能,则需要设置FTMEN=1,这时也必须规划好使用的到的一些寄存器的更新方式,即PWM同步方式和软硬件触发同步的方式。

9.同步寄存器(FTMx_SYNC)

该寄存器用于设置PWM同步。一个同步事件能够执行MOD,CV,和OUTMASK 寄存器的同步,即使用缓冲器中的值更新这几个寄存器,这时FTM 计数器也可以重新初始化。当FTMEN=1时,该寄存器必须合理设置。

●SWSYNC:PWM同步软件触发。当对该位写1时,软件触发发生,即发生软件触发事件,

当计数器运行到下一个载入点时,同步发生,对应寄存器更新,完毕后SWSYNC会自动清0。

●TRIG2:PWM同步硬件触发器2。使能硬件触发器2触发PWM同步,触发器2输入引

脚上出现上升沿时硬件触发。

TRIG2=0:触发器禁止;

TRIG2=1:触发器使能。

●TRIG1:PWM同步硬件触发器1。使能硬件触发器1触发PWM同步,触发器1输入引

脚上出现上升沿时硬件触发。

TRIG1=0:触发器禁止;

TRIG1=1:触发器使能。

●TRIG0:PWM同步硬件触发器0。使能硬件触发器0触发PWM同步,触发器0输入引

脚上出现上升沿时硬件触发。

TRIG0=0:触发器禁止;

TRIG0=1:触发器使能。

注意:软件触发,即向SWSYNC位写1,和通过TRIG0:3实现的硬件触发,存在潜在的冲突。当SYNCMODE = 0时,如果同时使用硬件触发和软件触发就可能发生。建议不要同时使用软件触发和硬件触发,一般情况下,当我们使用FTM的一些增强功能时,我们使用软件触发即可。

●SYNCHOM:输出屏蔽同步,选择OUTMASK寄存器是否从缓冲器里更新。

SYNCHOM=0:在系统时钟上升沿时,OUTMASK寄存器从缓冲器中更新自身值;

SYNCHOM=1:PWM同步时,OUTMASK寄存器从缓冲器中更新自身值。

●RENINT:FTM计数器重新初始化。决定当选择的触发器触发同步时,FTM计数器是否

重新初始化。

RENINT=0:FTM计数器继续计数;

RENINT=1:当触发事件发生时,FTM计数器回到设定的初值。

●CNTMAX:最大载入点使能,当触发事件发生后,直到FTM计数器达到莫一个值时,这

一时刻才会发生更新寄存器值的同步,这一时刻就是载入点。

当该位为1时,当FTM计数器达到最大值时,即MOD值,这一时刻将作为一个同步的载入点。

●CNTMIN:最小装载点使能

当该位为1时,当FTM计数器达到最小值时,即CNTIN值,这一时刻将作为一个同步的载入点。

10.通道输出初始状态(FTMx_OUTINIT)

●CHxOI:通道x输出初始值。

CHxOI=0:初始值为0;

CHxOI=1:初始值为1。

11.输出屏蔽寄存器(FTMx_OUTMASK)

●CHxOM:通道x输出屏蔽。

CHxOM=0:该通道输出正常;

CHxOM=1:该通道输出屏蔽。

12.通道联合功能寄存器(FTMx_COMBINE)

该寄存器包含:错误控制、同步、死区插入、双边沿捕捉模式、补偿、双通道联合等功能。该寄存器在使用双通道联合功能时,主要是非对称PWM输出,双通道互补输出,双边沿捕捉等功能时需要合理设置。

●FAULTENn:使能通道2n和2n+1的错误控制,该位写保护,只有当MODE[WPDIS] = 1

时可写入。

FAULTENn=0:通道2n和2n+1的错误控制禁止;

FAULTENn=1:通道2n和2n+1的错误控制使能。

●SYNCENn:使能寄存器C(2n)V和C(2n+1)V的PWM同步,即这两个寄存器能否被触发事

件触发更新。该位写保护,只有当MODE[WPDIS] = 1时可写入。

SYNCENn=0:寄存器C(2n)V和C(2n+1)V的PWM同步禁止;

SYNCENn=·:寄存器C(2n)V和C(2n+1)V的PWM同步使能。

●DTENn:死区使能。使能通道2n和2n+1的死区插入。死区插入在双通道互补输入控制

桥式电机驱动电路时,防止同侧开关管同时导通的危险,具体插入死区的时间则由FTMx_DEADTIME寄存器设定。该位写保护,只有当MODE[WPDIS] = 1时可写入。

DTENn=0:通道2n和2n+1的死区插入功能禁止;

DTENn=1:通道2n和2n+1的死区插入功能使能。

●DECAPn:双边沿捕捉。使能通道2n和2n+1的双边沿捕捉。该位只有当FTMEN=1和

DECAPEN=1时有效。

DECAPn=0:通道2n和2n+1的双边沿捕捉禁止;

DECAPn=1:通道2n和2n+1的双边沿捕捉使能。

●COMPn:使能通道2n和2n+1的互补模式,即两个通道波形相反。该位写保护,只有

当MODE[WPDIS] = 1时可写入。

COMPn=0:通道2n和2n+1的互补模式禁止;

COMPn=1:通道2n和2n+1的互补模式使能。

●COBINEn:通道2n和2n+1联合设置。只有COMBINEn=1,才可使用上面那些位设置的

功能。该位写保护,只有当MODE[WPDIS] = 1时可写入。

COBINEn=0:通道2n和2n+1独立使用;

COBINEn=1:通道2n和2n+1联合使用。

13.死区插入控制寄存器(FTMx_DEADTIME)

该寄存器设置死区时间分频系数和死区值。所有的FTM通道都使用这个时钟分频和死区值。死区插入的目的时在驱动全桥电路时,防止同侧半桥同时导通。只有双通道联合互补输出时,且对应的DTENn=1时,设置的死区值才有效。

●DTPS:分频设置。死区时间的定时也是由对BusClock计数实现的,DTPS设定的时对

BusClock分频的设置。

DTPS=0X:分频比为1;

DTPS=10:分频比为4;

DTPS=11:分频比为16。

●DTVAL:DTVAL设置对DTPS分频后的时钟的计数值以确定死区插入的时间。

死区插入的时间=DTPS*DTVAL*总线时钟周期。

14.通道极性寄存器(FTMx_POL)

当各通道的出于非活动状态,给寄存器设置各通道非活动状态下的值。各位都写保护,只有当MODE[WPDIS] = 1时可写入。

15.输入捕捉滤波控制寄存器(FTMx_FILTER)

该寄存器设置输入通道的滤波值,通道4、5、6、7无输入滤波器。

注意,写入该寄存器的值将立刻起作用,而且通道0、1、2、3必须在输入模式下,如设置不当可能造成错过正确的信号。

滤波模式一般只在输入捕捉时使用,当启用滤波功能时,如果输入端发生变化,则滤波器内部的5bit计数器开始累加计数,一旦溢出(溢出值由CHnFVAL[3:0]设定),输入端变化才提交给边沿检测器。如果计数过程中,输入端再次发生相反变化,则计数器会被复位并重新开始计数,这样一些比过滤时间短的脉冲则会被视为干扰且不会提交给边沿计数器,只有在滤波模块计数期间保持稳定的信号才会提交给边沿计数器。

16.正交解码控制和状态寄存器(FTMx_QDCTRL)

正交解码一般用于正反向脉冲计数,由旋转编码器输入A相和B相脉冲,由FTM模块根据相位自动增加或减少。在电机正反转测速时非常有用。

●PHAFLTREN:A相输入滤波使能设置。滤波值由滤波寄存器中的CH0FVAL定义,如果

CH0FVAL=0,滤波也无效。

PHAFLTREN=0:A相输入滤波禁止;

PHAFLTREN=0:A相输入滤波使能。

●PHBFLTREN:B相输入滤波使能设置。滤波值由滤波寄存器中的CH1FVAL定义,如果

CH1FVAL=0,滤波也无效。

PHBFLTREN=0:B相输入滤波禁止;

PHBFLTREN=0:B相输入滤波使能。

●PHAPOL:A相输入极性选择。

PHAPOL=0:普通极性;

PHAPOL=1:反向极性。

●PHBPOL:B相输入极性选择。

PHBPOL=0:普通极性;

PHBPOL=1:反向极性。

●QUADMODE:正交解码模式。

QUADMODE=0:A相和B相编码模式。计数方向由AB相之间的关系决定,计数频率由A相B相输入信号决定。当A相或B相的信号出现跳变,即可触发FTM计数器改变。

在这种模式下,只需要把旋转编码器的AB相输出直接接到FTM的AB相输入即可。;

QUADMODE=1:计数和方向编码模式。B相输入值用于指示计数方向,A相输入用于计数,FTM计数器在A相输入的每个上升沿进行计数,累加或递减由B相电平决定。

●QUADIR:正交解码模式下的FTM计数方向状态位,查询该位可获知当前计数方向。

QUADIR=0:递减计数;

QUADIR=1:递增计数。

●TOFDIR:正交解码模式下FTM计数器溢出方向。在溢出时,查询该位可获知溢出方向。

TOFDIR=0:底部溢出时置1;

TOFDIR=1:顶部溢出时置1。

●QUADEN:正交解码模式使能位。

QUADEN=0:正交解码模式禁止;

QUADEN=1:正交解码模式使能。

17.设置寄存器(FTMx_CONF)

●GTBEOUT:全局时间基准输出,使能全局时间基准信号给其它FTM

●GTBEEN:全局时间基准使能,设置FTM使用一个其它FTM模块产生的外部的全局时间

基准。

●BDMMODE:选择FTM在BDM模式下的行为。

●NUMTOF:设置计数器溢出次数和TOF标志置位次数的比值,NUMTOF=n,n(0~31)

每溢出n+1次,TOF置位一次。

18.同步设置寄存器(FTMx_SYNCONF)

该寄存器主要设置软件触发和硬件触发对于某些寄存器的影响。

●HWSOC:SWOCTRL寄存器的同步是否由硬件触发。

HWSOC=0:SWOCTRL寄存器的同步不由硬件触发;

HWSOC=1:SWOCTRL寄存器的同步由硬件触发。

●HWINVC:INVCTRL寄存器的同步是否由硬件触发。

HWINVC=0:INVCTRL寄存器的同步不由硬件触发;

HWINVC=1:INVCTRL寄存器的同步由硬件触发。

●HWOM:OUTMASK寄存器的同步是否由硬件触发。

HWOM=0:OUTMASK寄存器的同步不由硬件触发;

HWOM=1:OUTMASK寄存器的同步由硬件触发。

●HWWRBUF:MOD,CNTIN,CnV寄存器的同步是否由硬件触发。

HWWRBUF=0:MOD,CNTIN,CnV寄存器的同步不由硬件触发;

HWWRBUF=1:MOD,CNTIN,CnV寄存器的同步由硬件触发。

●HWRETCNT:FTM计数器同步是否由硬件触发。

HWRETCNT=0:FTM计数器同步不由硬件触发;

HWRETCN=1T:FTM计数器同步由硬件触发。

●SWSOC:SWOCTRL寄存器的同步是否由软件触发。

SWSOC=0:SWOCTRL寄存器的同步不由软件触发;

SWSOC=1:SWOCTRL寄存器的同步由软件触发。

●SWINVC:INVCTRL寄存器的同步是否由软件触发。

SWINVC=0:INVCTRL寄存器的同步不由软件触发;

SWINVC=1:INVCTRL寄存器的同步由软件触发。

●SWOM:OUTMASK寄存器的同步是否由软件触发。

SWOM=0:OUTMASK寄存器的同步不由软件触发;

SWOM=1:OUTMASK寄存器的同步由软件触发。

●SWWRBUF:MOD,CNTIN,CnV寄存器的同步是否由软件触发。

SWWRBUF=0:MOD,CNTIN,CnV寄存器的同步不由软件触发;

SWWRBUF=1:MOD,CNTIN,CnV寄存器的同步由软件触发。

●SWRETCNT:FTM计数器同步是否由软件触发。

SWRETCNT=0:FTM计数器同步不由软件触发;

SWRETCN=1T:FTM计数器同步由软件触发。

●SYNCMODE:同步模式

SYNCMODE=0:传统PWM同步方式;

SYNCMODE=1:增强型的PWM同步方式。

●SWOC:SWOCTRL寄存器同步设置。

SWOC=0:SWOCTRL寄存器在系统时钟上升沿更新;

SWOC=1:SWOCTRL寄存器更新由PWM同步完成。

●INVC:INVCTRL寄存器同步设置。

INVC =0:INVCTRL寄存器在系统时钟上升沿更新;

INVC =1:INVCTRL寄存器更新由PWM同步完成。

●CNTINC:CNTIN寄存器同步设置。

CNTINC =0:CNTIN寄存器在系统时钟上升沿更新;

CNTINC =1:CNTIN寄存器更新由PWM同步完成。

●HWTRIGMODE:硬件触发模式。

HWTRIGMODE=0:检测到硬件触发事件时清除TRIGj位;

HWTRIGMODE=1:检测到硬件触发事件时不清除TRIGj位。

19.FTM反相设置寄存器(FTMx_INVCTRL)

该寄存器中的各位设置通道2n和通道2n+1颠倒使用,即n通道成为n+1通道的输出,n+1通道输出n通道的输出。可用于控制电机正反转切换。该功能在双通道联合互补输出时

可用。

●INVnEN:通道2n和通道2n+1切换输出使能。

INVnEN=0:通道2n和通道2n+1各自输出;

INVnEN=1:通道2n和通道2n+1交换输出。

20.FTM软件输出控制寄存器(FTMx_SWOCTRL)

该寄存器设置各通道强制输出高电平或低电平。

CHnOC=1时对应通道n强制输出;

CHnOCV=0:当强制输出时,输出低电平;

CHnOCV=1:当强制输出时,输出高电平。

21.FTMPWM装载寄存器(FTMx_PWMLOAD)

使能PWM的自动载入功能,当FTM计数计数到MOD设定值并变化到下一个值或该通道设置为输出比较且比较成功时,MOD、CNTIN、C(n)V、C(n+1)V载入缓冲器中的值。

●LDOK:载入使能。

●CHnSEL:载入时是否包括通道n

CHnSEL=0:不包括;

CHnSEL=1:包括。

1.5.3 FTM功能详解

1.FTM模块的时钟

FTM模块的核心是一个16位计数器,该计数器的时钟来源可设置(由FTMx_SC寄存器中的CLKS设置),可来自总线时钟(CLKS=01),也可来自MCG模块的MCGFFCLK,对时钟源可进行分频(由FTMx_SC寄存器中的PS设置)。

如果使用固定频率时钟,即fixed frenquency clock,也就是MCGFFCLK,则需要在MCG 模块中设置。MCG模块提供的MCGFFCLK,可以为其它片上周边设备提供时钟,该时钟可由内部慢速参考时钟提供或外部晶振,且由FLL分频后提供。MCGFFCLK由C1_IREFS位设置来自内部32K还是来自外部经过FDIV分频后的时钟,输出到MCGFFCLK还要2分频一次。MCGFFCLK用于局部总线时钟同步,而且不得大于MCGOUTCLK的1/8。且该时钟在MCG处于BLPI模式和STOP模式下无效。

一般情况下,只要不是对外部计数功能,我们都会采用Bus Clock为FTM提供时钟。

2.FTM模块的计数模式

FTM模块在时钟确定后,计数器计数,默认情况下,对分频后输入时钟进行递增无符号计数。计数器初始值由FTMx_CNTIN指定。当一直计数到达FTMx_MOD寄存器的设定值时,TOF置位。计数器回到初始值,循环往复。如下图所示,计数器从0计数到3,循环计数。计数周期=(MOD-CNTIN+1)*时钟周期。

初始值也可是负数,例如CNTIN=0xFFFC(补码-4),MOD=4,则计数器从-4计数到4,循环计数。当CNTIN的最高位,即CNTIN[15]=1时,初始值作为负数对待,否则视为正数。

FTM计数时,建议MOD值必须大于CNTIN值,编程时需注意。如果MOD==CNTIN,则计数值一直保持MOD值,且TOF位一直置1。

当QUADEN=0(非正交解码模式)且CPWMS=0(加法计数)时,计数器为加法计数,如果设置CPWMS=1,则进入先加后减计数模式。(中心对齐PWM必须将该位置1)。

在先加后减计数模式下,假设CNTIN=0,MOD=4,则计数过程如下

在该模式下,计数周期=2*(MOD-CNTIN),当计数值从MOD变为MOD-1时,TOF置位。

如FTMEN=0,此时FTM模块功能等同于S08的TPM模块,此时无论MOD=0或者MOD=0XFFFF,此时计数器为一个自由运行的16位计数器。

如FTMEN=1,且QUADEN=0、CPWMS=0时,此时只有MOD=0xFFFF时,才可作为一个自由运行的计数器。

任何对FTM计数器的写入操作,都会复位计数器,计数器的值重新回到CNTIN指定值。也可以使用FTM的同步功能,让计数器重新回到初值,各通道输出也回到初始值。

FTMx_CONF寄存器中的NUMOF[4:0]可设置TOF置位的频率。默认情况下,即NUMOF[4:0]=0,每个计数周期,TOF置位一次,如果NUMOF=n,(n<32),则每n+1个周期,TOF置位一次。

3.边沿对齐PWM模式

PWM输出实际上利用的就是FTM的输出比较的功能。当QUADEN = 0,DECAPEN = 0,COMBINE= 0,CPWMS = 0,MSnB = 1时,FTM工作在EPWM模式下,即边沿对齐模式。可用于产生舵机和电机的PWM控制信号。在这个模式下,FTM计数器工作方式和计数模式相同,默认为加法计数,计数到MOD值后自动返回CNTIN值。PWM信号的周期和计数器计数周期有关,PWM周期=(MOD-CNTIN+1)*时钟周期。

PWM信号高低电平切换的时刻,则由CnV值决定,当计数器累加计数到CnV值相等时,PWM信号则翻转。直到计数到MOD值,一个周期结束,信号回到初始值。这种模式的原理和输出比较模式是相同的,当比较成功时,也就是FTM计数值=CnV时,CHnF标志也会置1。PWM信号的输出可以时左对齐(信号先高后低)也可以是右对齐(信号先低后高)。左右对齐由ELSnB:ELSnA决定,若ELSnB:ELSnA=10则是左对齐模式,若ELSnB:ELSnA=X1则是右对齐模式。以左对齐为例,高电平持续时间=(CnV-CNTIN)*时钟周期。

在边沿对齐PWM模式中,一般PWM周期不变,通过改变CnV的值以改变占空比,如改变CnV的值,则新的值并不会立刻生效,而是到一个周期结束,FTM计数器从MOD 变为CNTIN时,CnV值才生效。

EPWM例程如下,在该例程中,总线时钟为60MHz,经过FTM分频到3.75MHz,FTM 递增计数,周期10ms,高电平事件1.5ms。使用FTM0_CH3通道,由PTA6引脚输出。

void FTM_Init(void)

{

PORTA_PCR6= PORT_PCR_MUX(3); // 设置引脚A6引脚为FTM0_CH3功能

SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟

FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止

//设置通道0,工作在左边沿对其PWM模式//MSB=1,ELSB:ELSA=10

FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低

FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;

FTM0_C3SC |= FTM_CnSC_MSB_MASK;//MSB=1,模式选择边沿对齐

FTM0_SC=0x0c;//中断禁止,时钟源来自总线时钟60MHz,16分频后得到3.75MHz,CLKS=01,PS=100,CPWMS=0,递增计数

FTM0_MODE &= ~1;//FTM0使能

FTM0_OUTMASK=0XF7;//通道3输出,屏蔽其它通道

FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式

FTM0_COMBINE=0;//DECAPEN=0,双边沿捕捉禁止,COMBINE=0,不级联

FTM0_CNTIN=0;//FTM0计数器初始值为0

FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms

FTM0_C3V=5625;//高电平1.5ms

FTM0_CNT=0;

}

4.中心对齐PWM模式

中心对齐PWM模式和边沿对齐PWM模式唯一不同之处在于CPWMS = 1,即此时计数器工作模式为先加后减模式,计数器累加到CnV时,信号翻转,直到计数到MOD值后开始递减计数,再次到达CnV时,信号再次翻转,然后递减到CNTIN值,一个周期结束。同样的MOD、CNTIN、CnV,值,CPWM的周期是EPWM的两倍,但占空比不变。

在中心对齐PWM模式下,ELSnB:ELSnA 的作用和EPWM相同,即ELSnB:ELSnA=10信号输出先高后低,若ELSnB:ELSnA=X1信号输出先低后高。

5.输入捕捉模式

FTM的输入捕捉模式可捕捉外部信号的正跳变或负跳变,可替代外部中断使用。和一般外部中断不同的是,输入捕捉功能不但可以在捕捉到特定的跳变时产生中断,而且输入引脚可以启用滤波功能,关键是,输入捕捉功能在捕捉到信号时,还可以记录捕捉的时刻,即捕捉发生时,FTM计数器的值会记录在CnV寄存器中。

输入捕捉模式下,DECAPEN = 0(不启用双边呀捕捉),COMBINE = 0(各通道独立),CPWMS= 0(计数器累加计数),MSnB:MSnA = 0:0(输入捕捉模式)。

此时,捕捉什么样的信号则由ELSnB:ELSnA决定。

ELSnB:ELSnA=01:捕捉上升沿;

ELSnB:ELSnA=10:捕捉下降升沿;

ELSnB:ELSnA=11:捕捉上升沿或下降沿。

当对应的通道捕捉到设定的边沿时,CHnF置位,如果对应的CHnIE=1,即中断打开时,即可产生中断。

在输入捕捉模式下,当捕捉到设定的边沿时,此时的FTM计数器的值将自动保存到CnV 寄存器中,也就是在输入捕捉模式下,CnV寄存器在程序中只可做读出之用,写入操作会被忽略。

每个FTM模块的0~3通道可以启用滤波功能,滤波原理是捕捉到边沿时,延时若干个时钟周期再置位CHnF。默认情况下,如不启用滤波功能,则延时3个系统时钟的上升沿。若启用滤波功能,则延时可设置,但只有0~3通道可以设置。注意,捕捉模式下,CNTIN应为0。

当启用滤波功能时,如果输入端发生变化,则滤波器内部的5bit计数器开始累加计数,一旦溢出(溢出值由CHnFVAL[3:0]设定),输入端变化才提交给边沿检测器。如果计数过程中,输入端再次发生相反变化,则计数器会被复位并重新开始计数,这样一些比过滤时间短的脉冲则会被视为干扰且不会提交给边沿计数器。

6.输出比较模式

当DECAPEN = 0(禁止双边沿检测),COMBINE = 0(各通道独立),CPWMS = 0(计数器累加),MSnB:MSnA = 0:1时,FTM工作在输出比较模式下。

在输出比较模式下,计数器工作在累加模式下,当FTM计数器值=CnV值,时,比较成功,对应通道的引脚输出高电平、低电平或翻转信号。通道输出由ELSnB:ELSnA决定,ELSnB:ELSnA=01:输出翻转,ELSnB:ELSnA=10:输出低电平,ELSnB:ELSn=11:输出高电平。同时,当比较成功时,对应CHnF置位,如CHnIE=1,则比较成功即引发中断。

比较成功翻转电平输出,可用于输出方波。实际上PWM波形的产生也是利用了输出比较的功能实现的,输出比较功能中如使用中断且不输出波形,也可实现定时中断的功能。

7.组合模式

以上几种模式下,FTMEN=0即可,若要使用增强FTM的功能,即不同于PTM模块功能,则必须FTMEN=1。组合模式就是其中一种,主要用于输出非对称PWM信号。

当FTMEN = 1(启用增强功能),QUADEN = 0(不启用正交解码),DECAPEN = 0(不启用双边沿捕捉),COMBINE = 1(相邻通道组合使用)CPWMS = 0(计数器累加模式)时,FTM 工作在组合模式下。

组合工作模式下,主要指的是偶数通道2n和相邻的2n+1通道共同控制输出PWM波形。PWM信号的周期和EPWM相同,但是高低电平的切换的时机则由C2nV和C2n+1V确定。电平第一次翻转发生在通道2n比较成功,电平第二次翻转发生在通道2n+1比较成功。在一个周期开始时,初始电平由ELSnB:ELSnA决定,这点和EPWM和CPWM相同。

在组合模式下,PWM信号的第一个边沿只由C2nV决定,而第二个边沿只由C2n+1V决定。两个通道可独立设置对应边沿出现的位置,这就是非对称的PWM输出。

8.互补模式

一般组合模式下,通道2n和通道2n+1输出波形相同,如果启用互补模式,则两个通

道输出互为反向,在互补模式下,还可以启用死区插入功能,这在某些两路电机驱动的应用中是非常有用的。

当FTMEN = 1(启用增强功能),QUADEN = 0(不启用正交解码),DECAPEN = 0(不启用双边沿捕捉),COMBINE = 1(相邻通道组合使用)CPWMS = 0(计数器累加模式)COMP = 1(启用补偿模式)时,FTM工作在补偿模式下。在补偿模式下,仍然是2n通道和2n+1通道组合使用,输出PWM信号。和组合模式下不同的是,COMP=0时,2n通道和2n+1通道输出信号相同,而补偿模式下,2n+1通道输出的信号和2n通道是相反的。

例程如下,该例程使用60MHz总线时钟,分频后3.75MHz,输出引脚为C3和C4,分别对应FTM0_CH2和FTM0_CH3,注意由于FTMEN=1,相关寄存器更新采用软件触发的方式。在这个例子中,我们采用了死区插入,死区时间16*63个总线周期,时间大约16.8us。void FTM0_Init(void)

{

PORTC_PCR3= PORT_PCR_MUX(4); // 设置引脚C3引脚为FTM0_CH2功能

PORTC_PCR4= PORT_PCR_MUX(4); // 设置引脚C4引脚为FTM0_CH3功能

SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟

FTM0_SC=FTM_SC_CLKS(1)|FTM_SC_PS(4);//中断禁止,时钟源来自总线时钟60MHz,16分频后得到3.75MHz,CLKS=01,PS=100,CPWMS=0,递增计数

FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止

FTM0_MODE |=FTM_MODE_FTMEN_MASK;//FTMEN=1

FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式

FTM0_COMBINE|=FTM_COMBINE_COMBINE1_MASK;//FTM0通道2,3联合使用

FTM0_COMBINE|=FTM_COMBINE_COMP1_MASK;//FTM0通道2,3互补输出

FTM0_COMBINE|=FTM_COMBINE_SYNCEN1_MASK;//使能FTM0通道2,3 PWM同步

FTM0_COMBINE|=FTM_COMBINE_DTEN1_MASK;//死区插入

FTM0_DEADTIME=FTM_DEADTIME_DTPS(3)|FTM_DEADTIME_DTVAL(63);

FTM0_SYNCONF|=FTM_SYNCONF_SWWRBUF_MASK;//使能MOD,CNTIN,CV寄存器的软件触发同步

FTM0_SYNC=FTM_SYNC_CNTMIN_MASK|FTM_SYNC_CNTMAX_MASK;//设置load point FTM0_C2SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低

FTM0_C2SC &= ~FTM_CnSC_ELSA_MASK;

FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左对齐,先高后低

FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;

FTM0_OUTMASK=0XF3;//通道2,3输出,屏蔽其它通道

FTM0_CNTIN=0;//FTM0计数器初始值为0

FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms

FTM0_C2V=5625;//高电平1.5ms

飞思卡尔锁相环

备战飞思卡尔智能车大赛.开始模块总结. 锁相环设置. 公式: PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1), fbus=PLLCLK/2 void INIT_PLL(void) { CLKSEL &= 0x7f; //选用外部时钟.准备设置锁相环 PLLCTL &= 0x8F; //禁止锁相环 SYNR = 0xc9; //设置SYNR REFDV = 0x81; //设置REFDV PLLCTL |=0x70; //锁相环使能 asm NOP; asm NOP; //两个机器周期缓冲时间 while(!(CRGFLG&0x08)); //等待锁相环锁定 CLKSEL |= 0x80; //设置锁相环为时钟源 } 飞思卡尔XS128的PLL锁相环详细设置说明——关于如何提高总线工作频率PLL锁相环就相当于超频 单片机超频的原因和PC机是个一道理。分频的主要原因是外设需要的工作频率往往远低于CPU/MEMORY 这也和PC机南北桥的原理类似。总线频率设置过程 1、禁止总中断 2、寄存器CLKSEL(时钟选择寄存器)的第七位置0 即CLKSEL_PLLSEL=0。选择时钟源为外部晶振OSCCLK(外接晶振频率) 在PLL(锁相环)程序执行前 内部总线频率为OSCCLK/2 3. PLLCTL_PLLON=1 打开PLL 4.设置SYNR 时钟合成寄存器 、REFDV 时钟分频寄存器 、POSTDIV三个寄存器的参数 5、_asm(nop) _asm(nop);加入两条空指令 使锁相环稳定 6、while(!(CRGFLG_LOCK==1));//时钟校正同步 7、CLKSEL_PLLSEL=1; 下面详细说一下频率的计算一、时钟合成寄存器SYNR寄存器结构 VCOFRQ[1:0]控制压控振动器VCO的增益 默认值为00 VCO的频率与VCOFRQ[1:0]对应表

飞思卡尔智能车电机资料上课讲义

3.1.6驱动电机介绍 驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点: (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载冲击的 影响。 (5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时间运行 于停转状态,电机长时间停转时,稳定温升不超过允许值时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连续堵转电流。 图3.1为该伺服电机的结构图。图3.2是此伺服电机的性能曲线。 图3.1 伺服电机的结构图

图3.2 伺服电机的性能曲线 3.1.7 舵机介绍 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图3.3所示。图3.4为舵机的控制线。 图3.3 舵机控制要求

飞思卡尔单片机编程

关于Codewarrior 中的 .prm 文件 网上广泛流传的一篇文章讲述的是8位飞思卡尔单片机的内存映射,这几天,研究了一下Codewarrior 5.0 prm文件,基于16位单片机MC9S12XS128,一点心得,和大家分享。有什么错误请指正。 正文: 关于Codewarrior 中的.prm 文件 要讨论单片机的地址映射,就必须要接触.prm文件,本篇的讨论基于Codewarrior 5.0 编译器,单片机采用MC9S12XS128。 通过项目模板建立的新项目中都有一个名字为“project.prm”的文件,位于Project Settings->Linker Files文件夹下。一个标准的基于XS128的.prm文件起始内容如下: .prm文件范例: NAMES END SEGMENTS RAM = READ_WRITE DATA_NEAR 0x2000 TO 0x3FFF;

READ_ONLY DATA_NEAR IBCC_NEAR 0x4000 TO 0x7FFF; ROM_C000 = READ_ONLY DATA_NEAR IBCC_NEAR 0xC000 TO 0xFEFF; //OSVECTORS = READ_ONLY 0xFF10 TO 0xFFFF; EEPROM_00 = READ_ONLY DATA_FAR IBCC_FAR 0x000800 TO 0x000BFF; EEPROM_01 = READ_ONLY DATA_FAR IBCC_FAR 0x010800 TO 0x010BFF; EEPROM_02 = READ_ONLY DATA_FAR IBCC_FAR 0x020800 TO 0x020BFF; EEPROM_03 = READ_ONLY DATA_FAR IBCC_FAR 0x030800 TO 0x030BFF; EEPROM_04 = READ_ONLY DATA_FAR IBCC_FAR 0x040800 TO 0x040BFF; EEPROM_05 = READ_ONLY DATA_FAR IBCC_FAR 0x050800 TO 0x050BFF; EEPROM_06 = READ_ONLY DATA_FAR IBCC_FAR 0x060800 TO 0x060BFF; EEPROM_07 = READ_ONLY DATA_FAR IBCC_FAR 0x070800 TO 0x070BFF; PAGE_F8 = READ_ONLY DATA_FAR IBCC_FAR 0xF88000 TO 0xF8BFFF;

飞思卡尔智能车比赛细则

2016

目录

第十一届竞赛规则导读 参加过往届比赛的队员可以通过下面内容了解第十一届规则主要变化。如果第一次参加比赛,则建议对于本文进行全文阅读。 相对于前几届比赛规则,本届的规则主要变化包括有以下内容: 1.本届比赛新增了比赛组别,详细请参见正文中的图1和第四章的“比赛任务” 中的描述; 2.第十届电磁双车组对应今年的A1组:双车追逐组。其它组别与新组别的对应 关系请参见图2; 3.为了提高车模出界判罚的客观性,规则提出了两种方法:路肩法和感应铁丝 法,详细请见赛道边界判定”; 4.改变了原有的光电计时系统,所有赛题组均采用磁感应方法计时,详细请参 见“计时裁判系统”; 5.取消了第十届的发车灯塔控制的方式; 6.赛道元素进行了简化,详细请参见“赛道元素”; 7.赛道材质仍然为PVC耐磨塑胶地板,但赛题组A2不再需要赛道。 8.对于车模所使用的飞思卡尔公司MCU的种类、数量不再限制。 9.比赛时,每支参赛队伍的赛前准备时间仍然为20分钟,没有现场修车环节。

一、前言 智能车竞赛是从2006开始,由教育部高等教育司委托高等学校自动化类教学指导委员会举办的旨在加强学生实践、创新能力和培养团队精神的一项创意性科技竞赛。至今已经成功举办了十届。在继承和总结前十届比赛实践的基础上,竞赛组委会努力拓展新的竞赛内涵,设计新的竞赛内容,创造新的比赛模式,使得围绕该比赛所产生的竞赛生态环境得到进一步的发展。 为了实现竞赛的“立足培养、重在参与、鼓励探索、追求卓越”的指导思想,竞赛内容设置需要能够面向大学本科阶段的学生和教学内容,同时又能够兼顾当今时代科技发展的新趋势。 第十一届比赛的题目在沿用原来根据车模识别赛道传感器种类进行划分的基础类组别之上,同时增加了以竞赛内容进行划分的提高类组别,并按照“分赛区普及,全国总决赛提高”的方式,将其中一个类别拓展出创意类组别。第十一届比赛的题目各组别分别如下: ●基础类包括B1光电组、B2摄像头组、B3电磁直立组、B4电轨组; ●提高类包括A1双车追逐组、A2信标越野组; ●创意类包括I1 电轨节能组。 图 1 不同组别,不同挑战度 每个组别在选用的车模、赛道识别方法、完成任务等方面存在差别,对于参赛选手不同学科知识和能力要求也不同,制作的挑战度也有较大的区别。相比较而言,

飞思卡尔单片机LED控制例程详解

我的第一个LED程序 准备工作: 硬件:Freescale MC9S08JM60型单片机一块; 软件:集成开发环境codewarrior IDE; 开发板上有两个LED灯,如下图所示: 实验步骤: 1.首先,确保单片机集成开发环境及USBDM驱动正确安装。其中USBDM的安装步骤如下:?假设之前安装过单片机的集成开发环境6.3版本:CW_MCU_V6_3_SE; ?运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program Files\pgo\USBDM 4.7.0,在这个目录下: 1〉C:\ProgramFiles\pgo\USBDM 4.7.0\FlashImages\JMxx下的文件 USBDM_JMxxCLD_V4.sx是下载器的固件文件; 2〉C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers下有下载器的usb 驱动 所以在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动 安装位置到以上目录即可。 ?运行USBDM_4_7_0i_Win之后,还会在目录: C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.3\prog\gdi 下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior 集成开发环境下对usb下载器的调试、下载的支持。

2.新建一个工程,工程建立过程如下: ?运行单片机集成开发环境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窗口

飞思卡尔智能车竞赛新手入门建议

每年都会有很多新人怀着满腔热情来做智能车,但其中的很多人很快就被耗光了热情和耐心而放弃。很多新人都不知道如何入手,总有些有劲无处使的感觉,觉得自己什么都不会,却又不知道该干什么。新人中存在的主要问题我总结了以下几点: l缺乏自信,有畏难情绪 作为新人,一切都是新的。没有设计过电路,没有接触过单片机,几乎什么都不会。有些新人听了两次课,看了两篇技术报告,就发现无数不懂不会的东西,于是热情在消退,信心在减弱。这些都是放弃的前兆。殊不知,高手都是从新人过来的,没有谁天生什么都会做。一件事件,如果还没开始做,就自己否定自己,认为自己做不到,那么肯定是做不到的。 l习惯了被动接收知识,丧失了主动学习的能力。 现在的学生大多从小习惯了被灌输知识,只学老师教的,只学老师考的。殊不知一旦走向社会,将不再有老师来教,不再有应付不完的考试。做智能车和传统的教学不同,学生将从被动学习的地位转变为主动学习。就算有指导老师,有指导的学长,但也都处于被动地位,往往都不会主动来教。有的学生一开始就没有转变思想,还希望就像实验课一样,老师安排好步骤1,2,3……,然后自己按照老师安排好的步骤按部就班的完成。这样的学生,往往都丧失了提出问题和分析问题的能力,只是一个应付考试的机器。要知道,解决问题的第一步是提出问题,如果总等着别人来教,那么问题永远会挡在你面前。 l缺乏团队精神和合作意识 智能车比赛是以团队的形式参赛,只依靠个人能力单兵作战就能取得好成绩的是很少很少的。当今社会,任何人的成功都离不开身后的团队的支撑。智能车是一个很复杂的系统,电路、机械、传感器、单片机、底层驱动、控制算法……。如果所有的任务都是一个人去完成,固然锻炼了自己,但想做的很好却很不现实。很多新人,来到实验室,来到一个陌生的环境和团队,连向学长请教,和同学交流的勇气都没有,又如何融入团队呢。除了要主动融入团队,还要培养自己的团队意识。团队精神往往表现为一种责任感,如果团队遇到问题,每个人都只顾自己,出了错误,不想着解决问题,而是互相推诿埋怨。这样的团队,肯定是无法取得好成绩的。 l缺乏耐心和细心的精神 其实把一件事做好很简单,细心加上耐心。不细心就想不到,没有耐心,即使想到了也做不到。做事怕麻烦,将就,说白了就是惰性在作祟。明明可以把支架做的更轻更漂亮,明明可以把程序写的更简洁,明明可以把电路设计得更完善……。其实,每个人都有很大潜力,如果不逼自己一次,你永远不知道自己的潜力有多

电机驱动电路总结

电机驱动电路 一、直流电机驱动电路的设计目标 在直流电机驱动电路的设计中,主要考虑一下几点: 1.功能:电机是单向还是双向转动?需不需要调速?对于单向的电机驱动,只要用一个大功率三极管或场效应管或继电器直接带动电机 即可,当电机需要双向转动时,可以使用由4个功率元件组成的H 桥电路或者使用一个双刀双掷的继电器。如果不需要调速,只要使 用继电器即可;但如果需要调速,可以使用三极管,场效应管等开 关元件实现PWM(脉冲宽度调制)调速。 2.性能:对于PWM调速的电机驱动电路,主要有以下性能指标。 1)输出电流和电压范围,它决定着电路能驱动多大功率的电机。

2)效率,高的效率不仅意味着节省电源,也会减少驱动电路的发热。 要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。 3)对控制输入端的影响。功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。 4)对电源的影响。共态导通可以引起电源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。 5)可靠性。电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。 二、三极管-电阻作栅极驱动 (如果电路看不清楚请到相册里看) 1.输入与电平转换部分: 输入信号线由DATA引入,1脚是地线,其余是信号线。注意1脚对地连接了一个2K欧的电阻。当驱动板与单片机分别供电时,这个电阻可以提供信号电流回流的通路。当驱动板与单片机共用一组电源时,这个电阻可以防止大电流沿着连线流入单片机主板的地线造成干扰。或者说,相当于把驱动板的地线与单片机的地线隔开,实现“一点接地”。 高速运放KF347(也可以用TL084)的作用是比较器,把输入逻辑信号同来自指示灯和一个二极管的2.7V基准电压比较,转换成接近功率电源电压幅度的方波信号。KF347的输入电压范围不能接近负电源电压,否则会出错。因此在运放输入端增加了防止电压范围溢出的二极管。输入端的两个电阻一个用来限流,一个用来在输入悬空时把输入端拉到低电平。 不能用LM339或其他任何开路输出的比较器代替运放,因为开路输出的高电平状态输出阻抗在1千欧以上,压降较大,后面一级的三极管将无法截止。2.栅极驱动部分: 后面三极管和电阻,稳压管组成的电路进一步放大信号,驱动场效应管的栅极并利用场效应管本身的栅极电容(大约1000pF)进行延时,防止H桥上下两臂的场效应管同时导通(“共态导通”)造成电源短路。 当运放输出端为低电平(约为1V至2V,不能完全达到零)时,下面的三极管截止,场效应管导通。上面的三极管导通,场效应管截止,输出为高电平。当运放输出端为高电平(约为VCC-(1V至2V),不能完全达到VCC)时,下面的三极管导通,场效应管截止。上面的三极管截止,场效应管导通,输出为低电平。 上面的分析是静态的,下面讨论开关转换的动态过程:三极管导通电阻远小于2千欧,因此三极管由截止转换到导通时场效应管栅极电容上的电荷可以迅速释放,场效应管迅速截止。但是三极管由导通转换到截止时场效应管栅极通过2千欧电阻充电却需要一定的时间。相应的,场效应管由导通转换到截止的速度要比由截止转换到导通的速度快。假如两个三极管的开关动作是同时发生的,这个电路可以让上下两臂的场效应管先断后通,消除共态导通现象。

飞思卡尔单片机寄存器及汇编指令详解

附录I:寄存器地址列表 直接页面寄存器总结

高页面寄存器总结

非易失寄存器总结 注:直接页面寄存器表地址的低字节用粗体显示,直接寻址对其访问时,仅写地址低字节即可。第2列中寄存器名用粗体显示以区别右边的位名。有0的单元格表示未用到的位总是读为0,有破折号的单元格表示未用或者保留,对其读不定。

附录II 指令接与寻址方式 HCS08指令集概括 运算符 () = 括号种表示寄存器或存储器位置的内容 ← = 用……加载(读: “得到”) & = 布尔与 | = 布尔或 ⊕= 布尔异或 ×= 乘 ÷ = 除 : = 串联 + = 加 - = 求反(二进制补码) CPU registers A =>累加器 CCR =>条件代码寄存器 H =>索引寄存器,高8位 X => 索引寄存器,低8位 PC =>程序计数器 PCH =>程序计数器,高8位 PCL =>程序计数器,低8位 SP =>堆栈指针 存储器和寻址 M =>一个存储区位置或者绝对值数据,视寻址模式而定 M:M + 0x0001 => 两个连续存储位置的16位值.高8位位于M的地址,低8位位于更高的连续地址. 条件代码寄存器(CCR)位 V => 二进制补码溢出指示,第7位 H => 半进位,第4位 I => 中断屏蔽,第 3位 N => 求反指示器, 第2位 Z => 置零指示器, 第1位 C => 进/借, 第0位 (进位第 7位 ) CCR工作性符号 – => 位不受影响 0 = > 位强制为0 1 = > 位强制为1

= >根据运算结果设置或清除位 U = > 运算后没有定义 机器编码符号 dd =>一个直接寻址0x0000–0x00FF的低8位(高字节假设为0x00) ee => 16位偏移量的高8位 ff => 16位偏移量的低8位 ii => 立即数的一个字节 jj => 16位立即数值的高位字节 kk => 16位立即数值的低位字节 hh => 16位扩展寻址的高位字节 ll => 16位扩展寻址的低位字节 rr => 相对偏移量 n —任何表达范围在0–7之间的一个有符号数的标号或表达式 opr8i —任何一个表达8位立即值的标号或表达式 opr16 —任何一个表达16位立即值的标号或表达式 opr8a —任何一个表达一个8位值的标号或表达式.指令对待这个8位值为直接页面64K 字节地址空间(0x00xx)中地址的低8位. opr16a —任何一个表达16位值的标号或表达式.指令对待这个值为直接页面64K字节地址空间. oprx8 —任何一个表达8位无符号值的标号或表达式,用于索引寻址. oprx16 —任何一个16位值的标号或表达式.因为HCS08有一个16位地址总线,这可以为一个有符号或者无符号值. rel —任何指引在当前指令目标代码最后一个字节之后–128 to +127个字节之内的标号或表达式.汇编器会计算包括当前指令目标代码在内的8位有符号偏移量. 寻址方式 隐含寻址(Inherent)如CLRA,只有操作码,无操作数,需要操作的数据一般为CPU寄存器,因此不需要再去找操作数了。(INH) 立即寻址 (Immediate)如LDA #$0A,“$”表示16进制,此时操作数位于FLASH空间,与程序一起存放。(IMM) 直接寻址 (Direct)如 LDA $88,只能访问$0000-$00FF的存储器空间,指令短速度快; (DIR) 扩展寻址 (Extended)如果操作数地址超出了$00FF,自动为扩展寻址;(EXT) 相对寻址(Relative)如BRA LOOP,指令中一般给出8位有符号数表示的偏移量。(REL) 变址寻址 (Indexed) 采用[H:X]或SP作为指针的间接寻址方式。( IX )( IX1 )( IX2 ) 变址寻址 (Indexed) 1〉无偏移量:CLR ,X 简写(IX) 2〉无偏移量,指令完成后指针加1(H:X = H:X + 0x0001) ,简写(IX+)只用于指令MOV和CBEQ指令中;

飞思卡尔杯智能车竞赛报告总结

1.1. 系统分析 智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,最后成绩取决于单圈最快时间。因此智能车主要由三大系统组成:检测系统,控制系统,执行系统。其中检测系统用于检测道路信息及小车的运行状况。控制系统采用大赛组委会提供的16位单片机MC9S12XS128作为主控芯片,根据检测系统反馈的信息新局决定各控制量——速度与转角,执行系统根据单片机的命令控制舵机的转角和直流电机的转速。整体的流程如图1.1,检测系统采集路径信息,经过控制决策系统分析和判断,由执行系统控制直流电机给出合适的转速,同时控制舵机给出合适的转角,从而控制智能车稳定、快速地行驶。 图2.1 1.2. 系统设计 参赛小车将电感采集到的电压信号,经滤波,整流后输入到XS128单片机,用光电编码器获得实时车速,反馈到单片机,实现完全闭环控制。速度电机采用模糊控制,舵机采用PD控制,具体的参数由多次调试中获得。考滤到小车设计的综合性很强,涵盖了控制、传感、电子、电气、计算机和机械等多个学科领域,因此我们采用了模块化设计方法,小车的系统框图如图2.2。

第五届全国大学生智能汽车竞赛技术报告 图2.2 1.3. 整车外观 图2.3

1.4. 赛车的基本参数 智能车竞赛所使用的车模是东莞市博思公司生产的G768型车模,由大赛组委会统一提供,是一款带有摩擦式差速器后轮驱动的电动模型车。车模外观如图3.1。车模基本参数如表3.1。 图3.1 表3.1车模基本参数 1.5. 赛车前轮定位参数的选定

第五届全国大学生智能汽车竞赛技术报告 现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动回正,减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的相对安装位置,叫车轮定位,其主要的参数有:主销后倾、主销内倾、车轮外倾和前束。模型车的前轮定位参数都允许作适当调整,故此我们将自身专业课所学的理论知识与实际调车中的赛车状况相结合,最终得出赛车匹配后的前轮参数[6]。 1.5.1. 主销后倾角 主销后倾角是指在纵向平面内主销轴线与地面垂直线之间的夹角γ,如图3-2。模型车的主销后倾角可以设置为0、 2°?3°、 4°?6°,可以通过改变上横臂轴上的黄色垫片来调整,一共有四个垫片,前二后二时为0°,前一后三为2°?3°,四个全装后面时为4°?6°。 由于主销后倾角过大时会引起转向沉重,又因为比赛所用舵机特性偏软,所以不宜采用大的主销后倾角,以接近0°为好,即垫片宜安装采用前二后二的方式,以便增加其转向的灵活性。如图3.3。 图3.2 图3.3 1.5. 2. 主销内倾角 主销内倾角是指在横向平面内主销轴线与地面垂直线之间的夹角β,如图3.4,它的作用也是使前轮自动回正。对于模型车,通过调整前桥的螺杆的长度可以改变主销内倾角的大小,由于前轴与主销近似垂直的关系,故主销内倾角

飞思卡尔第一张

3.1 实验一 I/O口输入输出实验 4.实验原理 如图3-1所示,将PTB6设置为输出端口后,若向PTB6写高电平时,LED灯不亮,若写低电平,则LED亮。PTA2设置为输入端口后,在按键SW未按下时,读PTA2始终为高电平,只有在按键SW按下时,读PTA2时才得到低电平。 图3-1 LED灯与按键控制电路原理图 5.实验内容 ⑴结合开发板电路图,用跳线夹连接对应LED引脚。即LED1、LED2分别与PTB6、PTB7相连接。将PTB 口定义为输出接口。对端口写0即可点亮LED灯。单步运行观察实验现象。 ⑵结合开发板电路图,用跳线夹再将开发板上的按键SW1、SW2连到PTA2。将PTA口定义为输入口,将PTB口定义为输出口。按下SW1时点亮LED1、LED2。按下SW2时熄灭LED1、LED2。 6.参考程序 ⑴直接点亮LED灯,其参考程序如下。 C语言程序: #include #include "derivative.h" /* 头文件 */ void main(void) { PTBDD=0xff; /*定义PTB口为输出口 */ PTBD=0xff; /*输出高电平,LED灯灭*/ PTBD=0x00; /*PTB口输出低电平,即PTB6、PTB7输出低电平 */

for(;;) { __RESET_WATCHDOG(); /* 清看门狗 */ } /* 死循环 */ } 汇编程序(加粗部分为所需添加的程序代码): ;******************************************************************* ;* This stationery serves as the framework for a user application. * ;* For a more comprehensive program that demonstrates the more * ;* advanced functionality of this processor, please see the * ;* demonstration applications, located in the examples * ;* subdirectory of the "Freescale CodeWarrior for HC08" program * ;* directory. * ;******************************************************************* ; Include derivative-specific definitions INCLUDE 'derivative.inc' ; ; export symbols ; XDEF _Startup ABSENTRY _Startup ; ; variable/data section ; ORG RAMStart ; Insert your data definition here ExampleVar: DS.B 1 ; ; code section ; ORG ROMStart _Startup: LDHX #RAMEnd+1 ; initialize the stack pointer TXS CLI ; enable interrupts mainLoop: ; Insert your code here MOV #$FF,PTBDD; 端口方向寄存器初始化为输出 MOV #$FF,PTBD; 输出高点平,LED灯灭 MOV #$00,PTBD; 输出低电平,LED灯亮 NOP

飞思卡尔MC9S12XS128功能模块驱动

用了一年多飞思卡尔MC9S12XS128这款处理器,现在总结下各个功能模块的驱动. //锁相环时钟的初始化总线频率为40MHz(总线时钟为锁相环时钟的一半) //晶振为11.0592MHz void PLL_init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟= 2*11.0592*(39+1)/(10+1)=80MHz 总线时钟为40MHz REFDV=0x0A; SYNR=0x67; //0110_0111 低6位的值为19,高两位的值为推荐值 while(CRGFLG_LOCK != 1); CLKSEL_PLLSEL = 1; //选定锁相环时钟 //FCLKDIV=0x0F; //Flash Clock Divide Factor 16M/16=1M } //周期中断定时器的初始化- // //周期中断通道1用于脉冲累加器的定时采样,定时周期为: 10ms= (199+1)*(1999+1)/(40M) (没有使用) //周期中断通道0用于控制激光管的轮流发射,定时周期为: 2000us= (399+1)*(199+1)/(40M) //2011/4/4 15:24 定时时间改为1ms void PIT_init(void) { PITCFLMT_PITE = 0; // 禁止使用PIT模块 PITCFLMT :PIT 控制强制加载微计数器寄存器。 PITCE_PCE0 = 1; // 使能定时器通道0 //PITCE_PCE1 = 1; //使能定时器通道1 PITMUX = 0; //通道0,和通道1均选择8位微计数器0

飞思卡尔MC9S12XS128单片机中断优先级设置简易教程

本教程试图用最少的时间教你飞思卡尔XS128单片机的中断优先级设置方法和中断嵌套的使用,如果是新手请先学习中断的基本使用方法。 先来看看XS128 DataSheet 中介绍的相关知识,只翻译有用的: 七个中断优先级 每一个中断源都有一个可以设置的级别 高优先级中断的可以嵌套低优先级中断 复位后可屏蔽中断默认优先级为1 同一优先级的中断同时触发时,高地址(中断号较小)的中断先响应 注意:高地址中断只能优先响应,但不能嵌套同一优先级低地址的中断 下面直接进入正题,看看怎么设置中断优先级: XS128中包括预留的中断一共有128个中断位,如果为每个中断都分配一个优先级寄存器的话会非常浪费资源,因此飞思卡尔公司想出了这样一种办法:把128个中断分为16个组,每组8个中断。每次设置中断时,先把需要的组别告诉某个寄存器,再设置8个中断优先寄存器的某一个,这样只需9个寄存器即可完成中断的设置。 分组的规则是这样的:中断地址位7到位4相同的中断为一组,比如MC9SX128.h中 这些中断的位7到位3都为D,他们就被分成了一组。0~F正好16个组。

INT_CFADDR就是上面说到的用来设置组别的寄存器: 我们需要设置某个组别的中断时,只要写入最后8位地址就行了,比如设置SCI0的中断优先级,就写入0xD0。 设置好组别之后,我们就要该组中相应的中断进行设置,设置中断的寄存器为 这其实是一组寄存器,一共有8个,每个都代表中断组中的一个中断。对应规则是这样的:中断地址的低四位除以2 比如还是SCI0,低四位是6,除以二就是3,那么我们就需要设置INT_CFDATA3 往INT_CFDATAx中写入0~7就能设置相应的中断优先级了 拿我本次比赛的程序来举个例子:我们的程序中需要3个中断:PIT0,PORTH,SCI0。PIT0定时检测传感器数值,PORTH连接干簧管进行起跑线检测,SCI0接收上位机指令实现急停等功能。因此中断优先级要SCI0>PORTH>PIT0。 我们先要从头文件中找出相应中断的地址: PIT0【7:4】位为7,选择中断组: INT_CFADDR=0x70;

飞思卡尔项目书

飞思卡尔智能车比赛项目 参赛时间:2011.7.16 — 2011.7.20 赛前准备时间:2010.7 ---2011.7 飞思卡尔智能车比赛简介: 为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函[2005]201号文,附件1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。该竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。 该竞赛由竞赛秘书处设计、规范标准硬软件技术平台,竞赛过程包括理论设计、实际制作、整车调试、现场比赛等环节,要求学生组成团队,协同工作,初步体会一个工程性的研究开发项目从设计到实现的全过程。该竞赛融科学性、趣味性和观赏性为一体,是以迅猛发展、前景广阔的汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多学科专业的创意性比赛。该竞赛规则透明,评价标准客观,坚持公开、公平、公正的原则,力求向健康、普及、持续的方向发展。 该竞赛以飞思卡尔半导体公司为协办方,得到了教育部相关领导、飞思卡尔公司领导与各高校师生的高度评价,已发展成全国30个省市自治区近300所高校广泛参与的全国大学生智能汽车竞赛。2008年起被教育部批准列入国家教学质量与教学改革工程资助项目中科技人文竞赛之一(教高函[2007]30号文)。 全国大学生智能汽车竞赛原则上由全国有自动化专业的高等学校(包括港、澳地区的高校)参赛。竞赛首先在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛。每届比赛根据参赛队伍和队员情况,分别设立光电组、摄像头组、电磁组、创意组等多个赛题组别。每个学校可以根据竞赛规则选报不同组别的参赛队伍。全国大学生智能汽车竞赛组织运行模式贯彻“政府倡导、专家主办、学生主体、社会参与”的16字方针,充分调动各方面参与的积极性。 全国大学生智能汽车竞赛一般在每年的10月份公布次年竞赛的题目和组织方式,并开始接受报名,次年的3月份进行相关技术培训,7月份进行分赛区竞赛,8月份进行全国总决赛。 飞思卡尔智能车比赛技术要求:

飞思卡尔智能车电机

飞思卡尔智能车电机公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

3.1.6驱动电机介绍 驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点: (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载 冲击的影响。 (5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时 间运行于停转状态,电机长时间停转时,稳定温升不超过允许值 时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连 续堵转电流。 图为该伺服电机的结构图。图是此伺服电机的性能曲线。

图伺服电机的结构图 图伺服电机的性能曲线 3.1.7 舵机介绍 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为 20ms,宽度为的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图所示。图为舵机的控制线。

飞思卡尔智能车比赛个人经验总结

先静下心来看几篇技术报告,可以是几个人一起看,边看边讨论,大致了解智能车制作的过程及所要完成的任务。 看完报告之后,对智能车也有了大概的了解,其实总结起来,要完成的任务也很简单,即输入模块——控制——输出。 (1)输入模块:各种传感器(光电,电磁,摄像头),原理不同,但功能都一样,都是用来采集赛道的信息。这里面就包含各种传感器的原理,选用,传感器电路的连接,还有传感器的安装、传感器的抗干扰等等需要大家去解决的问题。 (2)控制模块:传感器得到了我们想要的信息,进行相应的AD转换后,就把它输入到单片机中,单片机负责对信息的处理,如除噪,筛选合适的点等等,然后对不同的赛道信息做出相应的控制,这也是智能车制作过程中最为艰难的过程,要想出一个可行而又高效的算法,确实不是一件容易的事。这里面就涉及到单片机的知识、C语言知识和一定的控制算法,有时为了更直观地动态控制,还得加入串口发送和接收程序等等。 (3)输出模块:好的算法,只有通过实验证明才能算是真正的好算法。经过分析控制,单片机做出了相应的判断,就得把控制信号输出给电机(控制速度)和舵机(控制方向),所以就得对电机和舵机模块进行学习和掌握,还有实现精确有效地控制,又得加入闭环控制,PID算法。 明确了任务后,也有了较为清晰的控制思路,接下来就着手弄懂每一个模块。虽然看似简单,但实现起来非常得不容易,这里面要求掌握电路的知识,基本的机械硬件结构知识和单片机、编程等计算机知识。最最困难的是,在做的过程中会遇到很多想得到以及想不到的事情发生,一定得细心地发现问题,并想办法解决这些问题。 兴趣是首要的,除此之外,一定要花充足的时间和精力在上面,毕竟,有付出就会有收获,最后要明确分工和规划好进度。

飞思卡尔寄存器整理

S12的输入/输入端口(I/O口) I/O端口功能 可设置为通用I/O口、驱动、内部上拉/下拉、中断输入等功能。 设置I/O口工作方式的寄存器有: DDR、IO、RDR、PE、IE和PS。 DDR:设定I/O口的数据方向。 IO :设定输出电平的高低。 RDR:选择I/O口的驱动能力。 PE:选择上拉/下拉。 IE:允许或禁止端口中断。 PS:1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。 I/O端口设置 1、A口、B口、E口寄存器 (1)数据方向寄存器DDRA、DDRB、DDRE DDRA、DDRB、DDRE均为8位寄存器,复位后其值均为0。 当DDRA=0、 DDRB=0、 DDRE=0 时A口、B口和E口均为输入口。 否则,A口、B口、E口为输出口。当DDRA、DDRB、DDRE的任何一位置1时,则该位对应的引脚被设置为输出。 例如,将A口设置为输出口,则其C语言程序的语句为:DDRA=0xff; (2)A口、B口、E口上拉控制寄存器PUCR PUCR为8位寄存器,复位后的值为0。当PUPAE、PUPBE、PUPEE被设置为1时,A口、B口、E口具有内部上拉功能;为0时,上拉无效。当A口、B 口、E口为地址/数据总线时,PUPAE和PUPBE无效。 (3)A口、B口、E口降功率驱动控制寄存器RDRIV RDRIV为8位寄存器,复位后的值为0,此时,A口、B口、E口驱动保持全功率;当RDPA、RDPB、RDPE为1时, A口、B口、E口输出引脚的驱动功率下降 (4)数据寄存器PORTA、PORTB、PORTE PORTA、PORTB、PORTE均为8位寄存器,复位后的值为0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。 由于PE0是/XIRQ、PE1是IRQ,因此,PE0和PE1只能设置为输入。

飞思卡尔电机控制模块详解

M=2. 一、关键点 1、MC 模块驱动电机的PWM 波频率在20K 左右时效果比较好。DITH 位等于0时,计算方法如下: DITH=1时, 其中,左对齐和有对齐方式下 M=1,中间对齐是2、MC 模块定时计数器的中断最好禁止,如果开启,在相应的中断服务程序中至少要添加一条“清楚中断标志位”的指令。 3、电机控制模块共8个通道,每个通道有2个Pin 脚组成。 4、Fast 位控制精度,7位或者11位。 5、给周期寄存器写入数值,可启动 MC 计数器,写0关闭所有通道的计数器。 6、MCAM[1:0]写入0x00可关闭某个channel ,写入非零值不是启动MC 计数器,而是控制对齐方式。为了精确周期寄存器的值应尽量大,Ftc 应尽量小。 二、寄存器寄存器讲解讲解讲解:: 1 MCCTL0 (Motor Controller Control Register 0) 第7位保留; 第6、5位是MCPRE[1:0]控制电机控制器定时计数器时钟f TC 预分频系数。如下: 第4位 MCSWAI 置1,等待模式中电机控制器正常运行,清0,在等待模式中电机控制模块时钟关闭。 第3位,FAST ,清0,电机控制器PWM 模块占空比寄存器分辨率设置为11位,置1,电机控制器PWM 模块占空比寄存器分辨率设置为7位。 第2位,DITH ,清零,电机控制器dith 特性禁止,置1电机控制器dith 特性使能。 第1位保留; 第0位MCTOIF ,为1表示,电机控制模块定时计数器溢出;为0,表示自上次复位或清零以来,电机控制模块定时计数器没有发生溢出。 2 MCCTL1 (Motor Controller Control Register 1)

飞思卡尔智能车竞赛策略和比赛方案综述

飞思卡尔智能车竞赛策略和比赛方案综述 一、竞赛简介 起源: “飞思卡尔杯”智能车大赛起源于韩国,是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以HCSl2单片机为核心的大学生课外科技竞赛。组委会提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够自主识别路径的智能车,在专门设计的跑道上自动识别道路行驶,谁最快跑完全程而没有冲出跑道并且技术报告评分较高,谁就是获胜者。其设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械、能源等多个学科的知识,对学生的知识融合和实践动手能力的培养,具有良好的推动作用。 全国大学生“飞思卡尔”杯智能汽车竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。因而该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的比赛。 该竞赛以飞思卡尔半导体公司为协办方,自2006年首届举办以来,成功举办了五届,得到了教育部吴启迪副部长、张尧学司长及理工处领导、飞思卡尔公司领导与各高校师生的高度评价,已发展成全国30个省市自治区200余所高校广泛参与的全国大学生智能汽车竞赛。2008年第三届被教育部批准列入国家教学质量与教学改革工程资助项目中9个科技人文竞赛之一(教高函[2007]30号文,附件2),2009年第四届被邀申请列入国家教学质量与教学改革工程资助项目。 分赛区、决赛区比赛规则 在分赛区、决赛区进行现场比赛规则相同,都分为初赛与决赛两个阶段。在计算比赛成绩时,分赛区只是通过比赛单圈最短时间进行评比。决赛区比赛时,还需结合技术报告分数综合评定。 1.初赛与决赛规则 1)初赛规则 比赛场中有两个相同的赛道。 参赛队通过抽签平均分为两组,并以抽签形式决定组内比赛次序。比赛分为两轮,两组同时在两个赛道上进行比赛,一轮比赛完毕后,两组交换场地,再进行第二轮比赛。在每轮比赛中,每辆赛车在赛道上连续跑两圈,以计时起始线为计时点,以用时短的一圈计单轮成绩;每辆赛车以在两个单轮成绩中的较好成绩为赛车成绩;计时由电子计时器完成并实时在屏幕显示。 从两组比赛队中,选取成绩最好的25支队晋级决赛。技术评判组将对全部晋级的赛车进行现场技术检查,如有违反器材限制规定的(指本规则之第一条)当时取消决赛资格,由后备首名晋级代替;由裁判组申报组委会执委会批准公布决赛名单。 初赛结束后,车模放置在规定区域,由组委会暂时保管。

相关文档
最新文档