Disabling JTAG using Efuses
Posted: Sat Apr 19, 2025 8:48 pm
Hi,
For reference I am working with an ESP32S3 module on a custom PCB. As the PCB was required to be small we decided to completely remove the USB-to-Serial chip and we are uploading code over USB-OTG.
We have noticed that the JTAG interface interferes and causes noise with GPIO pins 39-42. Our project uses a lot of GPIO pins so we had no option but to use this set of GPIO pins, but what we didn't realise was that on uploading code, pins 39 and 40 will be held high for around 4 seconds. This wouldn't be too much of an issue if it weren't for the fact we are trying to control a HPC6602A printhead with the ESP32S3 and any pulse held high for longer than about 100 microseconds will completely fry the nozzles, which makes these pins a bit of an issue. We had sort of solved this by disconnecting the ribbon connector on uploading code but then we noticed that occasionally on booting up the device there is more noise on these pins that are damaging the printhead.
From a bit of digging it sounds like burning the JTAG efuse would be a perfect fit and this will completely disable the JTAG and stop any noise from these GPIO pins. But I am struggling to find much documentation or information on this.
I have been through loads of forums and ESP32 documentation on burning efuses but I can find very little information on the consequences of burning an efuse. I have found forums and discussion on burning DIS_USB_JTAG but I had read some people had issues with this which caused their device to no longer be able to upload new firmware. I also found another forum with a user who sounds like are having the exact same issue as us but instead burned DIS_PAD_JTAG and from the espefuse summary this sounds like the correct efuse to burn. My only concern is as this is a university project and is due in a few weeks we cannot afford to cause any irreversible damage to the PCB as we will be unable to reorder and assemble a new PCB in time. I cannot find any documentation or any mention whatsoever of burning DIS_PAD_JTAG online and I need to know if this will cause any other issues with my chip? This sounds like the right efuse to burn but I am concerned that the chip will stop working or cause unexpected behaviour on any of the other GPIO pins as I am unable to find any users with similar experiences online? Apologies, this is probably a simple problem but just wanting to be overly cautious before irreversible burning an efuse! Any help will be much appreciated!
For reference I am working with an ESP32S3 module on a custom PCB. As the PCB was required to be small we decided to completely remove the USB-to-Serial chip and we are uploading code over USB-OTG.
We have noticed that the JTAG interface interferes and causes noise with GPIO pins 39-42. Our project uses a lot of GPIO pins so we had no option but to use this set of GPIO pins, but what we didn't realise was that on uploading code, pins 39 and 40 will be held high for around 4 seconds. This wouldn't be too much of an issue if it weren't for the fact we are trying to control a HPC6602A printhead with the ESP32S3 and any pulse held high for longer than about 100 microseconds will completely fry the nozzles, which makes these pins a bit of an issue. We had sort of solved this by disconnecting the ribbon connector on uploading code but then we noticed that occasionally on booting up the device there is more noise on these pins that are damaging the printhead.
From a bit of digging it sounds like burning the JTAG efuse would be a perfect fit and this will completely disable the JTAG and stop any noise from these GPIO pins. But I am struggling to find much documentation or information on this.
I have been through loads of forums and ESP32 documentation on burning efuses but I can find very little information on the consequences of burning an efuse. I have found forums and discussion on burning DIS_USB_JTAG but I had read some people had issues with this which caused their device to no longer be able to upload new firmware. I also found another forum with a user who sounds like are having the exact same issue as us but instead burned DIS_PAD_JTAG and from the espefuse summary this sounds like the correct efuse to burn. My only concern is as this is a university project and is due in a few weeks we cannot afford to cause any irreversible damage to the PCB as we will be unable to reorder and assemble a new PCB in time. I cannot find any documentation or any mention whatsoever of burning DIS_PAD_JTAG online and I need to know if this will cause any other issues with my chip? This sounds like the right efuse to burn but I am concerned that the chip will stop working or cause unexpected behaviour on any of the other GPIO pins as I am unable to find any users with similar experiences online? Apologies, this is probably a simple problem but just wanting to be overly cautious before irreversible burning an efuse! Any help will be much appreciated!