飞思卡尔寄存器使用

飞思卡尔寄存器使用
飞思卡尔寄存器使用

PLLSEL:选定锁环位 1 选定锁相环时钟0 选定外部时钟

PSTP:选定伪停止位伪停止模式下振荡器(工作1)/(停止0)

SYSWAI:选定时钟停止位等待模式下系统时钟(停止1)/(继续工作0)

ROAWAI:等待模式下降低振荡器放大倍数位

1 等待模式下降低振荡器放大倍数

0 等待模式下振荡器正常放大倍数

PLLWAI:等待模式下锁相环停止工作位

1等待模式下锁相环停止工作

0等待模式下锁相环正常工作

CWAI:等待模式下内核时钟停止工作位

1 等待模式下内核时钟停止工作

0 等待模式下内核时钟正常工作

RTIWAI:等待模式下实时时钟停止工作位

1 等待模式下实时时钟停止工作

0 等待模式下实时时钟正常工作

COPWAI:等待模式下看门狗时钟停止工作位

1 等待模式下看门狗时钟停止工作

0 等待模式下看门狗时钟正常工作

CME:时钟监控使能位。

PLLON:锁相环电路使能位。

AUTO:自动带宽控制位 1 选择高频带宽控制0 选择低频带宽控制

ACQ:自动带宽控制滤波器选择位(当AUTO=1时,该位无意义)。

PRE:CPU 伪停止状态时,实时中断(RT1)允许位。

PCE:CPU 虚拟停止时,看门狗(COP)允许位。

SCEM:自给时钟方式使能位,默认为1,探测到外部晶振停振时进入自给时钟模式,为0时,

禁止自给时钟模式,探测到外部晶振停振时复位。

时钟合成寄存器SYNR

读写Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Read 0 0

SYN5 SYN4 SYN3 SYN2 SYN1 SYN0 Write

VCOFRQ[1:0](BIT7 BIT6)控制压控振动器VCO的增益,默认值为00,VCO的频率与VCOFRQ[1:0]对应表如下所示:

读写Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Read/Write REFFRQ1 REFFRQ0 REFDV5 REFDV4 REFDV3 REFDV2 REFDV1 REFDV0 REFFRQ[1:0]默认值为00,表示参考时钟频率在1~2MHZ之间,要求的参考时钟频率与REFFRQ[1:0]的设置值如下表如示:

读写Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Read

RTIF PORF 0

LOCKIF

LOCK TRACK

SCMIF

SCM

Write

RTIF:实时中断(RTI)标志位 1 发生实时中断0 未发生实时中断PROF:上电复位标志位 1 发生上电复位0 未发生上电复位LOCKIF:锁相环中断标志位

1 锁相环锁定位发生变化时,产生中断请求

0 锁相环锁定位未发生变化

LOCK:锁相环频率锁定标志,为1表示时钟频率已稳定,锁相环频率已锁定。

TRACK:锁相环跟踪模式位 1 系统处于跟踪模式下0 系统处于正常模式下SCMIF:自给时钟中断标志位 1 SCM位发生变化0 SCM位未发生变化

SCM:自给时钟状态位

1 外部晶振停止工作,系统靠自给时钟工作

0 系统靠外部晶振正常工作

SCIBDH和SCIBDL一起构成了一个16位的波特率控制寄存器。SBR12~SBR0为波特率常数。寄存器名:SCIBDH、SCIBDL;地址:$00C0、$00C1;复位默认值:00000000B、00000100B 读操作:任意;写操作:SBR12~SBR0任意,低位字节写入后生效。SBR13~SBR15未定义SCI的波特率由下述公式决定:

波特率:MCLK/(16×BR)

其中BR是波特率常数,设定时写入到SBRl2~SBR0。复位后,在SCICR2寄存器中的TE、RE位第一次置1前,波特率发生器是关闭的,而且,当SBRl2~SBR0=0时,波特率发生器也会被关闭。通常选用波特率为9600。

BTST、BSPL和BRLD保留用于检测功能。

LOOPS:SCI回送模式/单线模式允许位,接收器的输入由RSRC位选择确定,发送器的输出受相应的DDRS位(S口I/O方向控制位)控制。要使用回送或者单线模式,发送、接收器必须同时允许工作。在LOOPS=1期间,如果与TxD引脚对应的方向控制位被置1,那么TxD引脚就输出SCI的信号;如果方向控制位被清0,那么这时若RSRC=0,TxD引脚就变成高电平(空闲状态),反之若RSRC=1,TxD引脚就变成高阻态。

0:SCI发送和接收部分正常工作。

1:SCI接收部分与RxD引脚断开,空出来的RxD引脚可以用作通用I/O。SCISWAI:等待模式下SCI停止位

0:在等待模式下允许SCI

1:在等待模式下禁止SCI

RSRC:接收器信号源选择位,当LOOPS=1时,RSRC决定接收器的内部反馈信号路径。

0:接收器的输入在内部连接到发送器输出(并非TxD引脚)。

1:接收器的输入连接到TxD引脚。

M:方式选择位(选择字符帧格式)。

0:1个起始位,8个数据位,1个停止位。

1:1个起始位,8个数据位,第9个数据位,1个停止位。

WAKE:唤醒选择位。

0:介质空闲唤醒。

I:地址标志(最后一个数据位为1)唤醒。

