Enable UART on QSPI pins #2280
Labels
No labels
bazel
bluetooth
board settings
boot_stage2
bug
build
c++
can't reproduce
clang
clib-interface
cmsis
code cleanliness
code size
compiler version issues
cyw43_driver
debug
discussion
documentation
duplicate
dynamic_clock
elf2uf2
enhancement
errata
filesystem
flash layout
floating point
FreeRTOS
hardware_adc
hardware_claim
hardware_clocks
hardware_dma
hardware_exception
hardware_flash
hardware_gpio
hardware_i2c
hardware_irq
hardware_pio
hardware_pwm
hardware_rcp
hardware_rtc
hardware_spi
hardware_sync
hardware_uart
hardware_vreg
hardware_watchdog
hardware_xosc
help wanted
host
IAR
installation
invalid
linker scripts
lto
lwip
mbedtls
missing API
needs reporter detail
networking
newlib
newlib-multicore
non-c
non-cmake
non-gcc
openocd
orphan PR
OS integration
pico_async_context
pico_base
pico_binary_info
pico_flash
picolibc
pico_lwip
pico_malloc
pico_multicore
pico_printf
pico_runtime
pico_stdio
pico_stdio_usb
pico_sync
pico_time
pico_util
pioasm
port
question
review
review2
rtos interop
runtime init
static library
svd
test
tinyusb
vscode
wifi integration
wontfix
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gh-raspberrypi/pico-sdk#2280
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hi,
I'm doing tests with the UART bootloader, which is described in the datasheet of RP2350 (Chapter 5.8).
The pins SD2 and SD3 of QSPI are used as TX and RX by the bootloader. It works very good, but it would make sense to use the same pins in 'user mode' for communication with another controller. However it looks like the SDK lacks any functions to switch UART to bank1 pins?
So at the moment it's not possible to use the same pins as the bootloader uses in 'user mode', disregarding the possibility to manually set the registers to do so (but for that I'm too far away ...).
Would be great if there could be a solution in the long term :)
BR Thomas.
I think the example in https://github.com/raspberrypi/pico-examples/pull/571 does what you need? It uses qspi_gpio_set_function() to switch the pins to UART and then uses them to communicate with the RP2350 that booted it.
Wow, @burtyb thanks! :-)
This exactly what I needed, and it works just great!
By the way, my code is here: https://codeberg.org/retsifp/rp2350_uart
Didn't know about this pullrequest and found another solution to embed the 'remote' firmware in the 'main' firmware.
So can this issue be closed @retsifp , or is there still missing SDK functionality that you'd like to see added?
For me it's fine, can be closed if you want.
I guess it would maybe make sense to have the possibility to set the QSPI pin functions with the SDK, but I don't know how much effort that would be :)
Maybe it's as easy as integrating void qspi_gpio_set_function(...) in the SDK?
I'll close this as a duplicate of #1799 then 🙂
I'll leave this around, just because i thought (and maybe this isn't the case) that it might require changes to our UART code to make this friendly - if this is just a IO and FUNCSEL setup issue, then I guess we can indeed close - i just haven't looked at it in detail
Me neither 😂 Pinging @will-v-pi as he wrote the previously-mentioned https://github.com/raspberrypi/pico-examples/pull/571
Yeah, it was just an io/pads issue - although stdio_uart_init might need modifications too if we wanted to support that
Hi, I was just using the example in here to setup the QSPI pins for UART use. However i could only get the TX side working. The RP2350 doesn't receive anything at all on the RX pin. I know the hardware connections are good because I use the UART bootloader to load the firmware onto the MCU.
has anyone actually tried the RX side?
There is a known bug on that example which prevents RX from working - fixed by https://github.com/raspberrypi/pico-examples/pull/697