STM32双核板的应用设计与ISP的从机软件升级
摘要:针对单片机应用设计中的资源不足、可靠性差和软件升级问题,设计了一款基于Cortex—M3内核的双核板。该双核板在不增加开发难度的情况下使单片机资源翻倍;通过两个MCU之间的任务合理分工和相互监督,提高了整体系统的可靠性;利用CAN总线完成主机与上位机的通信和升级程序的下载,并通过控制引脚实现基于ISP功能的从机软件升级。
引言
在单片机的应用设计中,常常会遇到如下问题:其一,某一熟悉类型的单片机功能可用,性价比也很好,但限于某种内部资源(如串口数、A/D路数等)不足,不得不选用更高档或不太熟悉的单片机,造成资源的浪费和开发周期的延长。其二,在海洋远程监测等重要领域,对控制器的可靠性要求较高,而单片机存在死机的可能性,即使可以通过配备看门狗来避免这种情况,但这种“粗暴”的复位方式并不合理(首先,复位打乱了正常的数据采集和处理工作,导致重要数据丢失;其次,即便能记录下复位时间和次数,但复位原因和复位前状态等信息无法侦测,一些本该解决的BUG被掩盖,导致频繁复位)。其三,由于开发周期不足或测试不充分,导致设备投入运行后出现故障,而这些故障往往通过软件升级的方式可以解决,但由于设备的应用场所比较特殊(如水下),导致软件升级的成本很高。
针对上述3种情况,在实际的项目应用中设计了基于STM32的双核板,较好地解决了资源不足、稳定性差和基于CAN总线的远程升级等问题,具有性价比高、开发周期短等优点。
1 双核板设计
STM32系列单片机具有高性能Cortex—M3内核和外设,功耗低,集成度高,性价比高。另外,ST公司还提供了外设的标准库函数,屏蔽了底层硬件细节,能够使开发人员轻松完成产品的开发,缩短系统开发时间。正因为如此,STM32系列单片机得到了开发者的青睐。其应用领域和客户群不断扩大。其中的 STM32F107属于互联型系列,具有以太网和CAN总线接口,在数据通信方面具有独特的优势。一种基于STM32F107的双核板如图1所示。
图1中,两个STM32F107最小系统模块分别称为A-CORE和M-CORE,A-CORE具有外看门狗,为主机模块;M-CORE不具有外看门狗,但其RST/BOOT0引脚受A-CORE的控制,可以通过串口实现ISP总线升级,为从机模块。由于A-CORE和M-CORE均具有电源系统、复位电路和下载接口等调试所需的基本要素,因此可以预先焊接和调试好。在具体项目的开发应用中,将双核板作为一个独立的元件嵌入,一些软件可以提前验证和编写,大大缩短了产品的开发周期。
在正常工作时,主从机两个模块独立工作,两者通过SPI总线相互通信。SPI接口传输速率可达到18 Mbps,比I2C和UART通信要快得多。由于采用双核,通用I/O引脚显著增多,不仅可以完成更加复杂的设计,而且降低了布局布线的难度。对于熟悉 STM32的开发者来说,开发难度基本不变,而可使用的资源却几乎成倍增加。
在该双核板的设计中,还考虑了A—CORE对M—CORE的在线升级问题。图1中M—CORE的RST、BOOT0两个引脚受A—CORE控制,来实现 M-CORE的复位和复位地址选择;而ISP-AT-MR和ISP-AR-MT两个引脚则是作为USART接口,实现对M-CORE的ISP升级。
2 可靠性设计
在本文的应用中,A—CORE和M—CORE分工合作。A—CORE主要完成系统的管理工作,如人机交互、数据存储、通信等;M—CORE主要完成信息采集、外部设备控制等功能,这样设计的优点是功能分明、负荷分担。负责采集控制的M—CORE可以集中精力完成数据采集和辅助的控制工作;而负责管理的A— CORE除了完成人机交互、数据存储和通信外,还需要定期发起与M—CORE的通信,以保证相互监督。
M—CORE收到A—CORE的指令后,会将当前的工作状态报告给A—CORE,再由A—CORE通过CAN总线等手段上传给更高层的通信主机。如果A— CORE发现M—CORE不能正常回复信息,则说明M—CORE处于不正常状态,必要时可实现对M—CORE的“危机干预”。例如,在连续多次均不能正常通信的情况下,可以认为M—CORE已处于死机状态,A—CORE将复位M-CORE。A—CORE和M—CORE的状态转换图如图2所示。
显然,这种双核结构和定时通信机制,可以使每个MCU知道对方的工作情况。虽然在结构上分出了A—CORE和M—CORE,但由于每个MCU都有CAN总线与通信主机相连,因此每个MCU都可以单独通向主机汇报工作状态,汇报的内容都可以通过CAN总线接收到,因此起到了相互监督的作用。
3 基于CAN总线的软件升级
- STM32学习笔记:在IAR中建立FWlib 3.0项目(08-13)
- 基于STM32单片机的火控系统信号采集测试(11-14)
- 基于LabVIEW的STM32调试平台设计(11-17)
- 基于STM32的LF RFID识别系统设计(11-25)
- STM32中断与嵌套NVIC快速入门(01-25)
- 基于TLC5947的旋转LED屏显示控制器设计(01-25)