STM32 下载验证错误
-
- 硬件,软件背景
- 问题描述
- 错误分析
- 总结
硬件,软件背景
- ODrive控制板:ODRIVE V3.6-56V
- 固件版本:fw-v0.5.1(更新版固件不再完全开源,使用odriveTool时会报错)
- 配备耗散电阻:2Ω
- 编码器:TLE5012B
- 电机:X2212-13 (安装径向磁铁)
- KV:980
- 外转子
- 槽极数:12N14P
- 相间内阻:92mΩ
- 空载电流:0.6A
- 最大连续功率:385W
- 最大连续电流:26A/30S
- 电流:20~30A
- 下载器:
- STLink/V2
- PWLINK2
- USB转串口:CH340
问题描述
测试ODrive配置程序时ODrive电路、电机参数、TLE5012磁编码器、控制器配置、梯形加减速。参考ODrive踩坑(二)3508电机及TLE5012B旋转电机的位置闭环模式(TLE5012B-E1000)。配置完成后,开始电机和编码器校准,输入电机参数校准,odrivetool无响应。
# 校准电机参数(运行后电机会发出哔哔声)~的一声) odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
以下测试:
- ODrive断电重启电路板,odrivetool无响应
- 退出odrivetool,ODrive断电重启电路板后,启动odrivetool:提示连接设备,说明ODrive电路板与odrivetool没有建立连接,硬件有问题
- 退出odrivetool,ODrive断电,拔掉电路板USB头,重新连接USB,ODrive电路板上电,打开odrivetool。仍然无法连接
- 查看设备管理器,插拔USB头,设备管理器没有反应。这表明硬件根本没有启动USB驱动程序。
- 用STM32CubeProgrammer STLink重新给STM32F405烧录固件,点击烧录,软件会闪回。PowerWriter PWLINK2给STM32F405烧录固件,成功烧录。USB头部测试,设备管理器仍然没有反应。MCU出了问题)
- 再次用PWLink2下载程序无法连接到芯片
- 编写最简单的闪光程序,使用MDK(keil5) STLink测试烧录程序:报错Contents mismatch at: 0800D03AH (Flash=FFH Required=C2H) !Verify Failed!
- 使用相同的程序MDK(keil5) PWLink试着下载烧录,报告同样的错误
错误分析
Contents mismatch at: 0800D03AH (Flash=FFH Required=C2H) ! Verify Failed!
说明这个错误STLink下载程序STM在32芯片中,下载完成后STLink会对STM32芯片内Flash内容(十六进制)与MDK对应.bin验证文件内容(Verify)。验证时发现STM32芯片Flash地址0800D03AH处的内容与.bin文件不一致,Flash=FFH(即空,Flash擦除后为FF), 正确的内容是 Required=C2H。所以会报错。尝试了以下方法来解决这个问题,目前都无效:
-
在MDK中,Options for target–>Debug–>Settings–> Flash Download中,去掉Verify,不进行验证。虽然不会报错,但是用示波器测试,程序还是没有运行。这显然是掩耳盗铃。o(╥﹏╥)o
-
参考用KL16芯片跑别人的程序。BUG_已解决提供的思路:
-
复位电路硬件错误?下载烧录时,试几次复位。
-
擦除整个Flash。测试无效果
-
用STM32 Cube Programmer读取STM32芯片Flash中内容,用PowerWriter读取.bin/hex文件,比较两者的差异。
-
keil版本太低了?我目前正在测试的是keil V5.23.0.0 STM32F4x_DFP V2.16.0;keil V5.36.0.0 STM32F4x_DFP V1.0.8.两个版本都不能下载。STM32F103芯片可以正常烧录,应该不是软件问题,DFP包问题
-
-
参考Keil : Contents missmatch at:08000E84H Verify Failed!提供的思路:
- 芯片电源引脚是否增加了退耦电容?
- 电文波是否过大,是否稳定?
- 电路虚焊吗?F103RET6.测试可以正常下载和使用
- 下载器线路过长(可能导致电压和通信不稳定)?导线尽可能短,问题仍然存在
5. MDK中Options for target–>Target–>Memory设置问题?整个项目是用的?STM32CubeMX生成和使用的默认设置尝试了两种IRAM地址,但问题仍然存在
总结
STM32下载烧录有问题,调查方向:
- 烧录器问题:确认烧录器连接,更换烧录器/连接线
- STM32芯片电源:测试电源引脚电源、纹波大小和解耦电容
- STM32芯片Flash下载设置问题:检查Target选项卡中IROM、RAM检查地址段Debug选项卡中erase full chip,erase sector,programming algorithm
- IDE软件版问题:MDK(或其他软件)版本,STM32 PACK包版本
- 芯片Flash损坏,更换芯片 目前,有可以想到的问题都已经测试过了,只有新买的芯片可以更换再试。但是具体问题还是找不到,总觉得是隐患。