ARM微控制器产品平台的换型及软硬件功能移植

2018-06-15 08:00
单片机与嵌入式系统应用 2018年6期
关键词:外设微控制器板卡

(沈阳新松机器人自动化股份有限公司,沈阳 110168)

引 言

近年来,消费类电子产品的竞争不断加剧,以ARM微控制器(MCU)为核心的电子产品随着产品迭代速度的不断加快得到更广泛的应用。而由于受产品性能提升、产品功能增加、原控制器芯片停产等因素的影响,微控制器通常会面临换型及升级。本文介绍了换型过程中需要考虑的因素、选型方案以及软硬件功能在新平台上的移植过程。

1 芯片换型方案概述

原产品中应用的微控制器型号为Microchip公司的AT91SAM7X256(以下简称AT91),采用ARM7 TDMI架构,最高主频达55 MHz,内部SRAM空间为64 KB,Flash空间为256 KB,主要实现网络通信、CAN通信、电量监控、固件升级以及一些计算功能,根据功能需求移植了μC/OS-II嵌入式实时操作系统及LwIP嵌入式网络协议栈。新产品中增加了新的通信协议以及更复杂的计算过程,对微控制器的主频要求提高,且对内部RAM及Flash容量要求更大,需要对微控制器进行升级或者换型。

在微控制器选型时,需要综合考虑新控制器主频、外设接口要求、芯片体积要求、功耗要求、内部存储资源要求、硬件及软件功能实现的难易程度、后期服务及维护的难易程度等因素。AT91微控制器采用ARM V4体系结构,在ARM体系结构的不断升级中逐渐被低成本、低功耗且性能更高的ARM V7-M系列微控制器所替代。通过对这一系列产品的市场调研,ST公司的STM32F系列产品及TI公司的Tiva C系列微控制器基本符合新产品对微控制器的主频、外设接口、芯片体积以及内部存储空间要求。因为STM32F系列产品市场占有率较高,且STM32F具有Cortex-M0、Cortex-M3、Cortex-M4、Cortex-M7多种系列的产品,每一系列产品都有部分芯片外设接口相同,芯片引脚兼容,可直接替换升级。考虑到产品未来升级时可以降低板卡制作成本以及芯片的出货量,最终选择了STM32F407VGT6(以下简称STM32F407)作为新的MCU。该芯片主频可达168 MHz,内部SRAM存储空间为192 KB,Flash存储空间为1 MB,内部具有以太网、CAN、SPI、USB、UART等多种外设接口,采用LQFP100封装,额定功耗为500 mW左右。虽然该MCU与AT91的引脚数相同,但引脚不兼容,需要根据引脚定义重新绘制PCB;而软件移植方面,Micrium官网上可以找到μC/OS-II系统在STM32F407下移植的工程示例,为代码的移植过程节省了开发及调试的时间。

2 ARM微控制器性能对比及评估

通过对市场上主流微控制器芯片的调研,选择了STM32F407作为新的MCU,并通过硬件指标确认其基本满足芯片选型要求。为进一步论证方案的可行性,应通过运行一些简单的程序对两款芯片的性能进行对比,以此评定经过选型的芯片是否满足新的应用需求。

两款芯片的性能评估主要从两个方面入手,考察微控制器GPIO接口翻转频率及运算速度。首先考察的是GPIO接口翻转的频率,在主函数中循环翻转某个GPIO端口的电平,应用逻辑分析仪观察电平翻转情况并测量高低电平的持续时间。随后,为了评估微控制器的运算速度,编辑了Calculate( )函数,根据运算完成的时间来评估两款微控制器的性能,评估结果如表1所列。

表1 微控制器性能评估对照表

在GPIO接口翻转频率测试的代码中,首先要在初始化的过程中对系统时钟进行设置,AT91的时钟由外部时钟晶振提供,通过倍频与分频,最终选择了40 MHz作为系统时钟频率。而STM32F407的时钟频率设置文件system_stm32f4xx.c可以通过官方提供的时钟配置文件来自动生成。为了方便计算与比较,系统时钟设置为120 MHz,测试结果表明,STM32F407的电平翻转周期为8.125 ns,占空比约为50%,波形接近方波,周期为16.25 ns,频率为60 MHz。而AT91的I/O接口翻转频率除受系统时钟频率影响外,还受其自身端口通信频率限制,频率为6.6 MHz,占空比为50%,方波周期为304 ns,频率为3.3 MHz。

用于评估运算时间的Calculate函数是从产品应用中提取出的一个计算函数,函数包括了参数初始化及计算两部分,运算的类型包括加、减、乘、除及乘方运算5种类型,两款芯片采用了相同的运算函数及相同的开发环境,最终的运算时间分别为316 μs及1.36 ms, STM32F407对该函数的运算速度约等于AT91微控制器的4.3倍。

