硬汉嵌入式论坛

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

[FMC] H7与FPGA利用FMC通讯,中断中读取数据出错

[复制链接]

3

主题

18

回帖

27

积分

新手上路

积分
27
发表于 2024-10-10 20:01:35 | 显示全部楼层 |阅读模式
本帖最后由 被arm摧残者 于 2024-10-10 20:03 编辑

开设了一个80us的定时器中断,在定时器中断中利用FMC读取FPGA数据,程序直接死机,如果在中断中加设一个变量,1s读一次FPGA数据则程序正常运行,请问这是什么原因,配置如下图所示


微信截图_20241010200223.png
微信截图_20241010200303.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-11 08:53:48 | 显示全部楼层
特别重要的一点,使用的这个FMC地址空间配置MPU为Strongly order或者Device模式没,否则通信异常,会有问题。
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-13 22:37:04 | 显示全部楼层
eric2013 发表于 2024-10-11 08:53
特别重要的一点,使用的这个FMC地址空间配置MPU为Strongly order或者Device模式没,否则通信异常,会有问题 ...

硬汉哥我按照您开发手册上写的,这样配置了我的FMC,麻烦您看看吧,图片放在下面了
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-13 22:38:03 | 显示全部楼层
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-13 22:38:26 | 显示全部楼层
回复

使用道具 举报

4

主题

107

回帖

119

积分

初级会员

积分
119
发表于 2024-10-14 08:33:57 | 显示全部楼层
    MPU_InitStruct.Enable = MPU_REGION_ENABLE;
    MPU_InitStruct.Number = MPU_REGION_NUMBER6;
    MPU_InitStruct.BaseAddress = 0xC0000000;
    MPU_InitStruct.Size = MPU_REGION_SIZE_32MB;
    MPU_InitStruct.SubRegionDisable = 0x0;
    MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
    MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
    MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
    MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
    MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
    MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
    HAL_MPU_ConfigRegion(&MPU_InitStruct);

这个是我当时用SDRAM的时候FMC的配置,批量用着没问题  
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-14 09:43:44 | 显示全部楼层

图片没上传成功,有单独这里上传才可以

34.png
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 12:36:14 | 显示全部楼层
eric2013 发表于 2024-10-14 09:43
图片没上传成功,有单独这里上传才可以

回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 12:37:32 | 显示全部楼层
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 12:37:51 | 显示全部楼层
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 12:38:10 | 显示全部楼层
heluo1985 发表于 2024-10-14 08:33
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
    MPU_InitStruct.Number = MPU_REGION_NUMBER6;
    ...

感谢!我先试一试
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 12:43:20 | 显示全部楼层
FMC与MPU的配置程序


微信截图_20241013223546.png
微信截图_20241013223558.png
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-14 20:29:08 | 显示全部楼层
eric2013 发表于 2024-10-14 09:43
图片没上传成功,有单独这里上传才可以

硬汉哥,利用debug调试发现,运行程序后,代码直接运行到hardfault里面了,显示是定时器中断导致的,定时器计数值仍在增加,定时器的UIF一直为1
回复

使用道具 举报

8

主题

108

回帖

142

积分

初级会员

积分
142
发表于 2024-10-14 22:47:27 | 显示全部楼层
被arm摧残者 发表于 2024-10-14 20:29
硬汉哥,利用debug调试发现,运行程序后,代码直接运行到hardfault里面了,显示是定时器中断导致的,定时 ...

我之前也这么用过,你降低fmc速度试试。 比如到10m
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-15 09:48:41 | 显示全部楼层

最关键的一点,你的FMC通信地址范围是多少,也是0x6000 0000开始后的64KB吗
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-10-15 16:34:30 | 显示全部楼层
李益达 发表于 2024-10-14 22:47
我之前也这么用过,你降低fmc速度试试。 比如到10m

降低了没有用,能麻烦看看是fmc有配置问题吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 18:22 , Processed in 0.053967 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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