Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using pins 18 & 19 as GPIO on ESP32-C3 (disabling USB-JTAG) #10783

Open
1 task done
Rob58329 opened this issue Dec 25, 2024 · 17 comments
Open
1 task done

Using pins 18 & 19 as GPIO on ESP32-C3 (disabling USB-JTAG) #10783

Rob58329 opened this issue Dec 25, 2024 · 17 comments
Assignees
Labels
Status: In Progress Issue is in progress

Comments

@Rob58329
Copy link
Contributor

Board

Waveshare ESP32-C3 Zero Mini Development Board

Device Description

Basic board only, an oscilloscope attached to GPIO-18

Hardware Configuration

Basic board only, an oscilloscope attached to GPIO-18

Version

latest master (checkout manually)

IDE Name

Arduino IDE v1.8.19

Operating System

Windows 10

Flash frequency

80MHz

PSRAM enabled

no

Upload speed

921600

Description

(This issue is a bit similar to #10587 which was for ESP32-S3.)

Using Arduino-IDE and latest "https://github.com/espressif/arduino-esp32" as at 24Dec24.

If you try to use pin 18 as GPIO on ESP32-C3 (either doing “pinMode(18,INPUT)” or “pinMode(18,OUTPUT)” you still get unwanted fast pulse spikes on pin 18 (USB-JTAG signals).

In order to disconnect the USB-JTAG from GPIO-18, you actually need to do a “pinMode(19,INPUT)” or “pinMode(19,OUTPUT)” (which appears to disconnect the USB-JTAG from BOTH GPIO-19 AND GPIO-18).

It would appear to be a bug that doing “pinMode(18,INPUT)” or “pinMode(18,OUTPUT)” does not do the same?

Sketch

// NB. "USB CDC on Boot=Disabled"
void setup() {
  delay(5000);
  pinMode(18,INPUT);    // does NOT remove USB-JTAG pulses from GPIO-18 
  // pinMode(19,INPUT); // DOES remove USB-JTAG pulses from BOTH GPIO-18 & GPIO-19    
}

void loop() {}

Debug Message

n/a

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.
@Rob58329 Rob58329 added the Status: Awaiting triage Issue is waiting for triage label Dec 25, 2024
@SuGlider
Copy link
Collaborator

@Rob58329 - Please confirm some information related to this issue:

1- Is this board: https://www.waveshare.com/wiki/ESP32-C3-Zero ?
2- What is the board selected in the Arduino IDE? I only see Waveshare S3 in the menu.
3- Please enable the debug level using IDE Menu->Tools->Core Debug Level: "Verbose" and report back the log information after running the sketch provided in this issue.

@SuGlider SuGlider added Status: Needs investigation We need to do some research before taking next steps on this issue and removed Status: Awaiting triage Issue is waiting for triage labels Dec 27, 2024
@SuGlider
Copy link
Collaborator

No Issue found with Arduino Core 3.1.0.


Board Configuration:

image


Sketch executed:

// NB. "USB CDC on Boot=Disabled"
// ESP32-C3

void setup() {
  delay(5000);
  pinMode(18,INPUT);    // does NOT remove USB-JTAG pulses from GPIO-18 
  pinMode(19,INPUT);    // DOES remove USB-JTAG pulses from BOTH GPIO-18 & GPIO-19    
}

void loop() {}

Debug Output:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5820,len:0x1144
load:0x403cc710,len:0xad8
load:0x403ce710,len:0x2f80
entry 0x403cc710
[     0][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cfa
[    12][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cbe
[    23][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c82
[    34][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c46
[    46][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cfa
[    57][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cbe
[    68][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c82
[    80][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c46
[    95][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 20 successfully set to type UART_RX (2) with bus 0x3fc8ba74
[   105][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 21 successfully set to type UART_TX (3) with bus 0x3fc8ba74
=========== Before Setup Start ===========
Chip Info:
------------------------------------------
  Model             : ESP32-C3
  Package           : 0
  Revision          : 0.03
  Cores             : 1
  CPU Frequency     : 160 MHz
  XTAL Frequency    : 40 MHz
  Features Bitfield : 0x00000012
  Embedded Flash    : No
  Embedded PSRAM    : No
  2.4GHz WiFi       : Yes
  Classic BT        : No
  BT Low Energy     : Yes
  IEEE 802.15.4     : No
------------------------------------------
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   337496 B ( 329.6 KB)
  Free Bytes        :   299544 B ( 292.5 KB)
  Allocated Bytes   :    34176 B (  33.4 KB)
  Minimum Free Bytes:   299544 B ( 292.5 KB)
  Largest Free Block:   163828 B ( 160.0 KB)
------------------------------------------
Flash Info:
------------------------------------------
  Chip Size         :  4194304 B (4 MB)
  Block Size        :    65536 B (  64.0 KB)
  Sector Size       :     4096 B (   4.0 KB)
  Page Size         :      256 B (   0.2 KB)
  Bus Speed         : 80 MHz
  Bus Mode          : QIO
------------------------------------------
Partitions Info:
------------------------------------------
                nvs : addr: 0x00009000, size:    20.0 KB, type: DATA, subtype: NVS
            otadata : addr: 0x0000E000, size:     8.0 KB, type: DATA, subtype: OTA
               app0 : addr: 0x00010000, size:  1280.0 KB, type:  APP, subtype: OTA_0
               app1 : addr: 0x00150000, size:  1280.0 KB, type:  APP, subtype: OTA_1
             spiffs : addr: 0x00290000, size:  1408.0 KB, type: DATA, subtype: SPIFFS
           coredump : addr: 0x003F0000, size:    64.0 KB, type: DATA, subtype: COREDUMP
------------------------------------------
Software Info:
------------------------------------------
  Compile Date/Time : Dec 27 2024 10:17:16
  Compile Host OS   : windows
  ESP-IDF Version   : v5.3.2-174-g083aad99cf-dirty
  Arduino Version   : 3.1.0
------------------------------------------
Board Info:
------------------------------------------
  Arduino Board     : ESP32C3_DEV
  Arduino Variant   : esp32c3
  Arduino FQBN      : esp32:esp32:esp32c3:JTAGAdapter=default,CDCOnBoot=default,PartitionScheme=default,CPUFreq=160,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=verbose,EraseFlash=none,ZigbeeMode=default
============ Before Setup End ============
[  5432][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x4200003e
[  5443][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 18 successfully set to type GPIO (1) with bus 0x13
[  5453][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x4200003e
[  5465][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 19 successfully set to type GPIO (1) with bus 0x14
=========== After Setup Start ============
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   337496 B ( 329.6 KB)
  Free Bytes        :   304444 B ( 297.3 KB)
  Allocated Bytes   :    29276 B (  28.6 KB)
  Minimum Free Bytes:   299208 B ( 292.2 KB)
  Largest Free Block:   163828 B ( 160.0 KB)
------------------------------------------
GPIO Info:
------------------------------------------
  GPIO : BUS_TYPE[bus/unit][chan]
  --------------------------------------  
    18 : GPIO
    19 : GPIO
    20 : UART_RX[0]
    21 : UART_TX[0]
============ After Setup End =============

@SuGlider
Copy link
Collaborator

@Rob58329 - I can't reproduce the reported issue.

Using this sketch:

// NB. "USB CDC on Boot=Disabled"
// ESP32-C3

void setup() {
  pinMode(18, INPUT_PULLUP);   // does NOT remove USB-JTAG pulses from GPIO-18
  pinMode(19, INPUT_PULLUP);   // DOES remove USB-JTAG pulses from BOTH GPIO-18 & GPIO-19
  Serial.begin(115200);
}

// Use a wire to connect Pins 18 and 19 to +3.3v or GND
void loop() {
  Serial.printf("Pin 18 = %s || Pin 19 = %s\r\n",
                digitalRead(18) == HIGH ? "High" : "Low",
                digitalRead(19) == HIGH ? "High" : "Low"
               );
  delay(1000);
}

I can ground each pin and read the correct input:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5820,len:0x1144
load:0x403cc710,len:0xad8
load:0x403ce710,len:0x2f80
entry 0x403cc710
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = Low
Pin 18 = High || Pin 19 = Low
Pin 18 = High || Pin 19 = Low
Pin 18 = High || Pin 19 = Low
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = Low || Pin 19 = High
Pin 18 = Low || Pin 19 = High
Pin 18 = Low || Pin 19 = High
Pin 18 = Low || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High
Pin 18 = High || Pin 19 = High

@SuGlider SuGlider added the Resolution: Unable to reproduce With given information issue is unable to reproduce label Dec 27, 2024
@Rob58329
Copy link
Contributor Author

Rob58329 commented Dec 27, 2024

@SuGlider - thank you for getting back to me!

As I said above "In order to disconnect the USB-JTAG from GPIO-18, you actually need to do a “pinMode(19,INPUT)” or “pinMode(19,OUTPUT)” - IE. GPIO-18 works OK if you do a “pinMode(19,INPUT)” or “pinMode(19,OUTPUT)”.

(In your above test sketch you are using GPIO-19 to obtain your DEBUG-OUTPUT, so this will remove the "USB-JTAG" signals from both GPIO-19 AND GPIO-18. - if you instead use GPIO-18 as your Serial-Tx, and set the Serial-Rx to say GPIO-1 [ie. NOT GPIO-19], you would probably see a significantly corrupted output on your Serial-monitor, but I haven't tried this!)

IF you ONLY do a "pinMode(18,INPUT)" the USB-JTAG is STILL-CONNECTED to GPIO-18, and if you monitor this pin with an oscilloscope, you will see these as fast (<1us) spikes. If you instead use "pinMode(18,OUTPUT)" with a pulsed output (say a 20us = 50kHz square-wave) you will see this USB-JTAG interference as intermittent disortions of the square-wave (again visible on an oscilloscope, or for example as a corrupted display on a HUB-8 or similar display).

(The bug I am reporting is that trying to use "pinMode(18,INPUT)" on is own (without touching GPIO-19) does NOT disconnect the USB-JTAG from GPIO-18 and the so you get unwanted pulses on GPIO-18.)

PS. I am using the IDE "Board=ESP32C3 Dev Module" for my "https://www.waveshare.com/wiki/ESP32-C3-Zero", but I suspect this will be an issue for ALL ESP32-C3 boards (and probably for ESP32-S3 boards too).

The below oscilloscope picture shows one such GPIO-18 pulse when using my above example "pinMode(18,INPUT)" ONLY sketch:

o=20241227_164819

@SuGlider
Copy link
Collaborator

In your above test sketch you are using GPIO-19 to obtain your DEBUG-OUTPUT

This is incorrect.
When I set "USB CDC on Boot=Disabled", Serial will be UART0, not JTAG/USB-CDC.

The debug output I got is from pin 21 which is UART0 Tx.

@SuGlider
Copy link
Collaborator

SuGlider commented Dec 27, 2024

ESP32C3 Dev Module has a CH340 that is used to convert UART to USB-CDC. I can use both pins 20/21 of the UART0 and 19/18 of the JTAG/USB-CDC port, by selecting "USB CDC on Boot" option.

Waveshare ESP32-C3 Zero has no UART-USB_CDC chip, therefore it can only use the JTAG/USB-CDC internal peripheral for output.

I'm not sure about the eFuses that Wavewhare has burned for their board. It is possible to burn an eFuse that forces using JTAG/USB-CDC as the console default port.

Boot Loader may also automaticaly initialize the JTAG/USB-CDC port depending on reading the eFuse.
Anyway, Arduino can't change eFuses, nor how the boot loader works.

@SuGlider
Copy link
Collaborator

I'll try to check my ESP32-C3 Devkit board in the osciloscope in order to verify if this spike also happens here.

@Rob58329
Copy link
Contributor Author

Rob58329 commented Dec 27, 2024

The debug output I got is from pin 21 which is UART0 Tx.

Sorry - my bad.

I connected a Serial-to-USB adapter-Rx to GPIO-21 and got the following differences in "Core Debug Level=Verbose" outputs

(A) With "pinMode(18,INPUT);" ONLY (which gives the discussed 1us unwanted pulse on GPIO-18):

[ 0][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cf2
[ 12][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cb6
[ 23][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c7a
[ 34][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c3e
[ 46][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cf2
[ 57][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cb6
[ 69][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c7a
[ 80][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c3e

============ Before Setup End ============
[ 9443][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x42000038
[ 9454][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 18 successfully set to type GPIO (1) with bus 0x13
=========== After Setup Start ============

(B) With "pinMode(18,INPUT);" AND "pinMode(19,INPUT);" which fully dissconnects the USB-JTAG (no unwanted pulses on GPIO-18):

[ 0][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cfa
[ 12][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cbe
[ 23][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c82
[ 34][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c46
[ 46][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RX (2) successfully set to 0x42002cfa
[ 57][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_TX (3) successfully set to 0x42002cbe
[ 68][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_CTS (4) successfully set to 0x42002c82
[ 80][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type UART_RTS (5) successfully set to 0x42002c46

============ Before Setup End ============
[ 9443][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x4200003e
[ 9454][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 19 successfully set to type GPIO (1) with bus 0x14
[ 9464][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x4200003e
[ 9475][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 18 successfully set to type GPIO (1) with bus 0x13
=========== After Setup Start ============

Interestingly if you use "pinMode(18,INPUT_PULLUP);" ONLY you get a really weird waveform (as shown below) which is nominally about 1V only (ie NOT the 3.3V pulled-up value it should be), and intermittent 1us USB-JTAG pulses shooting up to 3.3V down to 0V then ending at about 1V... (This with the ESP32-C3 powered by it's USB-C connected to a computer.)

(I assume the USB-JTAG circuitry must be putting some type of pull-down resistor onto GPIO-18.)

o2=20241227_190013

The below sketch shows the effect of this (using a Serial-to-USB adapter-Rx to GPIO-21 to view the Serial-output):

void setup() {
  Serial.begin(115200);
  delay(5000);
  pinMode(18, INPUT_PULLUP); // does NOT remove USB-JTAG pulses from GPIO-18
}

void loop() {
  Serial.printf("Pin 18 = %s\r\n", digitalRead(18) == HIGH ? "High" : "Low"); // almost always reads LOW !!
  delay(1000);
}

Edit - the above sketch doesn't really help, as it effectively only tells you what the external pulldown/pullups which the USB-C D+/D- lines have got on them. ie. if you power the ESP32-C3 from it's 5V pin you will get the correct "Pin 18 = HIGH" output, but if you power the ESP32-C3 from it's USB-C connected to a computer, you will get "Pin 18 = LOW".

@SuGlider
Copy link
Collaborator

Does this pulse happen one time only?

@SuGlider
Copy link
Collaborator

The debug output is correct.
It means that pins 18 and/or 19 are set to INPUT Mode.

@SuGlider
Copy link
Collaborator

SuGlider commented Dec 30, 2024

@Rob58329 - I found some information about Boot configuration and ROM Boot Code in the C3 datasheet:
https://www.espressif.com/sites/default/files/documentation/[esp32-c3_datasheet_en.pdf](https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf)

image

I think that the pulse you have seen is actually the default Boot Message in USB Serial/JTAG port (pins 18 and 19 USB Hardware CDC). The message is "ESP-ROM:esp32c3-api1-20210207"

It is printed by ROM code into USB Serial/JTAG before any bootloader or application code is executed.
It may be disabled by burning an eFuse (which can't be reverted) as detailed in the Datasheet.

eFuse EFUSE_USB_PRINT_CHANNEL will disable printing this BOOT Message into USB Serial/JTAG.
Do not disable the whole USB Serial/JTAG otherwise it won't work anymore ( EFUSE_DIS_USB_SERIAL_JTAG).

eFuse can be listed and burned by using espefuse.py tool.
For more information: https://docs.espressif.com/projects/esptool/en/latest/esp32/espefuse/index.html

@SuGlider
Copy link
Collaborator

@Rob58329 - Use espefuse.py carefully when burning any eFuse. Once burned, it can't be reverted.

@SuGlider SuGlider added Status: In Progress Issue is in progress and removed Resolution: Unable to reproduce With given information issue is unable to reproduce Status: Needs investigation We need to do some research before taking next steps on this issue labels Dec 30, 2024
@Rob58329
Copy link
Contributor Author

Rob58329 commented Dec 30, 2024

@SuGlider - many thanks for your comments.

Does this pulse happen one time only?

No, you see the pulses continuously (every few seconds or more frequently) on both GPIO-18 and GPIO-19, UNTIL you do a pinMode(19,INPUT).


I'm surprised it isn't possible to do whatever pinMode(19,INPUT) does for pinMode(18,INPUT)!

Use espefuse.py carefully when burning any eFuse. Once burned, it can't be reverted.

Instead I will probably just do a pinMode(19,INPUT) on my unused GPIO-19, which solves the pulse issue on GPIO-18.

Interestingly although pinMode(19,INPUT) stops the USB-JTAG pulses on GPIO-18, it does NOT remove the approx 18k pulldown on GPIO-18, meaning that the above sketch's "pinMode(18,INPUT_PULLUP); digitalRead(18);" still reads LOW. This doesn't really matter if you are using pinMode(18,INPUT) or pinMode(18,OUTPUT), but this pullup means can't rely on pinMode(18,INPUT_PULLUP) here. (ESP32-C3 powered by it's USB-C connected to a computer,)

Also note that this 18k pulldown actually seems to be provided by the D+/D- voltages on the USB-C-connector; if instead I power the USB-C from a USB-Power-Supply, this changes to a 30k pullup, and interestingly you DO NOT get the above unwanted USB-JTAG pulses from GPIO-18 at all!

Also, if you power directly from the 5V pin, then you don't get the unwanted USB-JTAG pulses on GPIO-18, and ALSO pinMode(18,INPUT_PULLUP) works properly (as there is no pullup/pulldown resistance or voltages added by the D+/D- pins).

I would therefore suspect that burning an eFuse won't actually effect these external pullup/pulldown resistances, so if you wan't to use a pullup on GPIO-18, either power the ESP32-C3 from it's 5V (or 3.3V?) pin and use pinMode(18,INPUT_PULLUP), or use an external strong pullup.

@SuGlider
Copy link
Collaborator

ROM code enables Hardware Serial (USB CDC) by default. The CDC hardware implementation may try to talk to the USB Host from time to time and it may be the pulse.

When any other device is attached to pins 18 or 19, the HW Serial/JTAG is detached and it stops sending the pulse.

This is done by ROM code and it can be changed using eFuses.

Arduino can't help it, unless by changing these pins function.

@SuGlider
Copy link
Collaborator

Interestingly although pinMode(19,INPUT) stops the USB-JTAG pulses on GPIO-18, it does NOT remove the approx 18k pulldown on GPIO-18, meaning that the above sketch's "pinMode(18,INPUT_PULLUP); digitalRead(18);" still reads LOW. This doesn't really matter if you are using pinMode(18,INPUT) or pinMode(18,OUTPUT), but this pullup means can't rely on pinMode(18,INPUT_PULLUP) here. (ESP32-C3 powered by it's USB-C connected to a computer,)

This is not what I have seen with
#10783 (comment)

@me-no-dev
Copy link
Member

one option is to set the peripheral manager to have the USB set by default, so when you try to reassign one of the pins, it will trigger detach from the driver for both

@SuGlider
Copy link
Collaborator

one option is to set the peripheral manager to have the USB set by default, so when you try to reassign one of the pins, it will trigger detach from the driver for both

Yes, this is already done for UART0, but not for USB/JTAG.
Actually to be precise, the code should check the eFuses to know what has been enabled or not when running the ROM code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: In Progress Issue is in progress
Projects
None yet
Development

No branches or pull requests

3 participants