diff --git a/README.md b/README.md index c764e756d..9d1a8b195 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Getting started -See [Getting Started with the Raspberry Pi Pico](https://rptl.io/pico-get-started) and the README in the [pico-sdk](https://github.com/raspberrypi/pico-sdk) for information +See [Getting started with Raspberry Pi Pico-series](https://rptl.io/pico-get-started) and the README in the [pico-sdk](https://github.com/raspberrypi/pico-sdk) for information on getting up and running. ##### Notes on different boards and platforms (RP2040 / RP2350) @@ -24,13 +24,13 @@ Information on which examples are not being built is displayed during the CMake ### First Examples -App| Description | Link to prebuilt UF2 ----|----------------------------------------------------------------------------|--- -[hello_serial](hello_world/serial) | The obligatory Hello World program for Pico (Output over serial version) | -[hello_usb](hello_world/usb) | The obligatory Hello World program for Pico (Output over USB version) | https://rptl.io/pico-hello-usb -[blink](blink) | Blink a LED on and off. Works on both boards with regular LEDs and boards like Pico W where the led is connected via the Wi-Fi chip | https://rptl.io/pico-blink -[blink_simple](blink_simple) | Blink a LED on and off. Does not work on boards like Pico W where the led is connected via the Wi-Fi chip. | https://rptl.io/pico-blink -[picow_blink](pico_w/wifi/blink) | Blinks the on-board LED on boards like Pico W where the led is connected via the Wi-Fi chip. | http://rptl.io/pico-w-blink +App| Description | Link to prebuilt UF2 +---|---|--- +[hello_serial](hello_world/serial) | The obligatory Hello World program for Pico (output over serial version). | +[hello_usb](hello_world/usb) | The obligatory Hello World program for Pico (output over USB version). | https://rptl.io/pico-hello-usb +[blink](blink) | Blink a LED on and off. Works on both boards with regular LEDs and boards like Pico W where the LED is connected via the Wi-Fi chip. | https://rptl.io/pico-blink +[blink_simple](blink_simple) | Blink a LED on and off. Does not work on boards like Pico W where the LED is connected via the Wi-Fi chip. | +[picow_blink](pico_w/wifi/blink) | Blinks the on-board LED on boards like Pico W where the LED is connected via the Wi-Fi chip. | http://rptl.io/pico-w-blink ### ADC @@ -48,8 +48,8 @@ App|Description App|Description ---|--- -[blink_any](binary_info/blink_any) | Uses `bi_ptr` variables to create a configurable blink binary - see the separate [README](binary_info/README.md) for more details -[hello_anything](binary_info/hello_anything) | Uses `bi_ptr` variables to create a configurable hello_world binary - see the separate [README](binary_info/README.md) for more details +[blink_any](binary_info/blink_any) | Uses `bi_ptr` variables to create a configurable blink binary - see the separate [README](binary_info/README.md) for more details. +[hello_anything](binary_info/hello_anything) | Uses `bi_ptr` variables to create a configurable hello_world binary - see the separate [README](binary_info/README.md) for more details. ### Bootloaders (RP235x Only) @@ -57,8 +57,8 @@ These examples all produce multiple UF2s - a bootloader UF2, and then a separate App|Description ---|--- -[enc_bootloader](bootloaders/encrypted) | A bootloader which decrypts binaries from flash into SRAM. See the separate [README](bootloaders/encrypted/README.md) for more information -[uart_boot](bootloaders/uart) | A bootloader which boots a separate RP2350 using the UART boot interface. See section 5.8 in the datasheet for more details, including the wiring requirements +[enc_bootloader](bootloaders/encrypted) | A bootloader which decrypts binaries from flash into SRAM. See the separate [README](bootloaders/encrypted/README.md) for more information. +[uart_boot](bootloaders/uart) | A bootloader which boots a separate RP2350 using the UART boot interface. See section 5.8 in the datasheet for more details, including the wiring requirements. ### Clocks @@ -73,7 +73,7 @@ App|Description App|Description ---|--- -[build_variants](cmake/build_variants) | Builds two version of the same app with different configurations +[build_variants](cmake/build_variants) | Builds two versions of the same app with different configurations. ### DCP (RP235x Only) @@ -101,7 +101,7 @@ App|Description App|Description ---|--- -[dvi_out_hstx_encoder](hstx/dvi_out_hstx_encoder) | Use the HSTX to output a DVI signal with 3:3:2 RGB +[dvi_out_hstx_encoder](hstx/dvi_out_hstx_encoder) | Use the HSTX to output a DVI signal with 3:3:2 RGB. ### Flash @@ -112,7 +112,7 @@ App|Description [program](flash/program) | Erase a flash sector, program one flash page, and read back the data. [xip_stream](flash/xip_stream) | Stream data using the XIP stream hardware, which allows data to be DMA'd in the background whilst executing code from flash. [ssi_dma](flash/ssi_dma) | DMA directly from the flash interface (continuous SCK clocking) for maximum bulk read performance. -[runtime_flash_permissions](flash/runtime_flash_permissions) | Demonstrates adding partitions at runtime to change the flash permissions +[runtime_flash_permissions](flash/runtime_flash_permissions) | Demonstrates adding partitions at runtime to change the flash permissions. [partition_info](flash/partition_info) | Extract and enumerate partition information (address ranges, permissions, IDs, and names) from the partition table. ### FreeRTOS @@ -121,9 +121,9 @@ These examples require you to set the `FREERTOS_KERNEL_PATH` to point to the Fre App|Description ---|--- -[hello_freertos_one_core](freertos/hello_freertos) | Demonstrates how run FreeRTOS and tasks on one core -[hello_freertos_two_cores](freertos/hello_freertos) | Demonstrates how run FreeRTOS and tasks on two cores. -[hello_freertos_static_allocation](freertos/hello_freertos) | Demonstrates how run FreeRTOS on two cores with static RAM allocation. +[hello_freertos_one_core](freertos/hello_freertos) | Demonstrates how to run FreeRTOS and tasks on one core. +[hello_freertos_two_cores](freertos/hello_freertos) | Demonstrates how to run FreeRTOS and tasks on two cores. +[hello_freertos_static_allocation](freertos/hello_freertos) | Demonstrates how to run FreeRTOS on two cores with static RAM allocation. ### GPIO @@ -149,15 +149,15 @@ App|Description [bmp280_i2c](i2c/bmp280_i2c) | Read and convert temperature and pressure data from a BMP280 sensor, attached to an I2C bus. [lcd_1602_i2c](i2c/lcd_1602_i2c) | Display some text on a generic 16x2 character LCD display, via I2C. [lis3dh_i2c](i2c/lis3dh_i2c) | Read acceleration and temperature value from a LIS3DH sensor via I2C -[mcp9808_i2c](i2c/mcp9808_i2c) | Read temperature, set limits and raise alerts when limits are surpassed. +[mcp9808_i2c](i2c/mcp9808_i2c) | Read temperature from a MCP9808 sensor, set limits and raise alerts when limits are surpassed. [mma8451_i2c](i2c/mma8451_i2c) | Read acceleration from a MMA8451 accelerometer and set range and precision for the data. [mpl3115a2_i2c](i2c/mpl3115a2_i2c) | Interface with an MPL3115A2 altimeter, exploring interrupts and advanced board features, via I2C. [mpu6050_i2c](i2c/mpu6050_i2c) | Read acceleration and angular rate values from a MPU6050 accelerometer/gyro, attached to an I2C bus. -[ssd1306_i2c](i2c/ssd1306_i2c) | Convert and display a bitmap on a 128x32 or 128x64 SSD1306-driven OLED display +[ssd1306_i2c](i2c/ssd1306_i2c) | Convert and display a bitmap on a 128x32 or 128x64 SSD1306-driven OLED display. [pa1010d_i2c](i2c/pa1010d_i2c) | Read GPS location data, parse and display data via I2C. -[pcf8523_i2c](i2c/pcf8523_i2c) | Read time and date values from a real time clock. Set current time and alarms on it. +[pcf8523_i2c](i2c/pcf8523_i2c) | Read time and date values from a PCF8523 real time clock. Set current time and alarms on it. [ht16k33_i2c](i2c/ht16k33_i2c) | Drive a 4 digit 14 segment LED with an HT16K33. -[slave_mem_i2c](i2c/slave_mem_i2c) | i2c slave example where the slave implements a 256 byte memory +[slave_mem_i2c](i2c/slave_mem_i2c) | i2c slave example where the slave implements a 256 byte memory. [slave_mem_i2c_burst](i2c/slave_mem_i2c) | i2c slave example where the slave implements a 256 byte memory. This version inefficiently writes each byte in a separate call to demonstrate read and write burst mode. ### Interpolator @@ -171,7 +171,7 @@ App|Description App|Description ---|--- [hello_multicore](multicore/hello_multicore) | Launch a function on the second core, printf some messages on each core, and pass data back and forth through the mailbox FIFOs. -[multicore_fifo_irqs](multicore/multicore_fifo_irqs) | On each core, register and interrupt handler for the mailbox FIFOs. Show how the interrupt fires when that core receives a message. +[multicore_fifo_irqs](multicore/multicore_fifo_irqs) | On each core, register an interrupt handler for the mailbox FIFOs. Show how the interrupt fires when that core receives a message. [multicore_runner](multicore/multicore_runner) | Set up the second core to accept, and run, any function pointer pushed into its mailbox FIFO. Push in a few pieces of code and get answers back. [multicore_doorbell](multicore/multicore_doorbell) | Claims two doorbells for signaling between the cores. Counts how many doorbell IRQs occur on the second core and uses doorbells to coordinate exit. @@ -185,7 +185,7 @@ App|Description App|Description ---|--- -[blinky](picoboard/blinky) | Blink "hello, world" in Morse code on Pico's LED +[blinky](picoboard/blinky) | Blink "hello, world" in Morse code on Pico's LED. [button](picoboard/button) | Use Pico's BOOTSEL button as a regular button input, by temporarily suspending flash access. ### Pico Networking @@ -196,8 +196,8 @@ App|Description ---|--- [picow_access_point](pico_w/wifi/access_point) | Starts a WiFi access point, and fields DHCP requests. [picow_blink](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip). -[picow_blink_slow_clock](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip) with a slower system clock to show how to reconfigure communication with the WiFi chip at run time under those circumstances -[picow_blink_fast_clock](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip) with a faster system clock to show how to reconfigure communication with the WiFi chip at build time under those circumstances +[picow_blink_slow_clock](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip) with a slower system clock to show how to reconfigure communication with the WiFi chip at run time under those circumstances. +[picow_blink_fast_clock](pico_w/wifi/blink) | Blinks the on-board LED (which is connected via the WiFi chip) with a faster system clock to show how to reconfigure communication with the WiFi chip at build time under those circumstances. [picow_iperf_server](pico_w/wifi/iperf) | Runs an "iperf" server for WiFi speed testing. [picow_ntp_client](pico_w/wifi/ntp_client) | Connects to an NTP server to fetch and display the current time. [picow_tcp_client](pico_w/wifi/tcp_client) | A simple TCP client. You can run [python_test_tcp_server.py](pico_w/wifi/python_test_tcp/python_test_tcp_server.py) for it to connect to. @@ -206,27 +206,27 @@ App|Description [picow_tls_verify](pico_w/wifi/tls_client) | Demonstrates how to make a HTTPS request using TLS with certificate verification. [picow_wifi_scan](pico_w/wifi/wifi_scan) | Scans for WiFi networks and prints the results. [picow_udp_beacon](pico_w/wifi/udp_beacon) | A simple UDP transmitter. -[picow_httpd](pico_w/wifi/httpd) | Runs a LWIP HTTP server test app -[picow_http_client](pico_w/wifi/http_client) | Demonstrates how to make http and https requests -[picow_http_client_verify](pico_w/wifi/http_client) | Demonstrates how to make a https request with server authentication -[picow_mqtt_client](pico_w/wifi/mqtt) | Demonstrates how to implement a MQTT client application -[picow_ota_update](pico_w/wifi/ota_update) | A minimal OTA update server (RP235x Only). See the separate [README](pico_w/wifi/ota_update/README.md) for more details. +[picow_httpd](pico_w/wifi/httpd) | Runs a LWIP HTTP server test app. +[picow_http_client](pico_w/wifi/http_client) | Demonstrates how to make http and https requests. +[picow_http_client_verify](pico_w/wifi/http_client) | Demonstrates how to make a https request with server authentication. +[picow_mqtt_client](pico_w/wifi/mqtt) | Demonstrates how to implement a MQTT client application. +[picow_ota_update](pico_w/wifi/ota_update) | A minimal OTA update server (RP235x only). See the separate [README](pico_w/wifi/ota_update/README.md) for more details. -#### FreeRTOS examples +#### FreeRTOS Networking These are examples of integrating Wi-Fi networking under FreeRTOS, and require you to set the `FREERTOS_KERNEL_PATH` to point to the FreeRTOS Kernel. See https://github.com/FreeRTOS/FreeRTOS-Kernel App|Description ---|--- -[picow_freertos_iperf_server_nosys](pico_w/wifi/freertos/iperf) | Runs an "iperf" server for WiFi speed testing under FreeRTOS in NO_SYS=1 mode. The LED is blinked in another task -[picow_freertos_iperf_server_sys](pico_w/wifi/freertos/iperf) | Runs an "iperf" server for WiFi speed testing under FreeRTOS in NO_SYS=0 (i.e. full FreeRTOS integration) mode. The LED is blinked in another task +[picow_freertos_iperf_server_nosys](pico_w/wifi/freertos/iperf) | Runs an "iperf" server for WiFi speed testing under FreeRTOS in NO_SYS=1 mode. The LED is blinked in another task. +[picow_freertos_iperf_server_sys](pico_w/wifi/freertos/iperf) | Runs an "iperf" server for WiFi speed testing under FreeRTOS in NO_SYS=0 (i.e. full FreeRTOS integration) mode. The LED is blinked in another task. [picow_freertos_ping_nosys](pico_w/wifi/freertos/ping) | Runs the lwip-contrib/apps/ping test app under FreeRTOS in NO_SYS=1 mode. [picow_freertos_ping_sys](pico_w/wifi/freertos/ping) | Runs the lwip-contrib/apps/ping test app under FreeRTOS in NO_SYS=0 (i.e. full FreeRTOS integration) mode. The test app uses the lwIP _socket_ API in this case. [picow_freertos_ntp_client_socket](pico_w/wifi/freertos/ntp_client_socket) | Connects to an NTP server using the LwIP Socket API with FreeRTOS in NO_SYS=0 (i.e. full FreeRTOS integration) mode. [pico_freertos_httpd_nosys](pico_w/wifi/freertos/httpd) | Runs a LWIP HTTP server test app under FreeRTOS in NO_SYS=1 mode. [pico_freertos_httpd_sys](pico_w/wifi/freertos/httpd) | Runs a LWIP HTTP server test app under FreeRTOS in NO_SYS=0 (i.e. full FreeRTOS integration) mode. -[picow_freertos_http_client_sys](pico_w/wifi/freertos/http_client) | Demonstrates how to make a https request in NO_SYS=0 (i.e. full FreeRTOS integration) +[picow_freertos_http_client_sys](pico_w/wifi/freertos/http_client) | Demonstrates how to make a https request in NO_SYS=0 (i.e. full FreeRTOS integration) mode. ### Pico Bluetooth @@ -249,7 +249,7 @@ App|Description [picow_bt_example_audio_duplex](https://github.com/bluekitchen/btstack/tree/master/example/audio_duplex.c) | Audio Driver - Forward Audio from Source to Sink. [picow_bt_example_avrcp_browsing_client](https://github.com/bluekitchen/btstack/tree/master/example/avrcp_browsing_client.c) | AVRCP Browsing - Browse Media Players and Media Information. [picow_bt_example_dut_mode_classic](https://github.com/bluekitchen/btstack/tree/master/example/dut_mode_classic.c) | Testing - Enable Device Under Test (DUT.c) Mode for Classic. -[picow_bt_example_gap_dedicated_bonding](https://github.com/bluekitchen/btstack/tree/master/example/gap_dedicated_bonding.c) | GAP bonding +[picow_bt_example_gap_dedicated_bonding](https://github.com/bluekitchen/btstack/tree/master/example/gap_dedicated_bonding.c) | GAP bonding. [picow_bt_example_gap_inquiry](https://github.com/bluekitchen/btstack/tree/master/example/gap_inquiry.c) | GAP Classic Inquiry. [picow_bt_example_gap_le_advertisements](https://github.com/bluekitchen/btstack/tree/master/example/gap_le_advertisements.c) | GAP LE Advertisements Scanner. [picow_bt_example_gap_link_keys](https://github.com/bluekitchen/btstack/tree/master/example/gap_link_keys.c) | GAP Link Key Management (Classic.c). @@ -291,20 +291,20 @@ App|Description [picow_bt_example_spp_streamer](https://github.com/bluekitchen/btstack/tree/master/example/spp_streamer.c) | Performance - Stream Data over SPP (Server.c). [picow_bt_example_ublox_spp_le_counter](https://github.com/bluekitchen/btstack/blob/master/example/ublox_spp_le_counter.c) | LE u-blox SPP-like Heartbeat Server. -Some Standalone Bluetooth examples (without all the common example build infrastructure) are also available: +Some standalone Bluetooth examples (without all the common example build infrastructure) are also available: App|Description ---|--- -[picow_ble_temp_sensor](pico_w/bt/standalone) | Reads from the on board temperature sensor and sends notifications via BLE -[picow_ble_temp_sensor_with_wifi](pico_w/bt/standalone) | Same as above but also connects to Wi-Fi and starts an "iperf" server -[picow_ble_temp_reader](pico_w/bt/standalone) | Connects to one of the above "sensors" and reads the temperature +[picow_ble_temp_sensor](pico_w/bt/standalone) | Reads from the on board temperature sensor and sends notifications via BLE. +[picow_ble_temp_sensor_with_wifi](pico_w/bt/standalone) | Same as above but also connects to Wi-Fi and starts an "iperf" server. +[picow_ble_temp_reader](pico_w/bt/standalone) | Connects to one of the above "sensors" and reads the temperature. ### PIO App|Description ---|--- [hello_pio](pio/hello_pio) | Absolutely minimal example showing how to control an LED by pushing values into a PIO FIFO. -[pio_apa102](pio/apa102) | Rainbow pattern on on a string of APA102 addressable RGB LEDs. +[pio_apa102](pio/apa102) | Rainbow pattern on a string of APA102 addressable RGB LEDs. [pio_clocked_input](pio/clocked_input) | Shift in serial data, sampling with an external clock. [pio_differential_manchester](pio/differential_manchester) | Send and receive differential Manchester-encoded serial (BMC). [pio_hub75](pio/hub75) | Display an image on a 128x64 HUB75 RGB LED matrix. @@ -316,17 +316,17 @@ App|Description [pio_blink](pio/pio_blink) | Set up some PIO state machines to blink LEDs at different frequencies, according to delay counts pushed into their FIFOs. [pio_pwm](pio/pwm) | Pulse width modulation on PIO. Use it to gradually fade the brightness of an LED. [pio_quadrature_encoder](pio/quadrature_encoder) | A quadrature encoder using PIO to maintain counts independent of the CPU. -[pio_quadrature_encoder_substep](pio/quadrature_encoder_substep) | High resolution speed measurement using a standard quadrature encoder -[pio_spi_flash](pio/spi) | Use PIO to erase, program and read an external SPI flash chip +[pio_quadrature_encoder_substep](pio/quadrature_encoder_substep) | High resolution speed measurement using a standard quadrature encoder. +[pio_spi_flash](pio/spi) | Use PIO to erase, program and read an external SPI flash chip. [pio_spi_loopback](pio/spi) | Use PIO to run a loopback test with all four CPHA/CPOL combinations. [pio_squarewave](pio/squarewave) | Drive a fast square wave onto a GPIO. This example accesses low-level PIO registers directly, instead of using the SDK functions. -[pio_squarewave_div_sync](pio/squarewave) | Generates a square wave on three GPIOs and synchronises the divider on all the state machines +[pio_squarewave_div_sync](pio/squarewave) | Generates a square wave on three GPIOs and synchronises the divider on all the state machines. [pio_st7789_lcd](pio/st7789_lcd) | Set up PIO for 62.5 Mbps serial output, and use this to display a spinning image on a ST7789 serial LCD. -[pio_uart_dma](pio/uart_dma) | Send and receive data from a UART implemented using the PIO and DMA +[pio_uart_dma](pio/uart_dma) | Send and receive data from a UART implemented using the PIO and DMA. [pio_uart_rx](pio/uart_rx) | Implement the receive component of a UART serial port. Attach it to the spare Arm UART to see it receive characters. [pio_uart_rx_intr](pio/uart_rx) | Implement the receive component of a UART serial port with an interrupt for received characters. Attach it to the spare Arm UART to see it receive characters. [pio_uart_tx](pio/uart_tx) | Implement the transmit component of a UART serial port, and print hello world. -[pio_ws2812](pio/ws2812) | Example of driving a string WS2812 addressable RGB LEDs. +[pio_ws2812](pio/ws2812) | Example of driving a string of WS2812 addressable RGB LEDs. [pio_ws2812_parallel](pio/ws2812) | Examples of driving multiple strings of WS2812 addressable RGB LEDs efficiently. [pio_addition](pio/addition) | Add two integers together using PIO. Only around 8 billion times slower than Cortex-M0+. @@ -344,7 +344,7 @@ App|Description ---|--- [hello_reset](reset/hello_reset) | Perform a hard reset on some peripherals, then bring them back up. -### RTC +### RTC (RP2040 Only) App|Description ---|--- @@ -356,30 +356,30 @@ App|Description App|Description ---|--- -[hello_sha256](sha/sha256) | Demonstrates how to use the pico_sha256 library to calculate a checksum using the hardware in rp2350 -[mbedtls_sha256](sha/mbedtls_sha256) | Demonstrates using the SHA-256 hardware acceleration in mbedtls +[hello_sha256](sha/sha256) | Demonstrates how to use the pico_sha256 library to calculate a checksum using the hardware in RP2350. +[mbedtls_sha256](sha/mbedtls_sha256) | Demonstrates using the SHA-256 hardware acceleration in MbedTLS. ### SPI App|Description ---|--- [bme280_spi](spi/bme280_spi) | Attach a BME280 temperature/humidity/pressure sensor via SPI. -[mpu9250_spi](spi/mpu9250_spi) | Attach a MPU9250 accelerometer/gyoscope via SPI. +[mpu9250_spi](spi/mpu9250_spi) | Attach a MPU9250 accelerometer/gyroscope via SPI. [spi_dma](spi/spi_dma) | Use DMA to transfer data both to and from the SPI simultaneously. The SPI is configured for loopback. [spi_flash](spi/spi_flash) | Erase, program and read a serial flash device attached to one of the SPI controllers. [spi_master_slave](spi/spi_master_slave) | Demonstrate SPI communication as master and slave. -[max7219_8x7seg_spi](spi/max7219_8x7seg_spi) | Attaching a Max7219 driving an 8 digit 7 segment display via SPI -[max7219_32x8_spi](spi/max7219_32x8_spi) | Attaching a Max7219 driving an 32x8 LED display via SPI +[max7219_8x7seg_spi](spi/max7219_8x7seg_spi) | Attaching a Max7219 driving an 8 digit 7 segment display via SPI. +[max7219_32x8_spi](spi/max7219_32x8_spi) | Attaching a Max7219 driving an 32x8 LED display via SPI. ### System App|Description ---|--- -[boot_info](system/boot_info) | Demonstrate how to read and interpret sys info boot info. +[boot_info](system/boot_info) | Demonstrate how to read and interpret sys info boot info (RP235x only). [hello_double_tap](system/hello_double_tap) | An LED blink with the `pico_bootsel_via_double_reset` library linked. This enters the USB bootloader when it detects the system being reset twice in quick succession, which is useful for boards with a reset button but no BOOTSEL button. [rand](system/rand) | Demonstrate how to use the pico random number functions. [narrow_io_write](system/narrow_io_write) | Demonstrate the effects of 8-bit and 16-bit writes on a 32-bit IO register. -[unique_board_id](system/unique_board_id) | Read the 64 bit unique ID from external flash, which serves as a unique identifier for the board. +[unique_board_id](system/unique_board_id) | Read the 64 bit unique ID from external flash (RP2040) or OTP (RP235x), which serves as a unique identifier for the board. ### Timer @@ -394,7 +394,7 @@ App|Description App|Description ---|--- [hello_uart](uart/hello_uart) | Print some text from one of the UART serial ports, without going through `stdio`. -[lcd_uart](uart/lcd_uart) | Display text and symbols on a 16x02 RGB LCD display via UART +[lcd_uart](uart/lcd_uart) | Display text and symbols on a 16x02 RGB LCD display via UART. [uart_advanced](uart/uart_advanced) | Use some other UART features like RX interrupts, hardware control flow, and data formats other than 8n1. ### Universal @@ -406,14 +406,14 @@ App|Description ---|--- [blink](universal/CMakeLists.txt#L126) | Same as the [blink](blink) example, but universal. [hello_universal](universal/hello_universal) | The obligatory Hello World program for Pico (USB and serial output). On RP2350 it will reboot to the other architecture after every 10 prints. -[nuke_universal](universal/CMakeLists.txt#L132) | Same as the [nuke](flash/nuke) example, but universal. On RP2350 runs as a packaged SRAM binary, so is written to flash and copied to SRAM by the bootloader +[nuke_universal](universal/CMakeLists.txt#L132) | Same as the [nuke](flash/nuke) example, but universal. On RP2350 runs as a packaged SRAM binary, so it is written to flash and copied to SRAM by the bootloader. ### USB Device #### TinyUSB Examples Most of the USB device examples come directly from the TinyUSB device examples directory [here](https://github.com/hathach/tinyusb/tree/master/examples/device). -Those that are supported on RP2040 devices are automatically included as part of the pico-examples +Those that are supported on RP2040 and RP2350 devices are automatically included as part of the pico-examples build as targets named `tinyusb_dev_`, e.g. https://github.com/hathach/tinyusb/tree/master/examples/device/hid_composite is built as `tinyusb_dev_hid_composite`. @@ -441,18 +441,18 @@ At the time of writing, these examples are available: Whilst these examples ably demonstrate how to use TinyUSB in device mode, their `CMakeLists.txt` is set up in a way tailored to how TinyUSB builds their examples within their source tree. -For a better example of how to configure `CMakeLists.txt` for using TinyUSB in device mode with the Raspberry Pi SDK +For a better example of how to configure `CMakeLists.txt` for using TinyUSB in device mode with the Raspberry Pi Pico SDK see below: #### SDK build example App|Description ---|--- -[dev_hid_composite](usb/device/dev_hid_composite) | A copy of the TinyUSB device example with the same name, but with a CMakeLists.txt which demonstrates how to add a dependency on the TinyUSB device libraries with the Raspberry Pi Pico SDK +[dev_hid_composite](usb/device/dev_hid_composite) | A copy of the TinyUSB device example with the same name, but with a CMakeLists.txt which demonstrates how to add a dependency on the TinyUSB device libraries with the Raspberry Pi Pico SDK. #### Low Level example App|Description ---|--- -[dev_lowlevel](usb/device/dev_lowlevel) | A USB Bulk loopback implemented with direct access to the USB hardware (no TinyUSB) +[dev_lowlevel](usb/device/dev_lowlevel) | A USB Bulk loopback implemented with direct access to the USB hardware (no TinyUSB). #### Custom CDC with SDK stdio @@ -465,7 +465,7 @@ App|Description ### USB Host All the USB host examples come directly from the TinyUSB host examples directory [here](https://github.com/hathach/tinyusb/tree/master/examples/host). -Those that are supported on RP2040 devices are automatically included as part of the pico-examples +Those that are supported on RP2040 and RP2350 devices are automatically included as part of the pico-examples build as targets named `tinyusb_host_`, e.g. https://github.com/hathach/tinyusb/tree/master/examples/host/cdc_msc_hid is built as `tinyusb_host_cdc_msc_hid`. @@ -475,12 +475,12 @@ At the time of writing, there is only one host example available: ### USB Dual Mode -USB Dual Mode uses PIO as a USB host controller and the RP2040 USB device controller as a device controller. All the USB dual examples come directly from the TinyUSB dual examples directory [here](https://github.com/hathach/tinyusb/tree/master/examples/dual). -Those that are supported on RP2040 devices are automatically included as part of the pico-examples +USB Dual Mode uses PIO as a USB host controller and the RP2040/RP2350 USB controller as a device controller. All the USB dual examples come directly from the TinyUSB dual examples directory [here](https://github.com/hathach/tinyusb/tree/master/examples/dual). +Those that are supported on RP2040 and RP2350 devices are automatically included as part of the pico-examples build as targets named `tinyusb_dual_`, e.g. https://github.com/hathach/tinyusb/tree/master/examples/dual/host_hid_to_device_cdc is built as `tinyusb_dual_host_hid_to_device_cdc`. -At the time of writing, there is only one dual example available: +At the time of writing, there is only one dual mode example available: - tinyusb_dual_host_hid_to_device_cdc