硬汉嵌入式论坛

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

[STM32H7] STM32H743VIT6 Y版本和V版本区别

  [复制链接]

10

主题

19

回帖

49

积分

初级会员

积分
49
发表于 2020-3-4 10:39:26 | 显示全部楼层 |阅读模式
最近公司进了一批V版本的芯片,即丝印第二行最后一个字母,和以前Y版本的不一致。flash烧写异常,哪位用过的大佬知道原因吗,帮忙解答下,不胜感激!

评分

参与人数 1金币 +6 收起 理由
龙之谷 + 6 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-4 10:55:12 | 显示全部楼层
MDK烧写的话,下载最新H7软件包,因为更新了烧写算法。

用J-Flash烧写也行。
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2020-3-4 11:21:05 | 显示全部楼层
我记得STM32H750的 Y版和V版 是主频的差异,原先是400MHz的 后面不是提升到 480MHz了么(Y版本400MHz  V版本480MHz)
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2020-3-4 11:26:06 | 显示全部楼层
Y版本400MHz V版本480MHz
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
发表于 2020-3-4 12:06:28 | 显示全部楼层
请教一下:我原来使用STM32H743IIT6 Y版本,400MHz,如果以后我买STM32H743IIT6 V版本,480MHz,我原来的400MHz版本的程序,可以直接运行在480MHz的Y版本芯片吗?

也就是把480MHz的芯片,还当作400MHz的芯片使用。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-4 12:34:05 | 显示全部楼层
pnhywyb 发表于 2020-3-4 12:06
请教一下:我原来使用STM32H743IIT6 Y版本,400MHz,如果以后我买STM32H743IIT6 V版本,480MHz,我原来的40 ...

没问题,务必使用最新版HAL库。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2020-3-4 16:20:00 | 显示全部楼层
微信截图_20200304161831.png 两个版本的参数在数据手册里有说明,但是具体有什么区别要自己对照着看了

回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
发表于 2020-3-5 14:16:39 | 显示全部楼层
细节上还是有不少差异的。在AN5312里有说明。我踩过坑。
比如在ADC时钟里增加了一个2倍的分频器。某些情况下代码需要修改才行。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-5 15:06:36 | 显示全部楼层
migsoft 发表于 2020-3-5 14:16
细节上还是有不少差异的。在AN5312里有说明。我踩过坑。
比如在ADC时钟里增加了一个2倍的分频器。某些情况 ...

是的,ADC这个要改。
回复

使用道具 举报

10

主题

19

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2020-3-6 11:40:49 | 显示全部楼层
经过排查,列出排查说明:
一.问题说明

1.2020年之前用的是Y版本的芯片,2020年之后都变成了V版本的芯片,拿过来之后用boot升级发现升级之后的固件无法运行,通过jflash把固件内存区的数据读出来发现一部分的内存区是FF,并未写成功,从而导致固件无法运行。

二.问题排查

经过排查,发现HAL_FLASH_Program函数在写之前会检测一次flash是否可写,在写之后会检测一次是否写完成,之后的这次检测里会读取错误标志位,其中FLASH_SCRx寄存器PDSERR1位会被置1,大概意思是flash的写缓冲区错误,上一次的数据还没写进flash里,这一次又要写了,冲突了,这样上一次的数据就有丢失的风险。因此有个方法可以解决这个问题:每次PDSERR1被置1的时候会触发错误中断,在中断里回读一下之前写的数据是否写入,没写入的话FLAHS_CCRx寄存器的CLR_RGSERRx位置1清除PDSERRx状态,使之变为0,重新另flash可写,把之前没写入的数据在写一次。

因为写保护没做好,因此导致了这个问题,所以在HAL_FLASH_Program函数里,写flash操作的上下都要加个DSB指令,把这块写flash的操作保护起来。另一块的作用就是清空写缓冲,使得这次写flash完全成功,不会造成冲突。HAL_FLASH_Program写flash部分代码修改如下:

__DSB(); //新增

do
{
*dest_addr++ = *src_addr++;
}while(--row_index != 0);

__DSB();
回复

使用道具 举报

10

主题

19

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2020-3-6 11:43:52 | 显示全部楼层
pnhywyb 发表于 2020-3-4 12:06
请教一下:我原来使用STM32H743IIT6 Y版本,400MHz,如果以后我买STM32H743IIT6 V版本,480MHz,我原来的40 ...

