* separate SpiDmaTransfer impl for rx and tx * format code * update spi_slave_dma example * update CHANGELOG * fix changelog entry * add dma_read and dma_write examples for all supported chips
16 KiB
16 KiB
Changelog
All notable changes to this project will be documented in this file.
Please note that only changes to the esp-hal-common package are tracked in this CHANGELOG.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- ESP32-C6: LP core clock is configurable (#907)
- Derive
CloneandCopyforEspTwaiFrame(#914) - A way to configure inverted pins (#912)
- Added API to check a GPIO-pin's interrupt status bit (#929)
- A
embedded_io_async::Readimplementation forUsbSerialJtag(#889) RtcClock::get_xtal_freq,RtcClock::get_slow_freq(#957)- Added Rx Timeout functionality to async Uart (#911)
- RISC-V: Thread-mode and interrupt-mode executors,
#[main]macro (#947) - A macro to make it easier to create DMA buffers and descriptors (#935)
- I2C timeout is configurable (#1011)
- ESP32-C6/ESP32-H2:
flip-linkfeature gives zero-cost stack overflow protection (#1008)
Changed
- Improve DMA documentation & clean up module (#915)
- Only allow a single version of
esp-hal-commonto be present in an application (#934) - C3, C6 and H2 can now use the
zero-rtc-bssfeature to enableesp-hal-common/rv-zero-rtc-bss(#867) - Reuse
ieee802154_clock_enable/disable()functions for BLE and renameble_ieee802154_clock_enable()(#953) - The
embedded-iotrait implementations are now gated behind theembedded-iofeature (#964) - Simplifed RMT channels and channel creators (#958)
- Reworked construction of I2S driver instances (#983)
- S2 / S3: Don't require GPIO 18 to create a USB peripheral driver instance (#990)
- Updated to latest release candidate (
1.0.0-rc.2) forembedded-hal{-async,-nb}(#994) - Explicit panic when hitting the
DefaultHandler(#1005)
Fixed
- ESP32-C2/C3 examples: fix build error (#899)
- ESP32-S3: Fix GPIO interrupt handler crashing when using GPIO48. (#898)
- Fixed short wait times in embassy causing hangs (#906)
- Make sure to clear LP/RTC RAM before loading code (#916)
- Async RMT channels can be used concurrently (#925)
- Xtensa: Allow using
embassy-executor's thread-mode executor if neitherembassy-executor-thread, norembassy-executor-interruptis enabled. (#937) - Uart Async: Improve interrupt handling and irq <--> future communication (#977)
- RISC-V: Fix stack allocation (#988)
- ESP32-C6: Fix used RAM (#997)
- ESP32-H2: Fix used RAM (#1003)
- Fix SPI slave DMA dma_read and dma_write (#1013)
Removed
- Removed the
mcu-bootfeature fromesp32c3-hal(#938) - Removed SpiBusController and SpiBusDevice in favour of embedded-hal-bus and embassy-embedded-hal implementataions. (#978)
Breaking
- Direct boot support has been removed (#903).
Spi::new/Spi::new_half_duplextakes no gpio pin now, instead you need to callwith_pinsto setup those (#901).- ESP32C2, ESP32C3, ESP32S2: atomic emulation trap has been removed. When upgrading you must either remove these lines from your
.cargo/config.toml. Usage ofcore::sync::atomic::*in dependent crates should be replaced with portable-atomic. (#904) (#985) - RSA driver now takes u32 words instead of u8 bytes. The expected slice length is now 4 times shorter. (#981)
0.13.1 - 2023-11-02
Fixed
- ESP32-C3: Make sure BLE and WiFi are not powered down when esp-wifi needs them (#891)
- ESP32-C6/H2: Fix setting UART baud rate (#893)
0.13.0 - 2023-10-31
Added
- Implement SetFrequencyCycle and PwmPin from embedded_hal for PwmPin of MCPWM. (#880)
- Added
embassy-time-systickto ESP32-S2 (#827) - Implement enabling/disabling BLE clock on ESP32-C6 (#784)
- Async support for RMT (#787)
- Implement
defmt::Formatfor more types (#786) - Add new_no_miso to Spi FullDuplexMode (#794)
- Add UART support for splitting into TX and RX (#754)
- Async support for I2S (#801)
- Async support for PARL_IO (#807)
- ETM driver, GPIO ETM (#819)
- (G)DMA AES support (#821)
- SYSTIMER ETM functionality (#828)
- Adding async support for RSA peripheral(doesn't work properly for
esp32chip - issue will be created)(#790) - Added sleep support for ESP32-C3 with timer and GPIO wakeups (#795)
- Support for ULP-RISCV including Delay and GPIO (#840, #845)
- Add bare-bones SPI slave support, DMA only (#580, #843)
- Embassy
#[main]convenience macro (#841) - Add a
defmtfeature to theesp-hal-smartledpackage (#846) - Support 16MB octal PS-RAM for ESP32-S3 (#858)
- RISCV TRACE Encoder driver for ESP32-C6 / ESP32-H2 (#864)
embedded_hal1InputPinandembedded_hal_asyncWaitimpls for open drain outputs (#905)
Changed
- Bumped MSRV to 1.67 (#798)
- Optimised multi-core critical section implementation (#797)
- Changed linear- and curve-calibrated ADC to provide readings in mV (#836)
Fixed
- S3: Allow powering down RC_FAST_CLK (#796)
- UART/ESP32: fix calculating FIFO counter with
get_rx_fifo_count()(#804) - Xtensa targets: Use ESP32Reset - not Reset (#823)
- Examples should now work with the
defmtfeature (#810) - Fixed a race condition causing SpiDma to stop working unexpectedly (#869)
- Fixed async uart serial, and updated the embassy_serial examples (#871).
- Fix ESP32-S3 direct-boot (#873)
- Fix ESP32-C6 ADC (#876)
- Fix ADC Calibration not being used on ESP32-S2 and ESP32-S3 (#1000)
Removed
Pin::is_pcore_interrupt_set(#793)Pin::is_pcore_non_maskable_interrupt_set(#793)Pin::is_acore_interrupt_set(#793)Pin::is_acore_non_maskable_interrupt_set(#793)Pin::enable_hold(#793)- Removed the generic return type for ADC reads (#792)
Breaking
Uart::newnow takes the&Clocksstruct to ensure baudrate is correct for CPU/APB speed. (#808)Uart::new_with_configtakes anConfiginstead ofOption<Config>. (#808)Alarm::set_periodtakes a period (duration) instead of a frequency (#812)Alarm::interrupt_clearis nowAlarm::clear_interruptto be consistent (#812)- The
PeripheralClockControlstruct is no longer public, drivers no longer take this as a parameter (#817) - Unify the system peripheral,
SYSTEM,DPORTandPCRare now all exposed asSYSTEM(#832). - Unified the ESP32's and ESP32-C2's xtal frequency features (#831)
- Replace any underscores in feature names with dashes (#833)
- The
spiandspi_slavemodules have been refactored into thespi,spi::master, andspi::slavemodules (#843) - The
WithDmaSpi2/WithDmaSpi3structs are no longer generic around the inner peripheral type (#853) - The
SarAdcExt/SensExttraits are now collectively namedAnalogExtinstead (#857) - Replace the
radiomodule with peripheral singleton structs (#852) - The SPI traits are no longer re-exported in the main prelude, but from preludes in
spi::master/spi::slaveinstead (#860) - The
embedded-hal-1andembedded-hal-asynctraits are no longer re-exported in the prelude (#860)
0.12.0 - 2023-09-05
Added
- Implement RTCIO pullup, pulldown and hold control for Xtensa MCUs (#684)
- S3: Implement RTCIO wakeup source (#690)
- Add PARL_IO driver for ESP32-C6 / ESP32-H2 (#733, #760)
- Implement
ufmt_write::uWritetrait for USB Serial JTAG (#751) - Add HMAC peripheral support (#755)
- Add multicore-aware embassy executor for Xtensa MCUs (#723, #756).
- Add interrupt-executor for Xtensa MCUs (#723, #756).
- Add missing
Into<Gpio<Analog, GPIONUN>>conversion (#764) - Updated
clockmodule documentation (#774) - Add
logfeature to enable log output (#773) - Add
defmtfeature to enable log output (#773) - A new macro to load LP core code on ESP32-C6 (#779)
- Add `ECC`` peripheral driver (#785)
- Initial LLD support for Xtensa chips (#861).
Changed
- Update the
embedded-hal-*packages to1.0.0-rc.1and implement traits fromembedded-ioandembedded-io-async(#747) - Moved AlignmentHelper to its own module (#753)
- Disable all watchdog timers by default at startup (#763)
logcrate is now opt-in (#773)
Fixed
- Fix
psramavailability lookup inesp-hal-commonbuild script (#718) - Fix wrong
dram_seglength inesp32s2-hallinker script (#732) - Fix setting alarm when a timer group is used as the alarm source. (#730)
- Fix
Instant::now()not counting in some cases when using TIMG0 as the timebase (#737) - Fix number of ADC attenuations for ESP32-C6 (#771)
- Fix SHA registers access (#805)
Breaking
CpuControl::start_app_core()now takes anFnOnceclosure (#739)
0.11.0 - 2023-08-10
Added
- Add initial LP-IO support for ESP32-C6 (#639)
- Implement sleep with some wakeup methods for
esp32(#574) - Add a new RMT driver (#653, #667, #695)
- Implemented calibrated ADC API for ESP32-S3 (#641)
- Add MCPWM DeadTime configuration (#406)
- Implement sleep with some wakeup methods for
esp32-s3(#660, #689, #696) - Add feature enabling directly hooking the interrupt vector table (#621)
- Add
ClockControl::maxhelper for all chips (#701) - Added module-level documentation for all peripherals (#680)
- Implement sleep with some wakeup methods for
esp32-s3(#660) - Add
FlashSafeDmawrapper for eh traits which ensure correct DMA transfer from source data in flash (ROM) (#678)
Changed
- Update
embedded-hal-*alpha packages to their latest versions (#640) - Implement the
CloneandCopytraits for theRngdriver (#650) - Use all remaining memory as core-0's stack (#716)
Fixed
- Fixed Async Uart
readwhenset_at_cmdis not used (#652) - USB device support is working again (#656)
- Add missing interrupt status read for esp32s3, which fixes USB-SERIAL-JTAG interrupts (#664)
- GPIO interrupt status bits are now properly cleared (#670)
- Increase frequency resolution in
set_periodic(#686) - Fixed ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3 radio clock gating (#679, #681)
- Partially fix ESP32 radio clocks (#709)
- Fixed "ESP32/ESP32-S2 RMT transmission with with data.len() > RMT_CHANNEL_RAM_SIZE results in TransmissionError" #707 (#710)
Removed
- Remove the
allow-opt-level-zfeature fromesp32c3-hal(#654) - Remove the old
pulse_controldriver (#694)
Breaking
DmaTransfer::waitandI2sReadDmaTransfer::wait_receivenow returnResult(#665)gpio::Pinis now object-safe (#687)
0.10.0 - 2023-06-04
Added
- Add
WithDmaSpi3to prelude for ESP32S3 (#623) - Add bare-bones PSRAM support for ESP32 (#506)
- Add initial support for the ESP32-H2 (#513, #526, #527, #528, #530, #538, #544, #548, #551, #556, #560, #566, #549, #564, #569, #576, #577, #589, #591, #597)
- Add bare-bones PSRAM support for ESP32-S3 (#517)
- Add async support to the I2C driver (#519)
- Implement Copy and Eq for EspTwaiError (#540)
- Add LEDC hardware fade support (#475)
- Added support for multicore async GPIO (#542)
- Add a fn to poll DMA transfers (#559)
- Add unified field-based efuse access (#567)
- Move
esp-riscv-rtinto esp-hal (#578) - Add CRC functions from ESP ROM (#587)
- Add a
debugfeature to enable the PACs'impl-register-debugfeature (#596) - Add initial support for
I2Sin ESP32-H2 (#597) - Add octal PSRAM support for ESP32-S3 (#610)
- Add MD5 functions from ESP ROM (#618)
- Add embassy async
readsupport foruart(#620) - Add bare-bones support to run code on ULP-RISCV / LP core (#631)
- Add ADC calibration implementation for a riscv chips (#555)
- Add
asyncimplementation forUSB Serial/JTAG(#632)
Changed
- Simplify the
Delaydriver, deriveCloneandCopy(#568) - DMA types can no longer be constructed by the user (#625)
- Move core interrupt handling from Flash to RAM for RISC-V chips (ESP32-H2, ESP32-C2, ESP32-C3, ESP32-C6) (#541)
- Change LED pin to GPIO2 in ESP32 blinky example (#581)
- Update ESP32-H2 and ESP32-C6 clocks and remove
i2c_clockfor all chips but ESP32 (#592) - Use both timers in
TIMG0for embassy time driver when able (#609) - Re-work
RadioExtimplementations, add support for ESP32-H2 (#627) - Improve examples documentation (#533)
- esp32h2-hal: added README (#585)
- Update
esp-hal-procmacrospackage dependencies and features (#628)
Fixed
- Corrected the expected DMA descriptor counts (#622, #625)
- DMA is supported for SPI3 on ESP32-S3 (#507)
change_bus_frequencyis now available onSpiDma(#529)- Fixed a bug where a GPIO interrupt could erroneously fire again causing the next
awaiton that pin to instantly returnPoll::Ok(#537) - Set
vecbaseon core 1 (ESP32, ESP32-S3) (#536) - ESP32-S3: Move PSRAM related function to RAM (#546)
- ADC driver will now apply attenuation values to the correct ADC's channels. (#554)
- Sometimes half-duplex non-DMA SPI reads were reading garbage in non-release mode (#552)
- ESP32-C3: Fix GPIO5 ADC channel id (#562)
- ESP32-H2: Fix direct-boot feature (#570)
- Fix Async GPIO not disabling interupts on chips with multiple banks (#572)
- ESP32-C6: Support FOSC CLK calibration for ECO1+ chip revisions (#593)
- Fixed CI by pinning the log crate to 0.4.18 (#600)
- ESP32-S3: Fix calculation of PSRAM start address (#601)
- Fixed wrong variable access (FOSC CLK calibration for ESP32-C6 #593)
- Fixed trap location in ram (#605)
- Fix rom::crc docs (#611)
- Fixed a possible overlap of
.dataand.rwtext(#616) - Avoid SDA/SCL being low while configuring pins for I2C (#619)
Breaking
- Simplified user-facing SpiDma and I2s types (#626)
- Significantly simplified user-facing GPIO pin types. (#553)
- No longer re-export the
socmodule and the contents of theinterruptmodule at the package level (#607)
0.9.0 - 2023-05-02
Added
- Add bare-bones PSRAM support for ESP32-S2 (#493)
- Add
DEBUG_ASSISTfunctionality (#484) - Add RSA peripheral support (#467)
- Add PeripheralClockControl argument to
timg,wdt,sha,usb-serial-jtaganduartconstructors (#463) - Added API to raise and reset software interrupts (#426)
- Implement
embedded_hal_nb::serial::*traits forUsbSerialJtag(#498)
Fixed
- Fix
get_wakeup_causecomparison error (#472) - Use 192 as mclk_multiple for 24-bit I2S (#471)
- Fix
CpuControl::start_app_coresignature (#466) - Move
rwtextafter other RAM data sections (#464) - ESP32-C3: Disable
usb_pad_enablewhen setting GPIO18/19 to input/output (#461) - Fix 802.15.4 clock enabling (ESP32-C6) (#458)
- ESP32-S3: Disable usb_pad_enable when setting GPIO19/20 to input/output (#645)
Changed
- Update
embedded-hal-asyncandembassy-*dependencies (#488) - Update to
embedded-hal@1.0.0-alpha.10andembedded-hal-nb@1.0.0-alpha.2(#487) - Let users configure the LEDC output pin as open-drain (#474)
- Use bitflags to decode wakeup cause (#473)
- Minor linker script additions (#470)
- Minor documentation improvements (#460)
Removed
- Remove unnecessary generic from
UsbSerialJtagdriver (#492) - Remove
#[doc(inline)]from esp-hal-common re-exports (#490)