ILT:空闲检测方式选择位,该位在SCI接收器可以使用的两种空闲检测方式中选择一种。

0:快速检测,SCI在一个帧的开始位后立即开始对“1”计数,因此,停止位以及停止位前面的任何“1”均被计算在内,这样可以提前检测到空闲状态。

1:保守检测,SCI在停止位后才开始对“1”计数,因此最后一个字节的停止位以及该位以前的各个为“广的位,对检测的时间长短无影响。

PE:奇偶校验允许位。

0:禁止奇偶校验。

1:允许奇偶校验。

PT:奇/偶校验选择位,如果奇偶校验允许,该位决定收发器使用奇校验还是偶校验。如果选择偶校验,当数据中有偶数个“广时,校验位置0,否则校验位置1。

0:选择偶校验。

1:选择奇校验。

TIE:发送中断允许位,清0时禁止TDRE产生中断,若置1则允许TDRE位置1时产生SCI 中断请求。

TCIE:发送结束中断允许位,清0时禁止TC产生中断,若置1则允许TC位置1时产生SCI 中断请求。

RIE:接收中断允许位,清0时禁止RDRF和OR产生中断,若置1则允许RDRF或OR置1时产生SCI中断请求。

ILIE:空闲中断允许位,清0时禁止IDLE产生中断,若置1则允许IDLE位置1时产生SCI 中断请求。

TE:发送允许位。该位由0置1时可用来发送空闲报头。

0:发送器禁止。

1:允许SCI发送部分工作,TxD引脚(PSl/PS3)用于发送。

RE:接收允许位。

0:接收器禁止。

1;允许SCI接收器工作。RWU:接收器唤醒控制位。

RWU:接收器唤醒控制位

0:SCI接收器正常工作。

1:允许唤醒功能,禁止接收器中断。通常,硬件通过自动清除该位来唤醒接收器。SBK:中止符发送允许位。只要该位保持为1,发送器就不停地发出“0”;如果变为0,当前的全“0”帧发送结束后,TxD引脚将变成空闲状态。如果SBK开关一次,发送器将只发出10(11)个“0”,然后复原,处于空闲或发送数据状态。

0:中止符产生器关闭。

1:产生中止符,至少10或11个连续的“0”。

TDRE:发送保持器空标志位。发送前必须读SCISR1,并确认TDRE=1,然后将新的数据写入发送保持器以开始发送过程。复位后该位为1。

0:SC0DR处于忙状态。

1:发送保持器的数据已被传送到发送移位器,这时可以向发送保持器写入新的数据TC:发送结束标志。该位在发送器空闲(无发送动作)时置位。读SCISRl,然后写SCIDR将清除该位。

0:发送器忙。

1:发送器空闲。

RDRF:接收数据就绪标志。当收到的字符已经在SCIDR中就绪时,RDRF置1,顺次读取SCISRl 和SCIDR将会自动清除RDRF。该位被清除后,必须等到RxD线变为活动,然后重新变成空闲以后,IDLE位才会被再次置1。

0:SCIDR空。

1:SCIDR中数据已就绪。

IDLE:空闲标志。检测到接收器RxD端空闲(收到10或者11个以上连续的“1”)。当RWU位为1时,空闲状态不会使该位置1。该位被清除后,必须等到RDRF置位(RxD线变为活动,然后重新变成空闲),IDLE位才会被再次置1。

0:RxD线活动。

1:RxD线空闲。

OR:重叠错误标志。如果接收数据寄存器中的数据尚未读取(RDRF=1),接受移位寄存器又准备向其传送新的数据,则称为重叠错误,该位被置1。必须清除该位,才能使新的数据进入接收数据寄存器。

0:无重叠。

1:出现重叠错误。

NF:噪声错误标志。噪声错误出现时,该位与RDRF在同一个周器内置位,但如果同时或已经出现重叠错误,该位不置位。

0:采样结果一致。

1:在起始位、数据位或停止位接收期间检测到噪声。

FE:帧格式错误。如果在应该出现停止位的时刻,检测到0,则该位置位。顺次读取寄存器SCISRl和SCIDR将清除FE标志。

0:检测到停止位。

1:在预期的停止位处检测到0。

PF:奇偶错误标志。指示收到数据的奇偶性与校验位是否一致。奇偶校验允许(PE=1)时,该标志才有意义。所要求的奇偶性由SC0CR1中的PT位决定。

0:奇偶校验正确。

1:奇偶校验错误。

BRK13:中止符长度控制位。

0:中止符长度为10或11位。

1:中止符长度为13或14位。

TXDIR:单线模式下发送管脚数据方向控制位。

0:单线模式下TxD脚用于输入。

1:单线模式下TxD脚用于输出。

RAF:接收器活动标志位。反映接收器是否处于活动状态。在搜索起始位的RT1期间该位置1,当接收器器检测到空闲状态或者出现一个伪起始位(通常由于噪声或波特率匹配错误引起)时,该位清0。该位由接收器前端控制。

SCI内部分别设有发送和接收两个数据寄存器,其低位都通过SCIDRL访问,读操作返回接收数据寄存器RDR的内容,写操作数据置入发送数据寄存器TDR。当M=1即运行在9位数据模式时,SCIDRL和SCIDRH形成9位的SCI数据字,这时必须先写入SCIDRH,以便与低位字节(SCIDRL)一起进入发送移位器。如果M=0即SCI只用于7位或8位的数据传送,可以只访问SCIDRL。当PE=1即奇偶校验允许时,奇偶校验位由硬件负责,无需软件干预。

