Skip to main content
Rhodes.Keith
Associate III
August 3, 2016
Question

Problem with Soft reset on STM32F427ZI Rev 3 silicon

  • August 3, 2016
  • 4 replies
  • 737 views
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
    This topic has been closed for replies.

    4 replies

    Tesla DeLorean
    Guru
    August 3, 2016
    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 (See Profile) Up vote any posts that you find helpful, it shows what's working..
    Rhodes.Keith
    Associate III
    August 4, 2016
    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.

    Tesla DeLorean
    Guru
    August 4, 2016
    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 (See Profile) Up vote any posts that you find helpful, it shows what's working..
    Rhodes.Keith
    Associate III
    August 5, 2016
    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