保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)

前言

项目开发要用到Jlink调试代码,每次连接都有用Jlink 的Jtag连接板子的SWD接口,又恰逢开发板升级,然后想着能否把Jlink集成在下一代的开发板上。
看了下手中的Jlink好像比较小
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第1张图片
检查之后发现这个好好像叫Jlink-OB,OB好像是On Board的缩写,
打开外壳查看
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第2张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第3张图片
。。。。这也太简洁了吧,外部晶振都没有,直接用的内部的晶振。。

而且还是用的STM32F072C8T6 做主控,手头也没有F072的板子,只有F103C8T6,

如果原理相同的话应该是可以平替的,然后就试着找官方的资料

一、官方渠道找的Jlink OB 资料

Segger官方的Jlink OB 介绍:What is the J-Link OB?
Segger官网关于JlinkOB的手册:JLinkOBSTM32F103.pdf

还真有F103做的Jlink-OB,原理图如下:
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第4张图片
图片来源:JLinkOBSTM32F103.pdf

我用的是SWD模式,因此只要找到3.3V----GND----RESET—SWDIO—SWCLK—SWO 这六根线就行

但是原理图中是JTAG的端口,查到JTAG与SWD接口的对应关系:

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第5张图片
简单来说就是:

TDO-----------SWO
TCLK----------SWCLK
TMS-----------SWDIO
RESET-------RESET

结合原理图得出:

PA10---------TDO-----------SWO
PA5----------TCLK----------SWCLK
PA7-----------TMS-----------SWDIO

但是Reset没法确定,因为有两个引脚:RESET and TRSTS
查看下文:

RESET

Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset. This signal is also known as “nSRST” “nSYSRST”, “nRST”, or “nRESET” in some other manuals. See also nTRST.

nTRST

Abbreviation of TAP Reset. The electronic signal that causes the target system TAP controller to be reset. This signal is known as nICERST in some other manuals. See also nSRST.

翻译一下:

RESET

系统重置的缩写。导致TAP控制器以外的目标系统复位的电子信号。在其他一些手册中,此信号也称为“nSRST”、“nSYSRST”或“nRESET”。另请参见 nTRST。

nTRST

TAP 复位的缩写。导致目标系统TAP控制器复位的电子信号。该信号在其他一些手册中称为nICERST。另请参见 nSRST。

而这来两个分别连接两个引脚:
RESET----PA1
nTRST-----PA0
而且“TAP”像是个简称 但是搜索了这个文档没找到其他地方有全称。。。

然后尝试找下非官方资料

二、立创开源硬件平台上找了Jlink OB的帖子

原项目链接:JLink-OB_32f103

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第6张图片
好像也没有看明白应该用哪个做RESET。。。

但是好像有固件源码!!!!

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第7张图片
评论区留了.bin文件转.hex的工具:
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第8张图片

下载了.bin源码 与 Bin转Hex工具:你自己用这个工具转吧,记得初始地址设置为:0x8000000,
链接:https://pan.baidu.com/s/13v4A1jt-ohrjbC3bicFDCQ
提取码:kw6h
转换出 OB-STM32_V754_Change date to to 30-02-02.hex

(直接下载:转换好的.hex文件和JLink_Windows_V764c_x86)

正好手头有个某宝买的STM32F103C8T6的核心板
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第9张图片

不知道哪个引脚还不能烧录一个一个引脚试试吗?(万能穷举法【手动狗头】)

三、烧录固件到STM32F103C8T6方法

1. 安装好JLink_Windows_V764c_x86----选择J-Flash

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第10张图片

2、选择“Create new project”

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第11张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第12张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第13张图片

3.将下载好的Hex文件拖到软件内并连接好Jlink与F103C8T6

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第14张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第15张图片

4.显示成功之后

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第16张图片
按“F5”或上图点击“Program”
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第17张图片
如果出现上图:“
ERROR: Programming failed @ address 0x08000000 (program error) - End of flash programming - ERROR: Program failed”
按“F7” 会得到如下弹窗,证明烧写完毕。
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第18张图片

烧录成功!

5.MicroUSB 线连接制作好的第二个Jlink OB

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第19张图片

插上电脑 设备管理器中—通用串行总线控制器—J-link driver
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第20张图片

