9 years, 4 months ago.

Driving the K64F RESET pin

I was disappointed to find out that you cannot drive the RESET pin (J3-8) from an external source on the K64F. It looks like the internal NTSX2102 chip prevents that from happening. It is not open-drain.

You can drive the RESET pin on the KL25Z and the LPC1768 just fine.

Q: Can you overdrive the NTSX2102 with a low-resistance FET without damaging it?

Regards,

...kevin

1 Answer

9 years, 4 months ago.

As far as I can see it is open-drain. Sure it has a push-pull stage to improve the switching edges, but it is bidirectional for open-drain stages. So I don't see a problem with driving the reset pin directly, only do it preferably with an open-drain stage.

Initialize a GPIO pin to the RESET pin through a schottky diode (cathode to GPIO pin). Wait a few seconds, then set the GPIO pin to 0. The K64F never resets and the voltage on the RESET pin is about 1.7V.

#include "mbed.h"
//other stuff
#define SUICIDE             PTB11
DigitalOut DIE_N(SUICIDE, 1); 
//more stuff

int main() {
    wait(5.0);
    DIE_N = 0;
}
posted by Kevin Braun 10 Dec 2014

That generally also isn't allowed to reset itself. Because if it resets its pin wont be low. So it doesn't reset, but then it makes its pin low, but then it resets and isn't low :).

posted by Erik - 10 Dec 2014

If the RESET pin was truly open-drain, when setting the GPIO pin low, it will remain low until the CPU resets. At that time, the GPIO pin turns back into the default input mode and no longer drives the RESET pin low.

posted by Kevin Braun 10 Dec 2014

But if it immediatly resets it won't pull the pin low anymore, therefore risking some kind of half-reset.

Anyway in the schematic it has pull-up resistors, and the level shifter you linked is intended for I2C, so should definately be able to handle open-drain.

posted by Erik - 10 Dec 2014

I've spent hours on this, using a GPIO DigitalOut with a diode and as a GPIO DigitalInOut as an open-drain output and I still cannot drive the RESET pin low. Either I have a bad K64F or there is a mis-understanding on how the NTSX2102 chip works.

Again, this same technique works flawlessly on a KL25Z and a LPC1768.

posted by Kevin Braun 11 Dec 2014

Is there anyone @Freescale that can look into this?

posted by Kevin Braun 12 Dec 2014

Unlikely that they see this tbh.

I had a look into it. There is a reset LED with not too big resistor which could very well cause it. So I used my new soldering iron to mutilate my K64F board and remove the resistor used for the reset LED :'(. Sadly not only is my board now mutilated, it also wasn't the reason.

So I got my multimeter and measured the current when in reset: 15mA. If the pin supports high drive strength you might get near enough to that to get it to reset, but not in low drive strength. By the way the K20D50M has exactly the same current required.

Now with the OpenSDA not powered (use second USB port), it all works exactly as expected. So I guess the issue might be that they don't drive the levelshifter in open drain mode, but absolutely not sure that is it.

What you can do is populate J5 and use that to cut connection to reset when you don't need openSDA to reset. If you do mosfet to J25 you for sure don't have to worry about damaging anything since you do exactly the same as the reset button, although I still wouldn't expect it otherwise to be damaged in any way: would be weird if you cannot use the reset input to generate a reset.

That said, what is your goal? Do you really need a hardware reset instead of a software reset?

posted by Erik - 12 Dec 2014