根据上述对比可以得出结论,STM32F407微控制器的GPIO翻转的频率和Calculate函数运算速度都是AT91的3倍以上,满足新功能对控制器性能的需求。另外,假设微控制器的运算速度与系统时钟及DMIPS两个参数相关,并存在线性关系,则STM32F407的运算速度应为AT91的(120×1.25)/(40×0.9)=4.2倍,与测试的实际结果近似,则微控制器的运算性能与系统时钟及MIPS指标有较强的相关性。虽然微控制器的计算速度还与编译工具的版本及代码的编码效率等因素相关,但该方法有助于快速评估及对比MCU的运算性能,对新器件的选型有一定指导意义。

3 硬件移植方案及实现过程

嵌入式微控制器的最小系统主要包括系统时钟、电源、复位电路、程序下载电路,这些基本电路是硬件功能移植过程中首要考虑的环节。虽然MCU厂商不同,体系结构不同,但同属ARM架构,所以在功能不变的前提下,最小系统的电路也基本相同,只需要根据芯片的引脚定义找到对应的引脚即可。

AT91最小系统中采用外部的18.432 MHz晶体及芯片内部的PLL将系统时钟设置为40 MHz。而在新产品中,为了使CAN、SPI接口通信频率与原通信频率保持一致,仍使用18.432 MHz的晶体及PLL将系统时钟设置为40 MHz的整倍数为120 MHz,这样既能提高系统的主频、GPIO接口电平翻转速率及MCU的运算速度,也能够使外设接口的通信频率与原产品一致,使新产品的板卡能够替代原产品中的微控制器板卡。对于电源电路部分,由于MCU的电源电压通常为3.3 V,电流一般不超过500 mA,所以电源电路部分基本一致。同样相同的部分还有复位电路,只需要将复位电路的RESET网络接到MCU对应的复位引脚即可。

MCU通常需要应用到JTAG接口及JTAG仿真器进行程序下载及调试,但是在产品批量生产阶段,为了方便生产人员下载固件及服务人员的现场维护,要求实现程序下载的电缆易于获取及携带。原产品AT91可应用工装软件SAM-BA和MINI USB电缆通过USB接口实现程序的烧录功能。在新平台上仍应用此方法实现此功能,但因ST提供的工装软件STM32 Flash Loader是通过RS232串口烧录程序,为简化下载电缆,在新板卡上添加一个Mini USB接口,并通过PL2303HXD芯片将USB转换为UART串口。这样,只需要一根MINI USB电缆就可以将MCU的固件程序通过上位机及工装软件下载到Flash中,实现程序的烧录功能。图1和图2是USB转串口的电路图,图1中TXD和RXD是PL2303HXD芯片的串口发送及接收引脚,应分别与STM32F407的UART串口的接收及发送引脚连接。图2中的0 Ω电阻可用于计算机给MCU板卡单独提供5 V电源来调试,而无需另接外部电源。

图1 USB转UART芯片PL2303HXD电路图

图2 USB接口电路图

实现最小系统的功能后,还需要重点关注MCU提供的外设接口,这些接口通常与GPIO引脚复用,通过软件代码的配置来实现不同的功能。在硬件平台移植的过程中,应通过阅读芯片手册对比不同MCU外设引脚分配的情况。AT91微控制器GPIO引脚数为62个,编号为PA0~PA30、PB0~PB30,每个端口都可以单独配置为GPIO或者对应的外设接口使用;STM32F407微控制器GPIO引脚数为80个,编号为PA0~PA15、PB0~PB15、PC0~PC15、PD0~PD15、PE0~PE15,可配置的I/O引脚更多,这样配置方案也更加灵活,能够最大限度地应用MCU上的各个引脚。

微控制器板卡需要实现多个板卡间的网络通信功能,所以在板卡上集成了一个以太网交换机芯片KSZ8995,完成以太网MAC层到物理层之间的协议转换。KSZ8995是一款低功耗、高性能的以太网交换芯片,内部包括5个10/100M以太网收发器,具有两种MII配置方式(MAC和PHY),可通过SPI接口对其进行初始化、参数配置、状态管理等操作。

图3是以太网交换机芯片的外围参考电路,芯片的左侧上半部分引脚是MII的交换层接口,使用到的引脚共16个,详细的引脚定义可以参阅芯片手册;左侧下半部分引脚是MII的物理层接口,这里由于STM32F407提供MII交换层接口,所以没有使用。芯片右侧为物理层通信接口,用于连接以太网变压器及其它的网络通信板卡,黑色方框圈出的是八对差分线,在PCB布线时应按照差分布线方式做等长处理。芯片上方引脚为电源和地引脚,该芯片需要提供3.3 V、2.5 V及1.8 V电源;芯片下方引脚为SPI通信引脚、复位引脚及时钟引脚。该芯片在初始化时需要通过MCU的SPI接口设置MII的通信频率、通信模式(全双工),并且发送写使能指令开启交换机芯片的通信功能。芯片的时钟引脚外接一个25 MHz的晶振,因为网络接口的数据采用4线传输方式,这样网络通信的速度最高可达100 MHz。