R8:接收到的位8,该位写操作无效。当SCI设置成9位数据运行模式时,该位是从串行数据流中接收到的第9位。

T8:发送位8,任何时候可写。当SCI设置成9位数据模式时,该位是送到串行数据流的第9位。该位不必为每个数据重新设置,每次发送可重复使用。

R7T7-R0T0:收/发数据位7-0,读操作返回只读寄存器RDR的内容,写操作写入只写寄存器TDR。

SPIE:SPI中断允许位。

0:禁止SPI中断。

1:每次SPRF或MODF状态标志置位时发出硬件中断请求。

SPE:SPI系统允许位。

当MODF=1时,SPE读取结果总是0,SPOCR1的写操作指令必须作为模式故障恢复序列的一部分嵌入其中。

0:SPI内部硬件完成初始化,但SPI系统处于低功耗的禁止状态。

1:SPI使能。

SPTIE:

0:SPTEF中断不被允许。

1:SPTEF中断允许。

MSTR:主、从模式选择位,用于设定本机SPI以主器件还是从器件身份出现。

0:从模式。

1:主模式。

CPOL、CPHA:SPI时钟极性、相位选择位,这两位用来指定SPI的时钟格式。当无传输动作且CPOL=0时,主器件的SCK引脚处于低电平,而如果CPOL=1,SCK则闲置在高电平。SSOE:从器件选中输出信号(SS)允许位,SS输出功能只有在主模式下通过置位SSOE和DDRS7实现。

0:禁止SS输出。

1:允许SS输出,但同时DDRS7必须为1。

LSBFE:SPI数据位传输顺序选择位,通常要求LSBF=0,即传输过程高位在先。该位只决定传输过程中各位的先后顺序,不影响数据位在寄存器中的顺序,因此读写操作正常进行,即高位(MSB)在第7位(BIT7)。对于仅由MC9S12DP256构成的互连系统,只要各个SPI的LSBF相同,对传输结果无影响,但在与外围设备或器件连接时,SPI必须根据该设备或器件所要求的位顺序正确设置LSBF。

0:数据传输高位(MSB)在先。

1:数据传输低位(LSB)在先。

MODFEN:模式错误使能位

0:禁止模式错误标志位置位。

1:允许模式错误标志位置位。

BIDIROE:双向模式下输出缓冲使能位

0:双向模式下禁止输出缓冲。

1:双向模式下允许输出缓冲。

SPISWAI:等待模式下SPI工作方式

0:等待模式下停止SPI时钟。

1:等待模式下SPI时钟正常工作。

SPC0:串行引脚控制,该位与MSTR位一起决定串行引脚功能设置。

该寄存器只有六个有效位SPPR2~SPPR0和SPR2~SPR0,用来确定SPI系统工作时钟SCK的频率,即波特率。复位默认值为0。

SPPR2-SPPR0:波特率预选位;

SPR2-SPR0:波特率选择位。

波特率分频因子表达式为:

BaudRateDi visor=(SPPR+1)* 2(SPR+1)

该8位寄存器是SPI数据寄存器,具有输入、输出双重功能。对该寄存器进行读操作时所访问的输入部分是双缓冲的,但写操作则直接将数据送到串行移位器。注意:某些简单的从器件可能只有发送功能,只向主器件发送数据而不向主器件请求数据,例如并行输入串行输出的TTL逻辑电路:或者只有接收功能,只从主器件接收而不返回数据,例如串行输入并行输出的TTL逻辑电路。由于SPI的传输是一次交换过程,对于只发送数据的从器件,交换前主

机可向SPODR写入任何数据;对于只接收数据的从器件,交换后主机SPODR中的数据无意义。

SPIF:SPI中断请求位,在数据传输过程中,SPRF在第8个SCK周期后置位,通过读SPISR寄存器并随后读或写数据寄存器SPIDR清0。

0:传输正在进行或者根本没有传输。

1:一次传输已经结束。

SPTEF:当SPIDR中的值送入移位寄存器中是,该位置1。同时如果SPTIE位为1,则向CPU 发出中断请求。读SPISR然后写SPIDR将清除该位。

0:SPI数据寄存器非空。

1:SPI数据寄存器空。

MODF:SPI模式错误中断状态位。当MSTR=1时,如果从选择引脚SS在外部被拉低成逻辑0,该位由SPI硬件自动置1。这时本机SPI已经不能成功设定为主机,显然这种情况在正常情况下是不允许的。当DDRS7=1时,PS7是通用输出或SS输出引脚,而不是专用于SPI系统的SS输入引脚,在这种特殊情况下,模式故障功能被禁止,MODF保持为0。读SPOSR随后写入SPOCR1将清0该位。

0:无异常。

1:系统中已经出现另一个主机,并正在选中从器件。

PITE:PIT模块使能位

0 禁止PIT

1 使能PIT

PITSWAIT:等待模式PIT 停止控制位

0 在等待模式下PIT 正常运行

1 在等待模式下PIT 时钟产生器停止

PITFRZ: 冻结模式PIT 计数器冻结控制位

0 在冻结模式下PIT 正常运行

1 在冻结模式下PIT 计数器失去作用

