Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kyo
Level 1
Level 1
5 replies posted First reply posted First question asked

你好,

我遇到一个问题,具体如下:

1,程序概要大体如下,

一部分是SPI通信,使用DMA的DW1,SoftTrigger Grp.1 ch7。另一部分是ADC转换,使用DMA的DW0,HardTrigger Grp.2 ch33,ch84。

使用SPI的Cy_SCB_SPI_Transfer函数进行通信,并且使用DMA(P-DMA)从RAM转送数据到SPI FIFO中。在每128字节转送完成时发生DMA的中断处理中(DW1_IntHandler),更新128字节的RAM buffer,并使用Cy_SysTick_DelayInUs函数进行等待(600us),之后重新启动DMA开始下一轮的DAM数据转送。

使用ADC进行AD采样,通过DMA将寄存器中的数据转送到RAM buffer中。每一次AD转换成功后触发DMA转送。之后会重新启动AD,如此反复。

2,遇到的问题,

在上述SPI和ADC同时工作一段时间后,会产生Hard Fault。进过调查,产生Hard Fault之前,是运行在SPI用的DMA的中断处理函数DW1_IntHandler中调用的Cy_SysTick_DelayInUs时发生的。

请问具体原因可能是什么?怎样去避免和解决这个问题。

谢谢!

0 Likes
1 Solution
Janine_Y
Moderator
Moderator
Moderator
50 solutions authored 10 likes received 25 solutions authored

Hi Kyo,

可以参考这篇thread:https://community.infineon.com/t5/XMC/HardFault-Handler-from-where-jumped-to-here/td-p/311019

尝试增大stack size看是否有效?

如果不行,可以看一下DMA和systick的中断优先级分别配置了多少,可以尝试换一下,具体可以参考KBA:

https://community.infineon.com/t5/Knowledge-Base-Articles/TRAVEO-T2G-MCU-Considerations-When-Configu...

BR,

Janine

View solution in original post

0 Likes
3 Replies
Janine_Y
Moderator
Moderator
Moderator
50 solutions authored 10 likes received 25 solutions authored

Hi Kyo,

可以参考这篇thread:https://community.infineon.com/t5/XMC/HardFault-Handler-from-where-jumped-to-here/td-p/311019

尝试增大stack size看是否有效?

如果不行,可以看一下DMA和systick的中断优先级分别配置了多少,可以尝试换一下,具体可以参考KBA:

https://community.infineon.com/t5/Knowledge-Base-Articles/TRAVEO-T2G-MCU-Considerations-When-Configu...

BR,

Janine

0 Likes
Kyo
Level 1
Level 1
5 replies posted First reply posted First question asked

好的,谢谢。等我这边复现环境搭建完成后,我会试着参考您提供的信息试着修改一下,看看有没有改善。

关于可能的原因,请问我可以暂时这么认为吗?

1,stack大小不够导致非法的内存访问产生了Hard Fault。

2,systick中断优先级高,导致DMA无法动作产生了Hard Fault。

我还想知道,Traveo系列的MCU在发生Hard Fault时,有没有某个寄存器可以直接获取到Hard Fault的原因?并且有没有哪一本技术手册中描述了可能产生Hard Fault的要因一览?

0 Likes
Janine_Y
Moderator
Moderator
Moderator
50 solutions authored 10 likes received 25 solutions authored

Hi Kyo,

是的,Traveo是基于ARM核的,网上就可以搜到一些ARM Hardfault异常分析的文档,例如:

 
Best Regards,
Janine
0 Likes