图3 以太网交换机芯片KSZ8995参考电路

4 软件差异及实现过程

微控制器平台换型带来的软件方面的变化体现在3个方面,微控制器底层驱动文件的变化、集成开发环境的变化、与μC/OS-II系统及LwIP以太网协议栈相关接口文件的变化。描述μC/OS-II系统及LwIP以太网协议栈在STM32平台上移植的文章较多,在此不多赘述,重点介绍底层驱动文件和集成开发环境的变化。

所谓的底层驱动文件包括引导文件、时钟配置文件、BSP(板级支持包)文件以及一些微控制器和体系结构相关的头文件。虽然不同平台这些文件的格式不同,但文件中的内容不可或缺。以STM32F407为例,引导文件和时钟配置文件的名称分别为startup_stm32f4xx.s和system_stm32f4xx.c。汇编文件的作用主要包括初始化堆栈和中断向量表,中断向量表中定义的中断除了系统异常中断外,还包括外设中断;时钟配置文件的作用是通过晶振和内部PLL设置系统时钟。初始化过程结束后,引导文件将跳转到主函数main中运行。AT91的引导文件名称是cstartup.s79,完成堆栈及系统异常中断的初始化,并将程序跳转到main函数中运行,在main函数里完成对系统时钟的设置。STM32F407的Cortex-M4内核提供了一个NVIC(内嵌向量中断控制器),可实现中断的嵌套、自动保存和恢复,动态改变中断优先级等功能,并对外设中断进行了统一的定义及管理。如需使用某一外设中断,只需找到对应的中断并定义其内容即可,而AT91平台的外设中断函数则需要用户自行定义。

STM32F407平台与AT91平台的另一个区别是BSP文件的提供。为了节省研发人员产品开发时间,ST提供了一个比较完善的BSP包,其中包括了微控制器主要外设接口的驱动固件库,库文件夹的名称为STM32F4xx_StdPeriph_Driver,内部包含了外设驱动文件和头文件。库函数中实现了对外设寄存器的操作,并对外封装成一个个功能单一的函数。用户只需要了解函数的功能,而不需要了解寄存器的定义,就可以应用外设资源,这样能够显著加快板卡开发的时间,同时也提高了上层应用代码的可移植性,方便日后MCU的换型升级。因为在产品的开发过程中,AT91没有提供比较完善的BSP文件,为了方便代码移植,自定义了板级支持包BSP.c文件,将对外设寄存器操作的函数封装到该文件中,供上层应用函数调用,并且尽量避免在应用函数中直接操作内部寄存器。这样在代码的移植过程中,只需将BSP.c文件替换为STM32F4驱动固件库中的文件,而上层的应用函数不需要做过多的修改。

集成开发环境的变化也是平台切换过程中需要考虑的因素。随着ARM体系结构的不断升级,集成开发工具需要不断更新软件版本以支持各MCU厂商推出的最新版本的芯片。在开发AT91的代码时,选用的是IAR V4.42版本,而开发STM32F4的代码时,IAR软件版本已经升级到了V6.4,两个版本的工程文件不兼容,且IAR V4.42版本不支持STM32F4系列的微控制器,所以新的功能不能基于原始工程文件开发,而应基于ST官网上提供的STM32F4系列MCU的工程示例文件来开发。文件中已经提供了工程必备的引导文件、时钟配置文件、BSP包以及主函数的定义,需要在工程中自行移植μC/OS-II系统、LwIP协议栈以及应用层的相关函数。

结 语

[1] 党武松,范寒柏,胡杨.STM32F207和DM9161A的高速以太网接口设计[J].单片机与嵌入式系统应用,2013(10).

[2] 肖继军.基于KS8995的以太网交换机设计与实现[J]. 科技广场,2012(3).

[3] 刘火良,杨森. STM32库开发实战指南:基于STM32F4[M].北京:机械工业出版社,2017.

[4] 刘火良,杨森. STM32库开发实战指南[M].北京:机械工业出版社,2013.

猜你喜欢
外设微控制器板卡
基于PCI9054的多总线通信板卡的研制
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
物联网技术在微控制器实验教学中的应用
一种基于光纤数据传输的多板卡软件程序烧写技术
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持
一种通用模拟量及开关量信号采集板卡的设计
意法半导体(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器
Microchip推出具备双ADC外设的全新器件,扩展其低成本8位PIC®单片机产品线
外设天地行情