* Add PIO-based SoftwareSPI enabling SPI on any pins
The Raspberry Pi team has a working PIO-based SPI interface. Wrap it
to work like a hardware SPI interface, allowing SPI on any pin
combination.
Tested reading and writing an SD card using unmodified SD library.
* Add W5500 example
Good for testing, shows non-contiguous pin outs.
* Added buffer read to `AudioBufferManager` and `I2S`. Example and documentation included.
* Update type of words to unsigned in example.
* Improve buffered loopback example.
* Remove const from read buffer.
* Don't set SDFAT_FILE_TYPE, default is OK
Fixes#2772
No need to set SDFAT_FILE_TYPE=3 as that is the defaulr value with upstream
SdFat. Remove it from platform.txt and platform.io build.
* Codespell got all techy
* Replace ESP8266SdFat w/SdFat 2.3.0, add SDIO and ExFAT support
Remove ESP8266SdFat fork and replaces with upstream SdFat to simplify
maintenance.
This 2.3.0 version adds SDIO support and enables exFAT support.
Also upgraded FAT filename support to 256 chars, identical to LittleFS.
* Add SDIO support to SD and SDFS, documentation, and examples
* Update SD examples to all support SPI0, SPI1, or SDIO
* Remove Pico-SDK C++ exception-override new/delete
We support exceptions on and off, but the cxx_options file in the
SDK implemented a single override to new/delete.
Remove it so we will use GCC's build-in operator new/delete
which will be correct for either option (2 different libstdc++
versions are shipped as part of the toolchain).
* Remove duplicated SDK files
The SDK will link in the same compilation unit in the LWIP builds.
Remove them to shrink the repo size by ~28MB.
When multiple inputs were active, the frequency was being scaled two
times resulting in incorrect sampling speed. Correct to only scale
the calculation and not the stored value (which is used in `begin`).
Fixes#2754
Pico-SDK changed the output extension of their compilation from "x.c.obj"
to "x.c.o" meaning the removed Newlib and STDIO SDK wrappers were still
being linked in certain situations. Update make-libpico Cmakefile to
remove the new names.
Fixes debug `printf` output.
The memcpy-version of the ABM::write updated the destination and count
but neglected to move the source forward. If a block write crossed a
frame boundary then the 2nd frame would repeat the data from the first
half of the buffer.
Fix by incrementing the source pointer by the same amount as was written.
Calculating the DMA clock divider for PWMAudio can take a very long time
because there are 65K floating point divisions required. But most audio
will be one of a dozen sample rates, so it is possible to precalculate
the rates on the host and use a small lookup table to avoid any math at
all. Removes occasional scratching in PWMAudio when the BackgroundAudio
library changes sample rates.
Optimize AudioRequestBuffer writing when large blocks are available (i.e.
I2S writes of full MP3 or AAC frames in BackgroundAudio). Update I2S to use
the new call. Reduces 1152 calls to arb::write() to a single call/return
and optimized memcpy in that case.
Leave that to the main app instead, so we don't reset peripherals twice.
* ota: fix copy error for riscv headers
* ota: initialize bootrom bit ops and add explanation
* my attempt at adding plasma_2040 support.. cant seem to get it working to test yet though?
* Tracked+replaced files, this now works it seems!
* correct serial count
* Update pins_arduino.h
* Rudimentary Pimoroni Plasma2350 support.
* include correct files + changes needed for proper support.
also!! fixes pin definitions for the i2c on Pimoroni Plasma 2350 (tested, working) and (presumably, untested) on the Plasma RP2040 too by swapping the i2c numbers. i2c now works!!
* use correct USB PID for Plasma 2350
The audio output objects all have the same general necessary configuration
calls. Abstract them out to a generic AudioOutputBase interface class that
they will inherit from. Simplifies letting applications use different
output channels.
Should be backwards compatible with existing code.
Semihosting is handy for debugging, so allow the core to use `SerialSemi` as the
::printf port. Add menu item to the IDE to allow selection.
Add RISC-V implementation of semihost call
* Add MDNS.addServiceTxt() to SimpleMDNS
Fixes#2678
A simple mapping allows for basic service text addition even when using
SimpleMDNS and ArduinoOTA.
* Protection against duplicate services addition