起因

上篇文章演示了如何集成EB配置生成的MCAL层代码到keil里面,并创建Demo工程,实现开发和编译。
那么下一步就是烧录了……
(注意不要按照我这样操作,真的会锁死芯片)

keil里的PEmicro

我也是这次才了解到,原来keil也集成了PEmicro接口,以前总以为用USB-TTL,或者ST-link,或者JTAG什么的才行。
image.png
配置界面如上,主要就是连接的接口和芯片型号一类的。

下载

把这些都配置好之后,点击LOAD
image.png
就回弹出下面这个窗口
image.png
配置完成,点击连接,就是下载的意思:
image.png
然后你就会发现,确实把程序烧录进去了,灯也点亮了。

出现问题

可当你再想进行烧录时,就会发现,MCU再正常工作,但就是显示连接不上。
我分别在keil、S32DS、Simulink中进行了尝试:
keil直接显示没有链接;
S32DS报错如下,retry也不好使
2961c969a365a21c8aae55fcb239bfe.png
simulink能明显的看到,要烧录的程序被卡在了传输文件里:
e4624af418f60d63c22f04874469ffc.pngb1dcd3165e9b1a5c3dd1e9918d1fd64.png
到这里我确实慌了。

尝试办法

更新驱动

一开始以为是驱动要更新,就去官网下载了文件,按照指导进行更新
https://www.pemicro.com/opensda/
7d5ed77047fbfab5df2e9a30897169a.png
发现这样也不行,还是老样子,而且设备管理器也显示OpenSDA一直都在,驱动好好的,这时我就意识到是不是芯片被锁了?

解锁芯片

去网上找了,芯片被锁的原因:

基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,MCU被倍频以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、烧写断电,如果在Debug的时候不小心导致芯片断电,这种情况也有可能导致芯片锁死。 3、修改 0X400-0X40F地址内容。 4、某些操作不规范导致

难道我的时钟配错了??
不过现在现在是如何解锁的问题,解锁办法最简单粗暴的:

  • 拔掉板子电源
  • 一直按住复位引脚
  • 上电
  • 通过S32DS下载程序
  • 等到再次弹出上面这个界面,松开复位image.png
  • 点击retry,再次烧录,成功!
  • 解锁成功

电路部分,使用的时S32K144 EVB板,想要通过复位按键直接对MCU接地,要连接一个跳帽23,这一点也很重要!!!
image.png
image.png

最后

这个问题一弄就是一晚上,中间问了很多人,还联系了在恩智浦工作的大佬,最后能解决真是不容易。
关于为什么通过Keil会造成芯片锁死,大佬说是flash擦除的问题:
image.png