PFLMT[1..0]:PIT 强制载入微定时器模数值控制位

1 相应的8 位微定时器模数值被载入8 位微定时器递减计数器中

0 强制载入无效

PFLT[3..0:]:PIT 强制载入定时器模数值控制位

1 相应的16 位定时器模数值被载入16 位定时器递减计数器中

0 强制载入无效

PCE[ 3..0]:PIT 使能控制位。该寄存器使能PIT 四个通道,如果PCE 写0,PIT 通道将被禁止,在PITTF 中相应的标志位也将被清除;如果PCE 写1,PIT 通道使能,16 位定时器计数器被载入起始值并开始计数。

1 通道使能

0 通道禁止

PMUX[ 3..0]:PIT定时器复合寄存器控制位。该寄存器控制16 位定时器与8 位微定时器时基0 或者时基1 连接复合。

0 相应16 位定时器与微时基0 连接

1 相应16 位定时器与微时基1 连接

PINTE[ 3..0]:PIT 定时器溢出中断使能控制位。

0 PIT 相应通道溢出中断禁止

1 PIT 相应通道溢出中断使能

PMTLD[7..0]:PIT微定时器初值载入位。该寄存器用于设置PIT 模块中的8位计数器初值,以实现24位的计数。设定值为0到255范围。递减计数器减至0后会自动重载

当A口、B口、E口的其中一位置1时,对应引脚的传输方向为输出,默认状态下各个引脚为0,传输方向为输入(E口部分引脚除外)

当PUPAE、PUPBE、PUPEE分别为1时,A口、B口、E口具有内部上拉功能;为0时上拉无效。当A口、B口、E口用作地址/数据总线时,控制位PUPAE和PUPBE无效。

RDPE、RDPB和RDPA分别控制E口、B口和A口的驱动功率,置1时,对应口的输出引脚驱动功率下降;为0时,保持全功率。

每一个PWM 的输出通道都有一个使能位P WMEx 。它相当于一个开关,用来启动

和关闭相应通道的PWM 波形输出。当任意的P WMEx 位置1,则相关的P WM 输出通

道就立刻可用。

用法:PWME7=1 --- 通道7 可对外输出波形

PWME7=0 --- 通道7 不能对外输出波形

注意:在通道使能后所输出的第一个波形可能是不规则的。当输出通道工作在串联

模式时(PWMCTL 寄存器中的CONxx置1),那么)

使能相应的16位PWM 输出通

道是由P WMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个

16位PWM 通道,由通道1 的使能位控制PWM 的输出。

S12的PWM 共有四个时钟源,每一个P WM 输出通道都有两个时钟可供选择(ClockA、ClockSA 或Clock B、ClockSB)其中0、1、4、5 通道可选用ClockA和ClockSA,2、3、6、7 通道可选用ClockB、ClockSB 通道。该寄存器用来实现几个通道时钟源的选择。

用法:PCLK0 = 1 --- 通道0(PTP0)的时钟源设为ClockSA

PCLK2 = 0 --- 通道2(PTP2)的时钟源设为ClockB

PWMPRCLK 寄存器包括ClockA预分频和ClockB预分频的控制位。ClockA、ClockB的值为总线时钟的1/2n (0≤n≤7),具体设置参照下图。

PCKA0~PCKA2 是对ClockA进行预分频。

式为:

Clock SA=Clock A /(2*PWMSCLA)

PWMSCLB 寄存器与PWMSCLA 寄存器相似,Clock S B 就是通过对PWMSCLB 寄存器的设置来对C lockB进行分频而产生的。其计算公式为:

Clock SB=Clock B /(2*PWMSCLB)

用法:PWMPOL_PPOL0=1--- 通道0 在周期开始时输出为高电平,当计数器等于

占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变为低电平。

PWM波形对齐寄存器PWMCAE

读写Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Read/Write CAE7 CAE6 CAE5 CAE4 CAE3 CAE2 CAE1 CAE0

用法: PWMCAE_CAE0= 1--- 通道0中心对齐输出

PWMCAE_CAE7 = 0 --- 通道7 左对齐输出

注意:只有输出通道被关闭后才能对其进行设置,即通道被激活后不能对其进行设置。

读写Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Read

CON67 CON45 CON23 CON01 PSWAI PFRZ 0 0

Write

等待模式

冻结模式

只有当相应的通道关闭后,才能改变这些控制字。

用法:

PWMCTL_CON67=1--- 通道6、7 级联成一个16位的PWM通道。此时只有7通道的控制字起作用,原通道7的使能位、PWM输出极性选择位、时钟选择控制位以及对齐方式选择位用来设置级联后的PWM输出特性

PWMCTL_CON67=0 --- 通道6,7 通道不级联

CON45、CON23、CON01 的用法同CON67相似。设置此控制字的意义在于扩大了PWM 对外输出脉冲的频率范围。

PSW AI=1 --- M CU 一旦处于等待状态,就会停止时钟的输入。这样就不会因时钟在空操作而费电;当它置为0,则M CU 就是处于等待状态,也允许时钟的输入。

PFRZ=1 --- M CU 一旦处于冻结状态,就会停止计数器工作。

S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。

