硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6031|回复: 18
收起左侧

[STLink] 基于V6开发板的STLINK-V3实现CAN接口烧写详细记录

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2018-12-17 00:02:17 | 显示全部楼层 |阅读模式
文档由V5群友“兔小僧”提供,非常详细,表示特别感谢。

笔记文件稍大,主要是文件里面夹带了一些ST文档。
STlinkv3的CAN-ISP功能.one (22.13 MB, 下载次数: 482)

STM32的ISP和IAP
ISP:In SystemPrograming,在系统编程
IAP:Inapplicating Programing,在应用编程

不论是ISP还是IAP,都是一个bootloader程序在启动时可以通过跟上位机(大部分是PC、可能有一些特定开发的手持工具等)进行通讯,bootloader里面提供了可以访问ST芯片Flash区间的协议,比如擦除、写入等。区别就是ISP是官方做好的一套Bootloader,固化在芯片内部了,同时提供了上位机软件(ST Cube Programmer),而IAP是需要自己去做bootloader和上位机软件了。
用途:可以通过远程通讯进行程序的更新,不需要开盖进行SW或者Jtag烧录

ISP优缺点:
优点:

a、虽然代码不可见(程序流程图和协议可见,AN3154等,不同的协议AN不一样),但是毕竟是大厂,是不是可靠性要稍微好一点。
1.png

b、不需要自己再写上位机程序去对接IAP的协议了,特别适合我们这种一个监控人员需要干一堆工作的场景。
c、可以更新和查看到Flash区的任何内容(可以连IAP部分也都更新掉。当然,如果有时间何精力自己写一个上位机程序去对接自己的IAP程序应该也同样能做到),属于最底层的解决方案。


缺点:
a、需要额外的电路进行自举模式的选择:控制boot0、boot1上电后的电平进入需要的模式(ST采用了通过串口的方式来进行启动复位到ISP,参见手册AN2606);这种额外的硬件设计接口预留等,有可能需要和系统、结构去协商,灵活性差
2.png

b、只能在特定的一些特定的通讯口才能进行ISP,且有一些IO电平启动时的要求,参见手册AN2606
3.png

IAP优缺点:
优点:

a、一切尽在掌握(嵌入式代码和上位机代码都是自己写的……),可以设定一些自己的想法进去,比较灵活(比如可以将更新的APP程序分成两个区,按需跳转)
b、不需要任何的额外电路,只要有任何的通讯口,都可以来更新程序
c、可移植性好,今天用在ST,明天可以用在NXP;上位机应该都是不太用变的
缺点:
a、工作量大(代码多了容易出错)
b、IAP很难更新自己,如果IAP写出了bug,不好操作,需要默认它就是可靠的,稳定的
c、更新程序时IAP出现了问题,比如flash在更新时断电了,不小心更改了IAP的内容,就必须通过sw或者jtag重新烧录了

总结:如果有可能和有需求的话,硬件设计上建议IAP和ISP都予以支持,兼顾灵活性和可靠性。

串口ISP、CAN口ISP对于设备应该会更常用些(I2C和SPI一般不作为对外设备的接口)
通过串口进行ISP,使用比较多了。通过CAN进行ISP的不是特别多,因为一般使用CAN都是一个USB-CAN转接模块,不同转接模块的驱动程序不太一样,所以就不会有一个统一的CAN上位机软件。之前的烧录器都是没有CAN接口引出的,不知道之前ST有没有提供过官方的CAN-ISP方案……

但是这次刚出的STlink_V3增加CAN、I2C、SPI等硬件接口(通过扩展板),所以通过STlink_V3不引入其他任何硬件实现ISP烧录就成为了可能(Bridge功能,ST提供了上位机软件,通过USB连接到STlink_V3,通过STlink_V3的主控芯片将USB转化为CAN或者其他的通讯协议,实现了ISP的解决方案)。实质上就可以把STlink_V3看做是一个USB-CAN转接器了(其实拆开USB-CAN转接器,应该也是一样的套路,不过这种转接模块会使用接口芯片,将CAN-Tx和CAN-Rx转换成CAN-H和CAN-L,而且采用光耦隔离或者磁隔离对接口进行必要的保护)。

