cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with Soft reset on STM32F427ZI Rev 3 silicon

Rhodes.Keith
Associate II
Posted on August 03, 2016 at 18:13

I have a new board that uses the rev 3 silicon and it will not reset under software control. I have an older board design that uses the rev 1 silicon and the software reset logic works properly. The new board design is based on the previous one.

The code I use from core_cm4.h and is:

___STATIC_INLINE 
void
NVIC_SystemReset(
void
)
{
__DSB(); 
/* Ensure all outstanding memory accesses included
buffered write are completed before reset */
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk); 
/* Keep priority group unchanged */
__DSB(); 
/* Ensure completion of memory access */
while
(1); 
/* wait until reset */
}

After I execute the macro I break the debugger and its stuck in the while() loop. Any thoughts? Thanks...Keith Rhodes
4 REPLIES 4
Posted on August 03, 2016 at 18:20

Any thoughts?

What do you have connected externally to the NRST line?

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Rhodes.Keith
Associate II
Posted on August 04, 2016 at 04:06

NRST is tied to logic high. It has circuitry to have a reset button which brings it low when pressed.  This same circuit works correctly on an older board with the rev1 silicon.

Posted on August 04, 2016 at 04:52

Driving the pin high with a push-pull driver, or connecting it to the supply rail, will induce the failure you describe. NRST is considered bidirectional in ARM designs, and I've seen people do this and fail for many years.

I'm surprised the previous design worked, evidently it was able to clamp it close enough to ground to hit VIL and reset. You should perhaps plot the voltage/current when it does that.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Rhodes.Keith
Associate II
Posted on August 05, 2016 at 22:10

Wow, thanks Clive, that worked great!

The really odd thing is that the STM32F427 is our 3rd different ARM cpu. We did a design with a Stellaris Cortex-M3 and with a NXP Cortex-M4 with the same reset circuitry and didn't see this issue. Also, the Rev1 silicon worked as well.

I guess we were able to overdrive the signal to get it to function and got really lucky.

Thanks again...Keith