硬汉嵌入式论坛

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

[技术讨论] GD32H7 OSPI通信造成Hard Fault,求解答

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2026-8-3 10:06:36 | 显示全部楼层 |阅读模式
uCos III系统下,在测试OSPI四线模式时,会报错进入HardFault,显示指令总线错误。在使用OSPI单线模式(标准SPI模式),都没问题。求解答或者解决思路。以下是打印信息。

HardFault: 硬故障中断
HFSR = 0x40000000
MMFAR = 0x0
BFAR = 0x0
CFSR = 0x100
HFSR->VECTTBL = 0: 读取向量表时没有总线故障
HFSR->FORCED = 1: 有强制硬故障
CFSR = 0x100
MMFSR = 0x0
MMFSR->IACCVIOL = 0: 无指令访问违规故障
MMFSR->DACCVIOL = 0: 无数据访问违规故障
MMFSR->MUNSTKERR = 0: 无出栈故障
MMFSR->MSTKERR = 0: 无入栈错误
MMFSR->MLSPERR = 0: 浮点延迟状态保存期间未发生MemManage故障
MMFSR->MMARVALID = 0: MMAR中的值不是有效的故障地址
BFSR = 0x1
BFSR->IBUSERR = 1: 有指令总线错误
BFSR->PRECISERR = 0: 无精确的数据总线错误
BFSR->IMPRECISERR = 0: 无非精确的数据总线错误
BFSR->UNSTKERR = 0: 无异常出栈故障
BFSR->STKERR = 0: 无异常压栈故障
BFSR->LSPERR = 0: 浮点惰性压栈中未发生总线故障
BFSR->BFARVALID = 0: BFAR中的地址无效
UFSR = 0x0


回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123752
QQ
发表于 2026-8-3 10:28:33 | 显示全部楼层
裸机下正常吗

点评

终于解决了,连续出了两个问题。 1.我代码中有把接收地址设为“0”,由于OSPI的接收无论是否接收数据,都会去读取OSPI的数据寄存器。导致指令总线错误。 2.后面报了非精确数据总线错误,原因是设置了1/4时钟保持。  详情 回复 发表于 2026-8-3 15:13
也不行,我试过在uCos系统启动前测试OSPI,OSPI下的SPI和SPI DMA都没问题,就这个四线情况出现的问题。  详情 回复 发表于 2026-8-3 10:44
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2026-8-3 10:44:35 | 显示全部楼层

也不行,我试过在uCos系统启动前测试OSPI,OSPI下的SPI和SPI DMA都没问题,就这个四线情况出现的问题。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2026-8-3 15:13:20 | 显示全部楼层

终于解决了,连续出了两个问题。
1.我代码中有把接收地址设为“0”,由于OSPI的接收无论是否接收数据,都会去读取OSPI的数据寄存器。导致指令总线错误。
2.后面报了非精确数据总线错误,原因是设置了1/4时钟保持。

但我还没理解的是,为什么1/4时钟保持会导致HarFault。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123752
QQ
发表于 2026-8-5 09:42:42 | 显示全部楼层
KingArthur25 发表于 2026-8-3 15:13
终于解决了,连续出了两个问题。
1.我代码中有把接收地址设为“0”,由于OSPI的接收无论是否接收数据, ...

谢谢告知最终原因
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-13 12:28 , Processed in 0.499226 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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