WRAP3-WRAP0:回绕通道选择位。这些选择位只有在ATDCTL5的MUTL位为1的情况下,也就是在多通道转换模式下,才是有效的。WRAP[3:0]=0时,为保留值;WRAP[3:0]=x (1≤x≤15)时,在多通道转换模式下,当完成对第x个模拟输入通道(ANx)的ATD转换之后,下一个ATD转换通道将回绕到第0个通道AN0,而不是第x+1个通道。

ETRIG0-ETRIG3,此位无效。

SRES[1:0]:ATD转换精度选择位。

SRES1 SRES0 ATD转换精度SRES1 SRES0 ATD转换精度

0 0 8位 1 0 12位

0 1 10位 1 1 保留

SMP_DIS:采样前放电控制位。1=在对模拟输入信号采样前,释放ATD模块内部的采样电容中的电荷,这会使采样时间增加两个ATD转换时钟周期,主要用于开路检测。

ETRIGCH[3:0]:外部触发通道选择位。当ETRIGCH[3:0]为x(1≤x≤15)时,选择第x 个模拟输入通道ANx为外部触发信号。

将中断当前的转化过程。

ADPU:A/D 使能控制位,相当于一个开关,用来启动/禁止A/D转换

1 = A/D 模块上电

0 = 禁止A/D,以减少功耗

AFFC:A/D 快速转换完成标志位清零

1 = 快速标志位清零顺序,每次读取结果寄存器自动清零

0 = 正常标志位清零顺序,需要软件方式对状态标志位清零

AWAI:A/D 等待模式

1 = 等待模式下,ATD继续运行

0 = 等待模式下,ATD停止运行,以降低功耗

发时,启动A/D转换,否则不进行转换。0--忽略外部触发;1--有外部触发时开始转换,此时AN7不能用于A/D转换。

ASCIE:A/D 转化序列转换结束中断使能控制位

1 = 允许ATD转换序列转换结束后发生中断

0 = 禁止ATD 中断

ASCIF:A/D转换序列转换结束中断标志,只用于读。

1 = 发生中断

0 = 为发生中断

飞思卡尔智能汽车设计技术报告

第九届“飞思卡尔”杯全国大学生 智能汽车竞赛 技术报告 学校:武汉科技大学队 伍名称:首安二队参赛 队员:韦天 肖杨吴光星带队 教师:章政 0敏

I

关于技术报告和研究论文使用授权的说明 本人完全了解第九届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名: 带队教师签名: 日期:

II

目录 第一章引言 (1) 1.1 概述 (1) 1.2 内容分布 (1) 第二章系统总体设计 (2) 2.1 设计概述 (3) 2.2 控制芯片的选择 (3) 2.3 线性 CCD 检测的基本原理 (3) 2.3 系统结极 (5) 第三章机械系统设计 (7) 3.1 底盘加固 (7) 3.2 轮胎处理 (7) 3.3 四轮定位 (8) 3.4 差速器的调整 (12) 3.5 舵机的安装 (13) 3.6 保护杆的安装 (15) 3.7 CCD的安装 (16) 3.8 编码器的安装 (17) 3.9 检测起跑线光电管及加速度计陀螺仪的安装 (18) 第四章硬件系统设计 (19) 4.1 最小系统版 (20) 4.2 电源模块 (21) 4.3 CCD模块 (22) 4.4 驱动桥模块 (23) 4.5 车身姿态检测模块 (24) 4.7 测速模块 (24) 4.8 OLED液晶屏及按键、拨码 (25) 第5章程序设计 (27)

飞思卡尔单片机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窗口

飞思卡尔锁相环

备战飞思卡尔智能车大赛.开始模块总结. 锁相环设置. 公式: 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]对应表

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

附录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指令中;

飞思卡尔单片机编程

关于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;

基于嵌入式STM32的飞思卡尔智能车设计



飞思卡尔智能车大赛是面向全国大学生举办的应用型比赛, 旨在培养创新精 神、协作精神,提高工程实践能力的科技活动。大赛主要是要求小车自主循迹并 在最短时间内走完整个赛道。针对小车所安装传感器的不同,大赛分为光电组、 电磁组和摄像头组。 本文介绍了本院自动化系第一届大学生智能汽车竟赛的智能车系统。 包括总 体方案设计、机械结构设计、硬件电路设计、软件设计以及系统的调试与分析。 机械结构设计部分主要介绍了对车模的改进,以及舵机随动系统的机械结构。硬 件电路设计部分主要介绍了智能车系统的硬件电路设计, 包括原理图和 PCB 设计 智能车系统的软、 硬件结构及其开发流程。该智能车车模采用学校统一提供的飞 思卡尔车模,系统以 STM32F103C8T6 作为整个系统信息处理和控制命令的核心, 使用激光传感器检测道路信息使小车实现自主循迹的功能
关键字:飞思卡尔智能车STM32F103C8T6
激光传感器
第一章 概述