这个可以得,主要是注意三个地方的设置,一个是VOS电压等级,第二个是flash延迟,第三个是编程延迟
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-6 11:46:45 | 显示全部楼层
nextstation 发表于 2020-3-6 11:40
经过排查,列出排查说明:
一.问题说明

这是老版HAL库的bug,我们去年发布的H7-TOOL的bootloader就订正了这个问题,让很多人去看,他们都没有注意到,还在用老版的HAL库。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-6 11:50:20 | 显示全部楼层
注意,STM32H7的老版HAL库内部Flash写入函数HAL_FLASH_Program有bug
http://www.armbbs.cn/forum.php?m ... 6616&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

10

主题

19

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2020-3-6 11:50:44 | 显示全部楼层
eric2013 发表于 2020-3-6 11:46
这是老版HAL库的bug,我们去年发布的H7-TOOL的bootloader就订正了这个问题,让很多人去看,他们都没有注 ...

因为更换新库比较麻烦,除非用cube再生成一个,能用就用吧,如果不增加新功能,老的库完成一些基本操作还是可以得,因此很多人不愿意用新的库。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-6 11:52:38 | 显示全部楼层
nextstation 发表于 2020-3-6 11:50
因为更换新库比较麻烦,除非用cube再生成一个,能用就用吧,如果不增加新功能,老的库完成一些基本操作还 ...

升级新的HAL库很省事,升级1次后,你会发现,每次升级,每次都想更新。
回复

使用道具 举报

10

主题

19

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2020-3-6 11:53:30 | 显示全部楼层
eric2013 发表于 2020-3-6 11:46
这是老版HAL库的bug,我们去年发布的H7-TOOL的bootloader就订正了这个问题,让很多人去看,他们都没有注 ...

这块ISB(指令同步隔离)不需要加,boot是写其他flash内存区的,不影响的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-3-6 12:30:09 | 显示全部楼层
nextstation 发表于 2020-3-6 11:53
这块ISB(指令同步隔离)不需要加,boot是写其他flash内存区的,不影响的


1、必须要加,否则不稳定。早期的HAL V1.3是这样的,非常不稳定
1.png

2、下面三个是我们添加的。
QQ截图20200306123704.png

3、下面是最新版HAL做的修正。
QQ截图20200306123748.png


回复

使用道具 举报

3

主题

1227

回帖

1236

积分

至尊会员

积分
1236
发表于 2020-3-6 13:47:37 | 显示全部楼层
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2020-3-10 17:10:58 | 显示全部楼层
eric2013 发表于 2020-3-4 10:55
MDK烧写的话,下载最新H7软件包,因为更新了烧写算法。

用J-Flash烧写也行。

MDK的这个坑把我整的挺懵的,最后看到一个网友说更新pack,最后试了一下才解决
回复

使用道具 举报

1

主题

71

回帖

74

积分

初级会员

积分
74
发表于 2020-6-30 15:54:26 | 显示全部楼层
eric2013 发表于 2020-3-4 12:34
没问题,务必使用最新版HAL库。

HAL库能自适应Y、V版本么
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2020-6-30 16:00:49 | 显示全部楼层
252514251 发表于 2020-6-30 15:54
HAL库能自适应Y、V版本么

能啊,检索新版HAL库,里面有好些兼容设置的。
回复

使用道具 举报

1

主题

71

回帖

74

积分

初级会员

积分
74
发表于 2020-6-30 16:24:42 | 显示全部楼层
eric2013 发表于 2020-6-30 16:00
能啊,检索新版HAL库,里面有好些兼容设置的。

查到了,HAL确实能读取芯片是V版本还是Y版本
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-8-31 09:20:42 | 显示全部楼层
eric2013 发表于 2020-3-5 15:06
是的,ADC这个要改。

你好,我也遇到这个问题了,Y版本的程序更新pack后,在V版本上能运行但是ADC 采样不对,请问怎么修改
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-8-31 09:46:43 | 显示全部楼层
eric2013 发表于 2020-3-5 15:06
是的,ADC这个要改。

我也遇到了这个问题,请问怎么修改的
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2020-9-24 17:51:35 | 显示全部楼层
问一下大佬,我把程序从Y版移植到V版通信乱码是啥原因?
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2020-9-25 09:20:32 | 显示全部楼层
帖上时钟配置图,求问?
3a67d289f1dbdc6b8f5c1b58aac1f58.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 14:52 , Processed in 0.416404 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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