成功!

四、尝试用自制的Jlink OB 烧录到 新的 STM32F103中

找到一个之前做的项目
双击.uvprojx文件 在Keil中打开
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第21张图片

Options for Target----Dubug—下拉选择J-LINK—settings–Port—SW
此时识别到SWDIO IDcode and Device Name
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第22张图片
连接目标的SWD接口
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第23张图片
PA7(TMS-SWDIO)-----目标EVB的SWDIO
PA5(TCLK-SWCLK)—目标EVB的SWCLK
点击 Download

Full Chip Erase Done.
Programming Done.
Verify OK.
JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Application running …
Flash Load finished at 21:49:18"

自制Jlink OB 成功!!!

五、RESET最终是PA1

连接了一个有RESET 的32位开发板
试了一下,看Segger的原理图上用了RESET是接到STM32Jlink-OB上NRST上 测试了一下—不行
又发现https://lceda.cn/editor#id=8c606087ff85467aba48fa8b07c9a353 这个帖子中nRESET连接的是Jlink OB的PA1
测试一下成功!

测试结果:

F103C8T6版Jlink OB引脚--------------------目标EVB
PA10(TDO)-----------------------目标EVB的SWO
PA7(TMS-SWDIO)--------------目标EVB的SWDIO
PA5(TCLK-SWCLK)------------目标EVB的SWCLK
PA1 (nRESET)-------------------目标EVB的Reset

最后按照原理图JLinkOBSTM32F103.pdf 连接好其他部分
自制Jlink OB 原理图如下:
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第24张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第25张图片
随后有机会原理图开源

六、改Jlink OB序列号 SN码

/****** 20220927更新 修改序列号 ******/

最近生产上,设备比较多,
想用5个设备同时烧录,尝试烧录PCB上安装5个Jlink-OB
查了一下可能跟序列号有关

想用之前做的两个Jlink做测试
发现两个Jlink OB 序列号都是:4294967295

阿莫电子论坛: 请教Jlink达人如何修改序列号SN

用HEX查看之后 4294967295 HEX为FFFF FFFF
用Hex editor打开固件搜索字节序列 实在最后4行内,
全部都是FFFF FFFF 没法确定哪个是序列号
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第26张图片
想着应该可以改序列号 网上搜索关键词 Jlink OB 改序列号

CSDN:自制带串口的J-Link OB 072

看了上述的帖子之后可以尝试用J-FLASH commder更改命令
用电脑上的J-flash-V7.64c发现无法使用 exec setsn=88880001命令,
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第27张图片
查了原来项目的链接:

原项目链接:JLink-OB_32f103

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第28张图片

看到可以使用低版本的J-Flash应该可以设置
下载了

J-flash-V6.46 下载地址 之后 返回O.K.

打开Keil发现还是原来的序列号,

之后重新插入发现序列号已经改过来了

/****** 20230218更新 添加序列号到 license ******/

七、Jlink OB 添加序列号到 license

在用做好的Jlink ob给新的设备烧录时 Jflash弹出窗口:

Could not read unit serial number!

这是需要将自制的Jlink ob写入序列号
之后再将Jlink 注册

注册方法

1、下载工具 Jlink_ob注册神器_2019(CSDN 博主:_WindChimes )

2、打开 :license Manager(一定要低版本)

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第29张图片
“Add licence"
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第30张图片
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第31张图片

3、打开 神器

1、将自己定义的序列号填入
2、点击 Generate
3、将底下这四串 复制到上图中的框中
保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第32张图片

4、填入字符串

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第33张图片

这样你的Jlink OB就注册完毕了!

参考:ERROR: Could not read unit serial number!

—CSDN: _WindChimes 帖子

参考链接:

Segger官方的Jlink OB 介绍:What is the J-Link OB?
Segger官网关于JlinkOB的手册:JLinkOBSTM32F103.pdf
立创开源硬件平台: JLink-OB_32f103

保姆级STM32F103C8T6做USB-TypeC版J-link OB(官方数据手册,硬件设计,固件烧录,序列号SN修改)_第34张图片

你可能感兴趣的:(硬件电路,单片机,stm32,单片机,嵌入式硬件,硬件,arm)