需要特别注意的是,STlink_V3的CAN只是提供了CAN-Tx和CAN-Rx,并没有提供接口芯片!(不明白ST省这个钱干嘛,还是说为了提高灵活性,让用户自己去做一些外围……)所以如果需要通过STlink_V3来进行CAN的ISP更新程序,需要自己再做一点接口电路,因为基本使用CAN通讯,都是接口芯片转成CAN-H和CAN-L的。

以下是根据STlink_V3和Cube Programmer进行的实验(开发板,armflyv6_F429BI)

根据v6提供的原理图和pcb资料找到PB5和PB13的位置,如下图
3.png
4.png

STlink_V3的连接方式如下(根据STlink_V3的手册UM2448,还有其他的接口也提供CAN的Tx和Rx)
5.png

整体硬件的接线如下图
6.png


下面打开cube pro,原来一直用Demonstrator GUI,感觉可以更换了
7.png

选择stlink(工作这么久,第一次用到了正版烧录器,内牛满面……),可以看到该软件UART和DFU的ISP功能也是提供的
8.png

默认的Port是SWD或者Jtag等,改成CAN;不确定以后ST是不是还会提供I2C或者SPI的方式,目前看F4的自举模式介绍里面没有I2C和SPI的ISP
9.png

根据armflyv6提供的手册,先按S7再按S4进入到ISP模式
10.png

下面进入Cube Pro点击Connect,可以看到,通过STlink的CAN已经访问到v6的内部flash
11.png

显示日志级别调到3级,可以看到STlink和v6不断在进行着can通讯(按照AN3154提供的协议)
12.png

勾选烧录程序,选择测试的Hex文件进行ISP
14.png




评分

参与人数 1金币 +20 收起 理由
byccc + 20 够详细

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
 楼主| 发表于 2018-12-17 00:08:40 | 显示全部楼层
下里面录了一段gif,可以看到stlink和v6不断进行着CAN通讯来更新程序,以及不同的日志显示级别的区别
CAN桥接ISP过程.gif

回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2018-12-17 10:27:19 | 显示全部楼层
够详细,什么时候淘宝有货了来一套。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

7

主题

114

回帖

135

积分

初级会员

积分
135
发表于 2018-12-17 20:10:26 | 显示全部楼层
之前自己做了一下基于CAN的ISP,主要是需要操作芯片的Boot引脚不方便啊!之前是在V5的板子上面测试的
回复

使用道具 举报

7

主题

114

回帖

135

积分

初级会员

积分
135
发表于 2018-12-17 20:20:28 | 显示全部楼层
附件是根据AN3154编写的,是在V5的板子上进行过验证.有兴趣可以测试一下.

CAN_ISP.c

22.89 KB, 下载次数: 80

CAN的ISP

CAN_ISP.h

1.42 KB, 下载次数: 58

回复

使用道具 举报

56

主题

905

回帖

1073

积分

至尊会员

积分
1073
发表于 2018-12-17 21:14:43 | 显示全部楼层
挺好的。其实一套稳定可靠的远程升级IAP是很多产品必须的。。但是一般很少有人放出来。
回复

使用道具 举报

4

主题

24

回帖

36

积分

新手上路

积分
36
发表于 2018-12-18 14:23:22 | 显示全部楼层
楼主写的真好,图文并茂,看的很懂。之前,还不知道可以通过can通信接口实现IAP的,都是通过串口实现IAP的。还有,楼主,新的ST-LINK v3使用中,感觉怎么样,比着Jlink EDU 呢?
回复

使用道具 举报

4

主题

51

回帖

68

积分

初级会员

积分
68
发表于 2018-12-18 16:36:18 | 显示全部楼层
longge 发表于 2018-12-18 14:23
楼主写的真好,图文并茂,看的很懂。之前,还不知道可以通过can通信接口实现IAP的,都是通过串口实现IAP的 ...

