KEAZ128调试【技术贴】 | 给力,看北科大智能车队如何解决?如何测试?

分享到:

KEAZ128调试总结北京科技大学智能车队

 

        从飞思卡尔公司申请拿到KEAZ128芯片后,我们就开始研究、设计KEA最小系统,同时我也开始学习它的技术手册、对照底层库配置我们小车需要的控制底层框架。由于在KEAZ128的硬件最小系统设计、第二主控KEA主板设计和程序框架构建这些工作都有我全程参与,所以我对这款芯片的印象还是比较深刻的。KEAZ128与K60同属于ARM CortexM系列芯片,但KEAZ128为ARM Cortex-M0+内核,K60为ARM Cortex- M4内核。两者在性能方面有相同也有不同,下面我将分模块总结在调试KEAZ128的过程中的一些经验。


1.FTM(Timer/PWM Module)

1.1功能对比

        FTM模块可以产生PWM波,同时也有脉冲计数的功能。相应的K60的FTM模块也有此功能。两微控制器PWM功能部分对比如下:
        K60:3个FTM模块——FTM0,FTM1,FTM2,其中FTM1和FTM2有正交解码功能。FTM0有8个通道,FTM1和FTM2各有两个通道。
        KEAZ128:3个FTM模块——FTM0,FTM1,FTM2,没有正交解码功能。FTM0,FTM1各有0,1两个通道。FTM2有0-5共6个通道。对于一个FTM模块而言,每个通道产生的脉冲频率是一致的。


1.2设计分析

        KEAZ128硬件资源的限制,对设计光电直立E车硬件电路造成了一些困难。具体分析如下:光电直立E车要求具有双电机,双电机需要主控芯片提供同频率的PWM波来控制,因此,选用FTM2模块的两个通道;电机测速需要用到两个编码器(或对管),每个编码器(或对管)有两根信号线,因此,各需占用一个FTM模块,然而在电机测速方面,KEAZ128的3个FTM模块只具有计数功能,没有正交解码功能。因此,我们利用D触发器设计了硬件电路实现方向判定,如图1所示。


方向判定电路
图1. 方向判定电路


        U1为双通道D触发器,将编码器(或对管)的两根信号线分别接D触发器的DATA1引脚和CLOCK1引脚,将PHA_1作为数据信号接DATA1,PHB_1作为时钟信号接CLOCK1,当PHB_1有上升沿时,PHA_1的电平将被锁存到Q1引脚。
这样,通过读取Q1引脚电平的高低,就可以判定电机的旋转方向。综合PTM的计数功能,就可以实现正交解码功能。


2.GP10模块

        此模块同样是单片机控制中最常用也是最基本的一部分了。
        KEAZ128(80引脚LQFP封装)具有九组I/0端口,包括71个I/0引脚。其中除I端口有7个管脚之外,其余A、B、C、D、E、F、G、H各有8个管脚。
        KEAZ128的引脚控制和K60有很大的不同。所有 8位端口引脚都映射到32位GPIO/FGPIO寄存器,GPIO/FGPIOA寄存器控制PTA0 - PTA7、PTB0 - PTB7、PTC0 - PTC7、PTD0 - PTD7共32个引脚。GPIO/FGPIOB寄存器控制PTE0 - PTE7、PTF0 - PTF7、PTG0 - PTG7、PTH0 - PTH7共32个引脚。GPIO/FGPIOC寄存器控制PTI0 – PTI6共6个引脚。
        通过配置GPIO模块的数据输入和数据输出寄存器(GPIOx_PDIR 和GPIOx_PDOR)可以配置输入输出引脚上驱动的逻辑电平。通过数据方向寄存器(GPIOx_PDDR)可以配置引脚为输入或输出。关于配置I/0口的某些特定功能,有一个比较快捷的方法,即配置KEAZ128的系统集成模块(SIM)的引脚选择寄存器0(SIM_PINSEL0)和引脚选择寄存器1(SIM_PINSEL1),即可便捷的将相应功能绑定到相应的引脚上。
         KEAZ128对于外围电路的I/O口的分配还是相当足够的。其中停车用的干簧管用了两个I/O口(PTC6、PTC7),拨码开关用了4个I/O口(PTG1、PTG2、PTG3、PTE2),控制电机方向用了两个I/O口(PTH0、PTE6),读取D触发器输出用了两个I/O口(PTB10、PTB11)。


3.ICS模块

3.1功能对比

        KEAZ128的ICS模块和K60的MCG模块相似,但功能较少。
        KEAZ128的ICS模块主要配置内核(系统)时钟和总线时钟,而K60的MCG模块除配置内核(系统)时钟和总线时钟外,还可以配置FlexBus时钟和Flash时钟。KEAZ128的系统时钟最高可以配到48MHZ,而K60可以配到120MHZ。


4.ADC模块

