如何连接到STM32 CAN引导程序接口?

STM32系列内部的引导加载程序使用中所述的协议安3154。由STM32F1、F2、F4、F7、L4系列支持。

本文的目的是指导如何连接到STM32 CAN引导加载程序目标,通过该接口擦除和编程设备。
首先,需要确定目标MCU是否支持CAN引导加载程序。设备上的CAN外围设备是必要条件,但还不够。本指南以STM32F429ZI Nucleo为例。


该过程可以概括为几个步骤:

1.如何在目标设备上激活引导加载程序模式。2.
2.如何识别CAN引导加载程序引脚。3.
3.如何连接到CAN接口。4.
4.如何使用CAN引导程序对MCU进行编程6
5.如何使用CAN引导程序对MCU进行编程-来自脚本8
6.如何连接到FDCAN引导加载程序
10


 
  1. 如何在目标设备上激活引导加载程序模式

  • 起点为AN2606。在那里,可以在MCU中找到引导加载程序的版本、支持的外围设备和引脚。对于F429来说,这是第33章。
  • 在第33章的开头a图案5被提及
  • 参考该模式,其中一个选项是设置硬件引导0引脚到逻辑“1”,在MCU重置后激活引导加载程序
  • 这个引导0可以在Nucleo的示意图中找到引脚位置
 
 
  • 销位于未安装的中国11连接器,紧挨着虚拟数据挖掘所以它可以很容易地用电线捆起来。
  • 还可以通过使用CubeProgrammer连接到板载ST链路来验证引导加载程序是否确实在运行
  • 可以通过以下方式连接到调试器SWD公司使用默认参数。

  • 中央处理器选项卡,当核心是Run然后Halted时,ProgramCounter应该位于0x1FFF XXXX范围,与0x0800 XXXX正常Flash执行的范围。
 

 
  • 既然引导加载程序已经准备好了,就可以进入下一步了。

 
  1. 如何识别CAN引导加载程序引脚
  • 回到AN2606,表69告诉罐头(2)外围设备确实由引导加载程序FW支持,并且处于引脚上 PB5,PB13
 

 
  • 在Nucleo的示意图中,引脚PB5,PB13在安装的集管CN7上。
 

 
  • 这一步至关重要,因为一些引导加载程序支持罐头,但随后使用的引脚(罐头接口可以由两组引脚使用,但只为BL公司)在某些封装版本(通常较小)上没有布线,或者在某些评估PCB上省略。

 
  1. 如何连接到CAN接口

  • 现在MCU正在引导加载模式下运行,引脚已经识别,是时候连接接口了。
  • 理想的情况是当PCB具有罐头收发器,则应将其从总线上拔下并仅与引导加载程序主机连接(因为一些消息ID可能与AN3154中描述的ID共享)。然而,大多数STM32评估PCB(核子,发现,评估)没有收发器。
  • 可以充当引导程序主机的工具是带有CubeProgrammer和ST-LinkV3的PC
 

 
  • 该工具也没有收发器,因此要连接到带收发器的PCB,需要带收发器的附加板,或者CAN接收、发送引脚应可在PCB上接近。没有收发器的连接还可以确保“总线”上只有两个节点(引导加载程序目标和主机)。
  • ST-LinkV3配有子板罐头带有二极管的引脚,用于连接到目标。不需要其他工具,只需要一组电线即可连接罐头(T_CAN_RX,T_CAN_TX)引脚,全球导航卫星系统(可在子板的收割台上访问)和VCC公司(T_CAN_VCC)。
 
  • 与例如相反美国汽车制造商协会这个处方处方必须连接在一起(以确保“总线”能够听到两侧的信息),以及发送通过二极管连接的线路。
 
 
  • 使用ST链路V3在安装子板的情况下,4根电线和一根跳线,连接至罐头可以实现。在上面的图片上,接地、VCC、Rx、Tx必须连接,并且CAN_ON(_O)安装了跳线。

 
  1. 如何使用CAN引导程序对MCU进行编程

设置好硬件连接后,两个板都通过USB连接到电源,现在可以建立连接。回到CubeProgrammer,连接很简单,只需选择罐头界面如果连接成功,则应显示内存的内容。
  • 选择ST链路V3
 
 
  • 端口是罐头
 

 
  • 波特率和其他设置应保持为默认值

 
 
  • 连接成功后,应显示内存内容


 
  • 现在可以像使用带SWD/JTAG连接的CubeProgrammer一样对设备进行编程,只是没有调试功能。二进制可以通过擦除和编程选项卡加载,选项字节可以修改,只有CPU选项卡不起作用。
 
  1. 如何使用CAN引导程序对MCU进行编程——从脚本开始

CubeProgrammer还附带了CLI版本(命令行界面)。这可以用于通过引导加载程序实现编程过程的自动化。
CLI版本与CubeProgrammer GUI位于同一安装文件夹中。通常:
 
C: \Program Files\STMicroelectronics\STM32Cube\STM32CubeProgramer\bin\STM32_Programer_CLI.exe程序文件

在没有任何参数的情况下从命令行调用CubeProgramer CLI将列出所有可能的配置。
 

 
在本例中,CAN配置可按如下方式使用:
 
STM32_Programer_CLI.exe-c端口=CAN
 

将二进制文件下载到设备就像提供连接参数和二进制文件的路径一样简单:
 
STM32_Programer_CLI.exe-c端口=CAN-d c:\STM32F429ZI_Nucle_144.hex
 

这些命令可以在主机PC上的脚本中使用,从而实现编程过程的自动化。
 
  1. 如何连接到FDCAN引导加载程序

不幸的是,目前还没有标准CAN这样的解决方案。AN5405描述的FDCAN引导加载程序协议与CAN BL协议略有不同,因此不能使用ST链路V3桥接器。ST链路V3还需要一个接口(另一个MCU)将CAN消息转发到FDCAN总线。
由于FDCAN BL在默认配置(具有比特率切换的FD模式)中使用FDCAN总线的全部功能,因此不能使用任何旧的CAN解决方案。
有两个选项可供选择。
  • 充当FDCAN BL主机并在例如UART上提供BL命令的第二MCU。此解决方案正在准备中,需要验证。
  • OpenBootloader,或不同类型的自定义引导加载程序-为BL牺牲部分用户Flash。
    • OpenBootloader当前由STM32G4Cube\STM32Cube_FW_G4_V1.x.0\Projects\STM32G474E-EVAL\Applications\OpenBootloaders中的G4系列支持