便宜啊,才300RMB,缺点是不是只能用ST公司的芯片。我选STLink主要是还需要用到STM8的烧录(STM8内置EEPROM而且温度可以到125°C)。
回复

使用道具 举报

4

主题

51

回帖

68

积分

初级会员

积分
68
发表于 2018-12-18 16:48:26 | 显示全部楼层
longge 发表于 2018-12-18 14:23
楼主写的真好,图文并茂,看的很懂。之前,还不知道可以通过can通信接口实现IAP的,都是通过串口实现IAP的 ...

个人觉得选择烧录器还是要看平时工程用什么芯片。淘宝上现在100左右的v9.2的jlink用的也挺好。SEGGER毕竟是三方,为了调试应该是不遗余力的。而STlink这种还是为了推广自家芯片吧。如果搞ST的芯片,如果不是特别差钱,两者都有还是挺好的。
回复

使用道具 举报

1

主题

65

回帖

68

积分

初级会员

积分
68
发表于 2018-12-18 17:11:46 | 显示全部楼层
byccc 发表于 2018-12-17 10:27
够详细,什么时候淘宝有货了来一套。

这个淘宝还缺货吗?  不是据说299包邮就有现货的?
回复

使用道具 举报

1

主题

65

回帖

68

积分

初级会员

积分
68
发表于 2018-12-18 17:13:04 | 显示全部楼层
ndx1986 发表于 2018-12-18 16:36
便宜啊,才300RMB,缺点是不是只能用ST公司的芯片。我选STLink主要是还需要用到STM8的烧录(STM8内置EEPR ...

用这个软件烧写应该是只能st的芯片  不过调试应该是不限制的。用keil烧写应该也不限制
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2019-6-24 00:37:23 | 显示全部楼层
本帖最后由 谭文华 于 2019-6-24 00:50 编辑

用RX和TX可以烧写,但ms不太实用,毕竟设备接口是CANH和CANL,我又试着在V3和目标板之间增加了两个CAN收发器,尝试了很多但就无法烧写。不知道有没有人成功过?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
 楼主| 发表于 2019-6-25 09:36:44 | 显示全部楼层
谭文华 发表于 2019-6-24 00:37
用RX和TX可以烧写,但ms不太实用,毕竟设备接口是CANH和CANL,我又试着在V3和目标板之间增加了两个CAN收发 ...

可以的,楼主位的就是CAN测试的。
回复

使用道具 举报

3

主题

39

回帖

48

积分

新手上路

积分
48
QQ
发表于 2019-6-27 11:27:53 | 显示全部楼层
请问后缀为.one的文件用什么软件打开呢?
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-6-27 12:55:54 | 显示全部楼层
还在用V2的表示就只能看看了
回复

使用道具 举报

3

主题

62

回帖

71

积分

初级会员

积分
71
发表于 2019-10-28 23:23:07 | 显示全部楼层
加上跳转到ISP的一个函数(地址0x1FFFF000),实现CAN IAP简直不要太简单
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-7-26 19:05:06 | 显示全部楼层
您好  想请教下 我试了很多次都不行  是不是只需要把STLINK-V3扩展板上的can_tx和RX与目标芯片的TX和RX直接连起来就行了,我试了好像不行,也试了加收发器的情况,是不是哪边没设置
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2023-1-12 08:33:47 | 显示全部楼层
谭文华 发表于 2019-6-24 00:37
用RX和TX可以烧写,但ms不太实用,毕竟设备接口是CANH和CANL,我又试着在V3和目标板之间增加了两个CAN收发 ...

不知道解决了没?我按照硬汉哥的方法直接接线是可以的,但是接上收发器之后就不行了,试了无数遍了,崩溃
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-6-27 17:34:43 | 显示全部楼层
我最近在测试stlink-v3的CAN-ISP功能,用的是STM32H745芯片,硬件can通讯用的是CANH和CANL模式。但是怎样做都检测不到芯片信息,想向您请教一下,有可能是哪个地方导致的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-8 18:56 , Processed in 0.285141 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表