4.1功能对比

        不同于K60有2个ADC模块(ADC0、ADC1),KEAZ128只有一个ADC模块(ADC),要配置的寄存器也比K60少一部分,能实现的功能也较少一些。
         K60的ADC模块分a、b通道且可选择8、10、12、16位精度。KEAZ128不分a、b通道,且只可选择8、10、12位精度,可配置ADC0_SE0- ADC0_SE15共16个通道。


5.PIT模块

5.1工作方式

        PIT(周期中断定时器)模块是一系列的定时器,其可以用来引起中断和触发DMA通道。PIT模块没有外部引脚,当使能时,定时器定期产生触发。定时器加载载入值寄存器(PIT_LDVALn)中指定的开始值,下降计数到0,然后再次加载单独的开始值。每当定时器达到0时,它将生成一个触发脉冲并置位中断标志。所有中断可以通过设置控制寄存器(PIT_TCTRLn)来使能或屏蔽。一个新的中断只有在当前一个中断被清零后才能产生。如果有需要,定时器的当前计数值可以通过当前定时器值寄存器(PIT_CVALn)被读取。通过先禁用后使能的方式可以重启计数器周期。
        控制寄存器(PIT_TCTRLn)使能或禁用PIT定时器时钟和控制定时器,载入值寄存器(PIT_LDVALn)设置定时器开始值,当计数器计算到此值时,将置位中断标志位,并重新载入设定值。


5.2功能对比

        K60有4个PIT模块(PIT0、PIT1、PIT2、PIT3),而KEAZ128只有2个PIT模块(PIT0、PIT1)。模块数量的减少给程序移植带来了困难。KEAZ128和K60程序的主控制周期都是由PIT0产生的5ms中断,在K60中用PIT3来提供延时,而在KEAZ128中我们只能用PIT1来提供延时。


6.FIMRE模块

6.1调试经验

         FTMRE模块即Flash存储器模块。K60的ROM是512K字节的,而KEAZ128的ROM是128K字节。KEAZ128的Flash数据块分为256个512 字节的扇区。调车时,在线调试,程序是在RAM里面运行。程序下载到单片机是下载到ROM里面,而我们开辟Flash空间也就是开辟没有被程序占用的空间。调K60时,flash是从240K字节以后开辟的(电磁程序编译后大约是51k字节),而调KEAZ128时我们把Flash配置成从100K字节开始,在将K60的Flash程序移植到KEAZ128时,需要注意Flash的起始位置,否则容易导致下载程序后芯片断电重启,或者写完Flash后程序不能运行。


7.UART模块

7.1调试经验

       UART模块主要用在光电车和摄像头车,CCD和摄像头图像需要通过串口发送图像数据到上位机,而电磁车在调试时没用到UART模块。
KEAZ128有3个URAT模块,分别是URAT0、URAT1、URAT2。单片机主频48MHZ,总线频率为20MHZ,串口波特率可以设置为115200。但是,KEAZ128串口发送数据多,占用时间长,一定不能把此部分程序放在主控制中断函数中,否则容易使程序运行不正常。最好将UART程序放在主中断之外的死循环中,如放在main函数中,随时可以被打断,这样在传送数据过程中,不会影响到其他程序的执行。


8.SPI模块

8.1调试经验

        KEAZ128有1个SPI模块(SPI0)。此模块对我们意义重大,因为我们发送数据到从片都用到了这个模块。之前调K60车时,K60的SPI模块有FIFO(先进先出队列),在高速数据传送中FIFO作用很大,主机先把数据串存放到发送FIFO中,当然之前要先配好各种寄存器及检测到发送FIFO的空状态,然后再通过硬件SPI协议将发送FIFO中的数据传送到从片的接收FIFO中,当然在这之前也需要检测等待接收FIFO状态为空,最后从片再把接收FIFO中的数据取出存放到从片中。KEAZ128的SPI模块没有有FIFO,而是通过读取寄存器SPI0_F的SPTEF位,来判断传送数据缓冲区是否为空,不为空时则将数据写入SPI0_D寄存器。


9.IIC模块

9.1调试经验

          KEAZ128有2个IIC模块(IIC0、IIC1),我们最重要的外设----键盘(芯片是ZLG7290)使用了IIC1模块与单片机通信。KEAZ128的IIC模块和K60基本相同,当时调K60时用的是硬件IIC,之前的底层程序已经配好,对照K60的底层程序,来配置KEAZ128相应的寄存器,最终实现了键盘与单片机的通信。
          简单的概括一下KEAZ128的特点,5V供电,抗干扰性强,速度快,功耗低,配置各个功能引脚较方便,有一些独特的应用便利特性。调试KEAZ128过程中只用了一部分功能,而且对于KEA单片机的学习我们还在继续,同时一些其他的功能我们并没有用到,所以以上的总结难免有不足之处,敬请谅解。

继续阅读
MPEG-4在视频监控应用中的软件实现

1 引言 目前,用于数字视频监控的图像压缩标准主要是H.261 和MPEG-1,他们在实际应用中有一定的局限性。第一,他们的适应性差,不能根据网络情况自适应的调节传输率,使得网络发生拥塞时性能急剧下