1.1 专业课程设计题目
基于嵌入式 STM32 的飞思卡尔智能车设计
1.2 专业课程设计的目的与内容
1.2.1 目的 让学生运用所学的计算机、传感器、电子电路、自动控制等知识,在老师的 指导下,结合飞思卡尔智能车的设计独立地开展自动化专业的综合设计与实验, 锻炼学生对实际问题的分析和解决能力,提高工程意识,为以后的毕业设计和今 后从事相关工作打下一定的基础。 1.2.2 内容 本次智能车大赛分为光电组和创新做,我们选择光电组小车完成循迹功能。 该智能车车模采用学校统一提供的飞思卡尔车模, 系统以 STM32F103C8T6 作为整 个系统信息处理和控制命令的核心,我们对系统进行了创造性的优化: 其一, 硬件上采用激光传感器的方案, 软件上采用 keil 开发环境进行调试、 算法、弯道预判。 其二,传感器可以随动跟线,提高了检测范围。 其三,独立设计了控制电路板,充分利用 STM32 单片机现有模块进行编程, 同时拨码开关、状态指示灯等方便了算法调试。
1.3 方案的研讨与制定
1.3.1传感器选择方案 方案一:选用红外管作为赛道信息采集传感器。 由于识别赛道主要是识别黑白两种不同的颜色, 而红外对管恰好就能实现区 分黑白的功能,当红外光照在白色KT板上时,由于赛道的漫反射作用,使得一部 分红外光能反射回来, 让接收管接的输出引脚的电压发生变化,通过采集这个电 压的变化情况来区分红外光点的位置情况,以达到区分赛道与底板的作用。 红外管的优点在于价格便宜,耐用;缺点却用很多:1、红外光线在自然环 境中,无论是室内还是室外均比较常见,就使得其抗干扰能力不强,容易受环境 变化的影响。2、调试不方面,由于红外光是不可见光,调试的时候需要采用比 较麻烦的方法来判断光电的位置。3、由于红外管光线的直线性不好,就使得红 外传感器所能准确的判断的最远距离比较小,也就是通常所说的前瞻不够远。

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

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

飞思卡尔智能车电机资料

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为舵机的控制线。

飞思卡尔单片机知识点

1、单片机组成:1> CPU 2> 存储器3>I/O ; 2、存储器包括2大类:ROM , RAM 3、标准ASCII码使用(1)个字节表示字符; 4、BCD码是用()进制表示的()的数据; 5、HCS08QG8的最小系统包括(电源电路,复位电路,下载口,(内部时钟)); 6、QG8管脚数量(16)、只能输入的是(PTA5)、只能输出的是(PTA4)、程序下载的是、接外部时钟的是; 7、QG8的管脚可以作为数字输入输出、也可以作为模拟输入,可以作为模拟输入的有(); 8、QG8管脚复用优先级最低的功能是(I/O); 9、QG8存储器配置中,不同资源的分界线……; 10、CPU寄存器有(A, HX, PC, CCR, SP); 11、可以执行位操作的地址范围(0X0000~0X005F); 12、有地址的寄存器分成了(3)块(0页,高页,非易失); 13、如何在C语言中定义常数(数据类型变量名;),如何指定变量的地址(数据类型变量名@ 地址;); 14、堆栈的管理者是寄存器(SP); 15、SP的复位缺省值是(0X00FF); 16、堆栈对数据的操作特点是(向上生长型:先压后涨、先减后弹); 17、堆栈一般在RAM的高地址区域还是低地址区域?高地址区 18、内部时钟源包括哪4大部分? 19、外部时钟分哪2大类;振荡器,整形外部时钟 20、内部时钟中FLL固定倍频(512倍频); 21、ICS的7种工作模式(FEI, FEE, FBI, FBILP, FBE, FBELP, stop); 22、ICS的内部参考时钟是可以校准、微调的,调整的寄存器名(ICSTRM);该寄存器的数值越大,输出时钟频率越(低); 23、FLASH是按页管理的,页大小(512)字节,每页分(8)行; 24、高页寄存器位于FLASH的最后一页的(第六行/0xFFB0~0xFFBF)位置; 25、FLASH的最后一页最后一行是(中断向量); 26、FLASH块保护寄存器(FPROT);块加密寄存器(FOPT);对应的非易失寄存器分别是(NVOPT, NVPROT); 27、FLASH操作的一般过程是(); 28、FLASH操作的有效命令有(空检查,字节编程,突发模式编程,页擦除,全部ROM 擦除); 29、记录程序运行状态的CPU寄存器是(CCR); 30、指令系统包括6大类指令,分别是(算术运算指令、数据传送指令、数据和位操作、逻辑运算、程序控制、堆栈处理); 31、寻址方式是指(CPU访问操作数和数据的方法); 32、寻址方式包括7大类16种,分别是: INH IMM DTR EXT IX,IX1,IX2,SP1,SP2,IX+,IX1+ REL IMD, DD,IX+D,DIX+ 33、8指令模板和6指令模板分别是(); 34、QG8是高电平复位还是低电平复位?低电平 35、QG8数据存储器RAM的大小为(512)字节; 36、上电复位期间将管脚(A4)设置为(低)电平可以进入调试模式 37、QG8的存储器结构为冯·诺伊曼还是哈佛结构?冯诺依曼

飞思卡尔 智能车舵机控制

智能车的制作中,看经验来说,舵机的控制是个关键.相比驱动电机的调速,舵机的控制对于智能车的整体速度来说要重要的多. PID算法是个经典的算法,一定要将舵机的PID调好,这样来说即使不进行驱动电机的调速(匀速),也能跑出一个很好的成绩. 机械方面: 从我们的测试上来看,舵机的力矩比较大,完全足以驱动前轮的转向.因此舵机的相应速度就成了关键.怎么增加舵机的响应速度呢?更改舵机的电路?不行,组委会不允许.一个非常有效的办法是更改舵机连接件的长度.我们来看看示意图: 从上图我们能看到,当舵机转动时,左右轮子就发生偏转.很明显,连接件长度增加,就会使舵机转动更小的转角而达到同样的效果.舵机的特点是转动一定的角度需要一定的时间.不如说(只是比喻,没有数据),舵机转动10度需要2ms,那么要使轮子转动同样的角度,增长连接件后就只需要转动5度,那么时间是1ms,就能反应更快了.据经验,这个舵机的连接件还有必要修改.大约增长0.5倍~2倍. 在今年中,有人使用了两个舵机分别控制两个轮子.想法很好.但今年不允许使用了.

接下来就是软件上面的问题了. 这里的软件问题不单单是软件上的问题,因为我们要牵涉到传感器的布局问题.其实,没有人说自己的传感器布局是最好的,但是肯定有最适合你的算法的.比如说,常规的传感器布局是如下图: 这里好像说到了传感器,我们只是略微的一提.上图只是个示意图,意思就是在中心的地方传感器比较的密集,在两边的地方传感器比较的稀疏.这样做是有好处的,大家看车辆在行驶到转弯处的情况: 相信看到这里,大家应该是一目了然了,在转弯的时候,车是偏离跑道的,所以两边比较稀疏还是比较科学的,关于这个,我们将在传感器中在仔细讨论。 在说到接下来的舵机的控制问题,方法比较的多,有人是根据传感器的状态,运用查表法差出舵机应该的转角,这个做法简单,而且具有较好的滤波"效果",能够将错误的传感器状态滤掉;还有人根据计算出来的传感器的中心点(比

飞思卡尔智能车竞赛光电组技术报告

第九届“飞思卡尔”杯全国大学生智能车竞赛光电组技术报告 学校:中北大学 伍名称:ARES 赛队员:贺彦兴 王志强 雷鸿 队教师:闫晓燕甄国涌

关于技术报告和研究论文使用授权的说明书本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名: 带队教师签名: 日期:2014-09-15日

摘要 本文介绍了第九届“飞思卡尔杯全国大学生智能车大赛光电组中北大学参赛队伍整个系统核心采用飞思卡尔单片机MC9S12XS128MAA ,利用TSL1401线性CCD 对赛道的行扫描采集信息来引导智能小车的前进方向。机械系统设计包括前轮定位、方向转角调整,重心设计器件布局设计等。硬件系统设计包括线性CCD传感器安装调整,电机驱动电路,电源管理等模块的设计。软件上以经典的PID算法为主,辅以小规Bang-Bang 算法来控制智能车的转向和速度。在智能车系统设计开发过程中使用Altium Designer设计制作pcb电路板,CodeWarriorIDE作为软件开发平台,Nokia5110屏用来显示各实时参数信息并利用蓝牙通信模块和串口模块辅 助调试。关键字:智能车摄像头控制器算法。

目录 1绪论 (1) 1.1 竞赛背景 (1) 1.2国内外智能车辆发展状况 (1) 1.3 智能车大赛简介 (2) 1.4 第九届比赛规则简介 (2) 2智能车系统设计总述 (2) 2.1机械系统概述 (3) 2.2硬件系统概述 (5) 2.3软件系统概述 (6) 3智能车机械系统设计 (7) 3.1智能车的整体结构 (7) 3.2前轮定位 (7) 3.3智能车后轮减速齿轮机构调整 (8) 3.4传感器的安装 (8) 4智能车硬件系统设计 (8) 4.1XS128芯片介绍 (8) 4.2传感器板设计 (8) 4.2.1电磁传感器方案选择 (8) 4.2.2电源管理模 (9) 4.2.3电机驱动模块 (10) 4.2.4编码器 (11) 5智能车软件系统设 (11) 5.1程序概述 (11) 5.2采集传感器信息及处理 (11) 5.3计算赛道信息 (13) 5.4转向控制策略 (17) 5.5速度控制策略 (19) 6总结 (19)

飞思卡尔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;

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

先静下心来看几篇技术报告,可以是几个人一起看,边看边讨论,大致了解智能车制作的过程及所要完成的任务。 看完报告之后,对智能车也有了大概的了解,其实总结起来,要完成的任务也很简单,即输入模块——控制——输出。 (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只能设置为输入。

飞思卡尔智能车设计报告

飞思卡尔智能车设计报告

目录 1.摘要 (3) 2.关键字 (3) 3.系统整体功能模块 (3) 4.电源模块设计 (4) 5.驱动电路设计 (4) 6.干簧管设计 (5) 7.传感器模块设计 (6) 8.传感器布局 (6) 9.软件设计 (7) 9.1控制算法 (7) 9.2软件系统实现(流程图) (10) 10.总结 (11) 11.参考文献 (12)

1.摘要 “飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等自动化专业教学指导分委员会主办的一项以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛以汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛。 本文介绍了飞思卡尔电磁组智能车系统。本智能车系统是以飞思卡尔32 位单片机K60为核心,用电感检测赛道导线激发的电磁信号, AD 采样获得当前传感器在赛道上的位置信息,通过控制舵机来改变车的转向,用增量式PID进行电机控制,用编码器来检测小车的速度,共同完成智能车的控制。 2.关键字 电磁、k60、AD、PID、电机、舵机 3.系统整体功能模块 系统整体功能结构图

4.电源模块设计 电源是一个系统正常工作的基础,电源模块为系统其他各个模块提供所需要的能源保证,因此电源模块的设计至关重要。模型车系统中接受供电的部分包括:传感器模块、单片机模块、电机驱动模块、伺服电机模块等。设计中,除了需要考虑电压范围和电流容量等基本参数外,还要在电源转换效率、噪声、干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。 全部硬件电路的电源由7.2V,2A/h的可充电镍镉电池提供。由于电路中的不同电路模块所需要的工作电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。 电源模块由若干相互独立的稳压电源电路组成。在本系统中,除了电机驱动模块的电源是直接取自电池外,其余各模块的工作电压都需要经电源管理芯片来实现。 由于智能车使用7.2V镍镉电池供电,在小车行进过程中电池电压会有所下降,故使用低压差电源管理芯片LM2940。LM2940是一款低压稳压芯片,能提供5V的固定电压输出。LM2940低压差稳压芯片克服了早期稳压芯片的缺点。与其它的稳压芯片一样,LM2940需要外接一个输出电容来保持输出的稳定性。出于稳定性考虑,需要在稳压输出端和地之间接一个47uF低等效电阻的电容器。 舵机的工作电压是6伏,采用的是LM7806。 K60单片机和5110液晶显示器需要3.3伏供电,采用的是LM1117。 5.驱动电路设计 驱动电路采用英飞凌的BTS7960,通态电阻只有16mΩ,驱动电流可达43A,具有过压、过流、过温保护功能,输入PWM频率可达到25KHz,电源电压5.5V--27.5V。BTS7960是半桥驱动,实际使用中要求电机可以正反转,故使用两片接成全桥驱动。如图下图所示。

(毕业设计)飞思卡尔智能车及机器视觉

图像处理在智能车路径识别中的应用 摘要 机器视觉技术在智能车中得到了广泛的应用,这项技术在智能车的路径识别、障碍物判断中起着重要作用。基于此,依据飞思卡尔小车的硬件架构,研究机器视觉技术应用于飞思卡尔小车。飞思卡尔智能车处理器采用了MC9S12XS128芯片,路况采集使用的是数字摄像头OV7620。 由于飞思卡尔智能车是是一款竞速小车,因此图像采集和处理要协调准确性和快速性,需要找到其中的最优控制。因此本设计主要需要完成的任务是:怎样用摄像头准确的采集每一场的图像,然后怎样进行二值化处理;以及怎样对图像进行去噪处理;最后也就是本设计的难点也是设计的核心,怎样对小车的轨迹进行补线。 本设计的先进性,在众多的图像处理技术中找到了适合飞思卡尔智能车的图像处理方法。充分发挥了摄像头的有点。经过小车的实际测试以及相关的MATLAB 仿真,最终相关设计内容都基本满足要求。小车的稳定性和快速性得到显著提高。 关键词:OV7620,视频采集,图像处理,二值化

The Application of Image Processing in the Recognition of Intelligent Vehicle Path ABSTRACT CameraMachine vision technology in the smart car in a wide range of applications, the technology identified in the path of the smart car, and plays an important role in the obstacles to judge. Based on this, based on the architecture of the Freescale car, machine vision technology used in the Freescale car. Freescale smart car the processor MC9S12XS128 chip traffic collected using a digital camera OV7620. Freescale's Smart car is a racing car, so the image acquisition and processing to coordinate the accuracy and fast, you need to find the optimal control. This design need to complete the task: how to use the camera to accurately capture every image, and then how to binarization processing; and how to image denoising; last is the difficulty of this design is the design of the core, how to fill line on the trajectory of the car. The advanced nature of the design found in many image processing techniques of image processing methods for Freescale Smart Car. Give full play to the camera a bit. The actual testing of the car and MATLAB simulation, the final design content can basically meet the requirements. The car's stability and fast to get improved significantly. KEY WORDS:OV7620,Video Capture,PictureProcessing,Binarization

飞思卡尔智能车程序

Main.c #include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12db128b" #include "define.h" #include "init.h" // variable used in video process volatile unsigned char image_data[ROW_MAX][LINE_MAX] ; // data array of picture unsigned char black_x[ROW_MAX] ; // 0ne-dimensional array unsigned char row ; // x-position of the array unsigned char line ; // y-position of the array unsigned int row_count ; // row counter unsigned char line_sample ; // used to counter in AD unsigned char row_image ; unsigned char line_temp ; // temperary variable used in data transfer unsigned char sample_data[LINE_MAX] ; // used to save one-dimension array got in interruption // variables below are used in speed measure Unsigned char pulse[5] ; // used to save data in PA process Unsigned char counter; // temporary counter in Speed detect Unsigned char cur_speed; // current speed short stand; short data; unsigned char curve ; // valve used to decide straight or turn short Bounds(short data); short FuzzyLogic(short stand); /*----------------------------------------------------------------------------*\ receive_sci \*----------------------------------------------------------------------------*/ unsigned char receive_sci(void) // receive data through sci { unsigned char sci_data; while(SCI0SR1_RDRF!=1); sci_data=SCI0DRL; return sci_data; } /*----------------------------------------------------------------------------*\ transmit_sci \*----------------------------------------------------------------------------*/ void transmit_sci(unsigned char transmit_data) // send data through sci { while(SCI0SR1_TC!=1); while(SCI0SR1_TDRE!=1);

相关文档
最新文档